diff options
author | Stef Walter <stef@memberwebs.com> | 2004-08-02 23:51:53 +0000 |
---|---|---|
committer | Stef Walter <stef@memberwebs.com> | 2004-08-02 23:51:53 +0000 |
commit | 71c0ffd3806f74b85aff561733e4287e87a22c24 (patch) | |
tree | 632206004c589f6a56a6fa74bf9f59cda767b3cd /src | |
parent | cede6399f63a6dc8ab2ad195b24848b7733bf8e1 (diff) |
- Fixed endless loop that occurred on failure to connect out [Jo��o Carlos Mendes Lu��s]
- Added option for leaving all files in temp directory (debugging purposes)
- Prints version number when run with -v
Diffstat (limited to 'src')
-rw-r--r-- | src/clamsmtpd.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/clamsmtpd.c b/src/clamsmtpd.c index 600f31c..e529dde 100644 --- a/src/clamsmtpd.c +++ b/src/clamsmtpd.c @@ -146,6 +146,7 @@ const char* g_directory = _PATH_TMP; /* The directory for temp files */ unsigned int g_unique_id = 0x00100000; /* For connection ids */ int g_bounce = 0; /* Send back a reject line */ int g_quarantine = 0; /* Leave virus files in temp dir */ +int g_debugfiles = 0; /* Leave all files in temp dir */ /* For main loop and signal handlers */ int g_quit = 0; @@ -199,7 +200,7 @@ int main(int argc, char* argv[]) char* t; /* Parse the arguments nicely */ - while((ch = getopt(argc, argv, "bc:d:D:h:l:m:p:qt:")) != -1) + while((ch = getopt(argc, argv, "bc:d:D:h:l:m:p:qt:vX")) != -1) { switch(ch) { @@ -264,6 +265,17 @@ int main(int argc, char* argv[]) g_quarantine = 1; break; + /* Print version number */ + case 'v': + printf("clamsmtpd (version %s)\n", VERSION); + exit(0); + break; + + /* Leave all files in the tmp directory */ + case 'X': + g_debugfiles = 1; + break; + /* Usage information */ case '?': default: @@ -359,8 +371,9 @@ static void on_quit(int signal) static int usage() { - fprintf(stderr, "clamsmtpd [-bq] [-c clamaddr] [-d debuglevel] [-D tmpdir] [-h header] " + fprintf(stderr, "usage: clamsmtpd [-bq] [-c clamaddr] [-d debuglevel] [-D tmpdir] [-h header] " "[-l listenaddr] [-m maxconn] [-p pidfile] [-t timeout] serveraddr\n"); + fprintf(stderr, " clamsmtpd -v\n"); exit(2); } @@ -901,7 +914,7 @@ static int avcheck_data(clamsmtp_context_t* ctx, char* logline) }; cleanup: - if(havefile) + if(havefile && !g_debugfiles) { messagex(ctx, LOG_DEBUG, "deleting temporary file: %s", buf); unlink(buf); @@ -1332,7 +1345,7 @@ cleanup: close(sock); message(ctx, LOG_ERR, "couldn't connect to: %s", addrname); - RETURN(-1); + return -1; } ASSERT(sock != -1); |