--- src/client.c 2006-05-30 11:03:51.000000000 -0400 +++ src/client.c.new 2006-11-02 15:32:34.000000000 -0500 @@ -56,6 +56,7 @@ #endif #include #include +#include #include "client.h" #include "dspam.h" @@ -819,6 +820,8 @@ code = client_getcode(&TTX, err, sizeof(err)); if (code < 200 || code >= 300) { LOG(LOG_ERR, ERR_CLIENT_RESPONSE, code, "message data", err); + if (code >= 400 && code < 500) + exitcode = EX_TEMPFAIL; if (code >= 500) exitcode = EINVAL; chomp(err); @@ -835,6 +838,9 @@ QUIT: send_socket(&TTX, "QUIT"); client_getcode(&TTX, err, sizeof(err)); + buffer_destroy(TTX.packet_buffer); + close(TTX.sockfd); + return exitcode; BAIL: LOG(LOG_ERR, ERR_CLIENT_DELIVERY_FAILED);