You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by si...@apache.org on 2005/10/22 11:51:37 UTC
svn commit: r327648 - in /spamassassin/trunk/spamc: libspamc.c libspamc.h
spamc.c
Author: sidney
Date: Sat Oct 22 02:51:31 2005
New Revision: 327648
URL: http://svn.apache.org/viewcvs?rev=327648&view=rev
Log:
Bug 4639. Add -K option to spamc to ping spamd
Modified:
spamassassin/trunk/spamc/libspamc.c
spamassassin/trunk/spamc/libspamc.h
spamassassin/trunk/spamc/spamc.c
Modified: spamassassin/trunk/spamc/libspamc.c
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/spamc/libspamc.c?rev=327648&r1=327647&r2=327648&view=diff
==============================================================================
--- spamassassin/trunk/spamc/libspamc.c (original)
+++ spamassassin/trunk/spamc/libspamc.c Sat Oct 22 02:51:31 2005
@@ -600,6 +600,11 @@
}
m->priv->flags = flags;
+ if (flags & SPAMC_PING) {
+ _clear_message(m);
+ return EX_OK;
+ }
+
switch (flags & SPAMC_MODE_MASK) {
case SPAMC_RAW_MODE:
return _message_read_raw(fd, m);
@@ -623,7 +628,7 @@
assert(m != NULL);
- if (m->priv->flags & SPAMC_CHECK_ONLY) {
+ if (m->priv->flags & (SPAMC_CHECK_ONLY|SPAMC_PING)) {
if (m->is_spam == EX_ISSPAM || m->is_spam == EX_NOTSPAM) {
return full_write(fd, 1, m->out, m->out_len);
@@ -924,6 +929,8 @@
strcpy(buf, "REPORT ");
else if (flags & SPAMC_SYMBOLS)
strcpy(buf, "SYMBOLS ");
+ else if (flags & SPAMC_PING)
+ strcpy(buf, "PING ");
else
strcpy(buf, "PROCESS ");
@@ -937,21 +944,23 @@
strcat(buf, "\r\n");
len = strlen(buf);
- if (username != NULL) {
+ if (!(flags & SPAMC_PING)) {
+ if (username != NULL) {
if (strlen(username) + 8 >= (bufsiz - len)) {
- _use_msg_for_out(m);
- return EX_OSERR;
+ _use_msg_for_out(m);
+ return EX_OSERR;
}
strcpy(buf + len, "User: ");
strcat(buf + len, username);
strcat(buf + len, "\r\n");
len += strlen(buf + len);
- }
- if ((m->msg_len > 9999999) || ((len + 27) >= (bufsiz - len))) {
+ }
+ if ((m->msg_len > 9999999) || ((len + 27) >= (bufsiz - len))) {
_use_msg_for_out(m);
return EX_OSERR;
+ }
+ len += sprintf(buf + len, "Content-length: %d\r\n\r\n", m->msg_len);
}
- len += sprintf(buf + len, "Content-length: %d\r\n\r\n", m->msg_len);
libspamc_timeout = m->timeout;
@@ -1006,6 +1015,14 @@
versbuf);
failureval = EX_PROTOCOL;
goto failure;
+ }
+
+ if (flags & SPAMC_PING) {
+ closesocket(sock);
+ sock = -1;
+ m->out_len = sprintf(m->out, "SPAMD/%s %d\n", versbuf, response);
+ m->is_spam = EX_NOTSPAM;
+ return EX_OK;
}
m->score = 0;
Modified: spamassassin/trunk/spamc/libspamc.h
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/spamc/libspamc.h?rev=327648&r1=327647&r2=327648&view=diff
==============================================================================
--- spamassassin/trunk/spamc/libspamc.h (original)
+++ spamassassin/trunk/spamc/libspamc.h Sat Oct 22 02:51:31 2005
@@ -103,6 +103,9 @@
/* May 5, 2005 NP: added list reporting support */
#define SPAMC_REPORT_MSG (1<<20)
+/* Oct 21, 2005 sidney: added ping test */
+#define SPAMC_PING (1<<19)
+
#define SPAMC_MESSAGE_CLASS_SPAM 1
#define SPAMC_MESSAGE_CLASS_HAM 2
Modified: spamassassin/trunk/spamc/spamc.c
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/spamc/spamc.c?rev=327648&r1=327647&r2=327648&view=diff
==============================================================================
--- spamassassin/trunk/spamc/spamc.c (original)
+++ spamassassin/trunk/spamc/spamc.c Sat Oct 22 02:51:31 2005
@@ -180,6 +180,7 @@
#endif
usg(" -h Print this help message and exit.\n");
usg(" -V Print spamc version and exit.\n");
+ usg(" -K Keepalive check of spamd.\n");
usg(" -f (Now default, ignored.)\n");
usg("\n");
}
@@ -197,9 +198,9 @@
struct transport *ptrn)
{
#ifndef _WIN32
- const char *opts = "-BcrRd:e:fyp:t:s:u:L:C:xSHU:ElhVF:";
+ const char *opts = "-BcrRd:e:fyp:t:s:u:L:C:xSHU:ElhVKF:";
#else
- const char *opts = "-BcrRd:fyp:t:s:u:L:C:xSHElhVF:";
+ const char *opts = "-BcrRd:fyp:t:s:u:L:C:xSHElhVKF:";
#endif
int opt;
int ret = EX_OK;
@@ -250,6 +251,11 @@
/* obsolete, backwards compat */
break;
}
+ case 'K':
+ {
+ flags |= SPAMC_PING;
+ break;
+ }
case 'l':
{
flags |= SPAMC_LOG_TO_STDERR;
@@ -382,6 +388,10 @@
libspamc_log(flags, LOG_ERR, "Learning excludes check only");
ret = EX_USAGE;
}
+ if (flags & SPAMC_PING) {
+ libspamc_log(flags, LOG_ERR, "Learning excludes ping");
+ ret = EX_USAGE;
+ }
if (flags & SPAMC_REPORT_IFSPAM) {
libspamc_log(flags, LOG_ERR, "Learning excludes report if spam");
ret = EX_USAGE;
@@ -825,13 +835,12 @@
message_cleanup(&m);
ret = result;
}
- else if (flags & SPAMC_CHECK_ONLY || flags & SPAMC_REPORT
- || flags & SPAMC_REPORT_IFSPAM) {
+ else if (flags & (SPAMC_CHECK_ONLY | SPAMC_REPORT | SPAMC_REPORT_IFSPAM)) {
full_write(out_fd, 1, "0/0\n", 4);
message_cleanup(&m);
ret = EX_NOTSPAM;
}
- else if (flags & SPAMC_LEARN ) {
+ else if (flags & (SPAMC_LEARN|SPAMC_PING) ) {
message_cleanup(&m);
}
else {