git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
SUPPORT_TRANSLATE_IP_ADDRESS didn't cause any output from -bV.
[exim.git]
/
src
/
src
/
spam.c
diff --git
a/src/src/spam.c
b/src/src/spam.c
index 3c70f6d99a0720f057d92f81664fb6c212dd4239..e49bc56bcaebcb16b8217e098a252ea9d24e490b 100644
(file)
--- a/
src/src/spam.c
+++ b/
src/src/spam.c
@@
-1,4
+1,4
@@
-/* $Cambridge: exim/src/src/spam.c,v 1.
6 2005/05/10 22:39:20 tom
Exp $ */
+/* $Cambridge: exim/src/src/spam.c,v 1.
11 2005/08/01 14:41:25 ph10
Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
/*************************************************
* Exim - an Internet mail transport agent *
@@
-44,6
+44,9
@@
int spam(uschar **listptr) {
struct pollfd pollfd;
#endif
struct pollfd pollfd;
#endif
+ /* stop compiler warning */
+ result = result;
+
/* find the username from the option list */
if ((user_name = string_nextinlist(&list, &sep,
user_name_buffer,
/* find the username from the option list */
if ((user_name = string_nextinlist(&list, &sep,
user_name_buffer,
@@
-120,7
+123,7
@@
int spam(uschar **listptr) {
if (!num_servers) {
log_write(0, LOG_MAIN|LOG_PANIC,
"spam acl condition: no useable spamd server addresses in spamd_address configuration option.");
if (!num_servers) {
log_write(0, LOG_MAIN|LOG_PANIC,
"spam acl condition: no useable spamd server addresses in spamd_address configuration option.");
- fclose(mbox_file);
+
(void)
fclose(mbox_file);
return DEFER;
};
return DEFER;
};
@@
-136,7
+139,7
@@
int spam(uschar **listptr) {
if ( (spamd_sock = ip_socket(SOCK_STREAM, AF_INET)) < 0) {
log_write(0, LOG_MAIN|LOG_PANIC,
"spam acl condition: error creating IP socket for spamd");
if ( (spamd_sock = ip_socket(SOCK_STREAM, AF_INET)) < 0) {
log_write(0, LOG_MAIN|LOG_PANIC,
"spam acl condition: error creating IP socket for spamd");
- fclose(mbox_file);
+
(void)
fclose(mbox_file);
return DEFER;
};
return DEFER;
};
@@
-159,8
+162,8
@@
int spam(uschar **listptr) {
current_server = 0;
if (current_server == start_server) {
log_write(0, LOG_MAIN|LOG_PANIC, "spam acl condition: all spamd servers failed");
current_server = 0;
if (current_server == start_server) {
log_write(0, LOG_MAIN|LOG_PANIC, "spam acl condition: all spamd servers failed");
- fclose(mbox_file);
- close(spamd_sock);
+
(void)
fclose(mbox_file);
+
(void)
close(spamd_sock);
return DEFER;
};
};
return DEFER;
};
};
@@
-173,7
+176,7
@@
int spam(uschar **listptr) {
log_write(0, LOG_MAIN|LOG_PANIC,
"malware acl condition: spamd: unable to acquire socket (%s)",
strerror(errno));
log_write(0, LOG_MAIN|LOG_PANIC,
"malware acl condition: spamd: unable to acquire socket (%s)",
strerror(errno));
- fclose(mbox_file);
+
(void)
fclose(mbox_file);
return DEFER;
}
return DEFER;
}
@@
-184,15
+187,15
@@
int spam(uschar **listptr) {
log_write(0, LOG_MAIN|LOG_PANIC,
"malware acl condition: spamd: unable to connect to UNIX socket %s (%s)",
spamd_address, strerror(errno) );
log_write(0, LOG_MAIN|LOG_PANIC,
"malware acl condition: spamd: unable to connect to UNIX socket %s (%s)",
spamd_address, strerror(errno) );
- fclose(mbox_file);
- close(spamd_sock);
+
(void)
fclose(mbox_file);
+
(void)
close(spamd_sock);
return DEFER;
}
}
/* now we are connected to spamd on spamd_sock */
return DEFER;
}
}
/* now we are connected to spamd on spamd_sock */
-
snprintf(CS
spamd_buffer,
+
(void)string_format(
spamd_buffer,
sizeof(spamd_buffer),
"REPORT SPAMC/1.2\r\nUser: %s\r\nContent-length: %ld\r\n\r\n",
user_name,
sizeof(spamd_buffer),
"REPORT SPAMC/1.2\r\nUser: %s\r\nContent-length: %ld\r\n\r\n",
user_name,
@@
-200,11
+203,11
@@
int spam(uschar **listptr) {
/* send our request */
if (send(spamd_sock, spamd_buffer, Ustrlen(spamd_buffer), 0) < 0) {
/* send our request */
if (send(spamd_sock, spamd_buffer, Ustrlen(spamd_buffer), 0) < 0) {
- close(spamd_sock);
+
(void)
close(spamd_sock);
log_write(0, LOG_MAIN|LOG_PANIC,
"spam acl condition: spamd send failed: %s", strerror(errno));
log_write(0, LOG_MAIN|LOG_PANIC,
"spam acl condition: spamd send failed: %s", strerror(errno));
- fclose(mbox_file);
- close(spamd_sock);
+
(void)
fclose(mbox_file);
+
(void)
close(spamd_sock);
return DEFER;
};
return DEFER;
};
@@
-221,7
+224,7
@@
int spam(uschar **listptr) {
pollfd.fd = spamd_sock;
pollfd.events = POLLOUT;
#endif
pollfd.fd = spamd_sock;
pollfd.events = POLLOUT;
#endif
- fcntl(spamd_sock, F_SETFL, O_NONBLOCK);
+
(void)
fcntl(spamd_sock, F_SETFL, O_NONBLOCK);
do {
read = fread(spamd_buffer,1,sizeof(spamd_buffer),mbox_file);
if (read > 0) {
do {
read = fread(spamd_buffer,1,sizeof(spamd_buffer),mbox_file);
if (read > 0) {
@@
-241,12
+244,20
@@
again:
log_write(0, LOG_MAIN|LOG_PANIC,
"spam acl condition: timed out writing spamd socket");
}
log_write(0, LOG_MAIN|LOG_PANIC,
"spam acl condition: timed out writing spamd socket");
}
- close(spamd_sock);
- fclose(mbox_file);
+
(void)
close(spamd_sock);
+
(void)
fclose(mbox_file);
return DEFER;
}
#endif
wrote = send(spamd_sock,spamd_buffer + offset,read - offset,0);
return DEFER;
}
#endif
wrote = send(spamd_sock,spamd_buffer + offset,read - offset,0);
+ if (wrote == -1)
+ {
+ log_write(0, LOG_MAIN|LOG_PANIC,
+ "spam acl condition: %s on spamd socket", strerror(errno));
+ (void)close(spamd_sock);
+ (void)fclose(mbox_file);
+ return DEFER;
+ }
if (offset + wrote != read) {
offset += wrote;
goto again;
if (offset + wrote != read) {
offset += wrote;
goto again;
@@
-257,12
+268,12
@@
again:
if (ferror(mbox_file)) {
log_write(0, LOG_MAIN|LOG_PANIC,
"spam acl condition: error reading spool file: %s", strerror(errno));
if (ferror(mbox_file)) {
log_write(0, LOG_MAIN|LOG_PANIC,
"spam acl condition: error reading spool file: %s", strerror(errno));
- close(spamd_sock);
- fclose(mbox_file);
+
(void)
close(spamd_sock);
+
(void)
fclose(mbox_file);
return DEFER;
}
return DEFER;
}
- fclose(mbox_file);
+
(void)
fclose(mbox_file);
/* we're done sending, close socket for writing */
shutdown(spamd_sock,SHUT_WR);
/* we're done sending, close socket for writing */
shutdown(spamd_sock,SHUT_WR);
@@
-282,12
+293,12
@@
again:
if((i <= 0) && (errno != 0)) {
log_write(0, LOG_MAIN|LOG_PANIC,
"spam acl condition: error reading from spamd socket: %s", strerror(errno));
if((i <= 0) && (errno != 0)) {
log_write(0, LOG_MAIN|LOG_PANIC,
"spam acl condition: error reading from spamd socket: %s", strerror(errno));
- close(spamd_sock);
+
(void)
close(spamd_sock);
return DEFER;
}
/* reading done */
return DEFER;
}
/* reading done */
- close(spamd_sock);
+
(void)
close(spamd_sock);
/* dig in the spamd output and put the report in a multiline header, if requested */
if( sscanf(CS spamd_buffer,"SPAMD/%s 0 EX_OK\r\nContent-length: %*u\r\n\r\n%lf/%lf\r\n%n",
/* dig in the spamd output and put the report in a multiline header, if requested */
if( sscanf(CS spamd_buffer,"SPAMD/%s 0 EX_OK\r\nContent-length: %*u\r\n\r\n%lf/%lf\r\n%n",
@@
-351,12
+362,12
@@
again:
spam_bar = spam_bar_buffer;
/* create "float" spam score */
spam_bar = spam_bar_buffer;
/* create "float" spam score */
-
snprintf(CS
spam_score_buffer, sizeof(spam_score_buffer),"%.1f", spamd_score);
+
(void)string_format(
spam_score_buffer, sizeof(spam_score_buffer),"%.1f", spamd_score);
spam_score = spam_score_buffer;
/* create "int" spam score */
j = (int)((spamd_score + 0.001)*10);
spam_score = spam_score_buffer;
/* create "int" spam score */
j = (int)((spamd_score + 0.001)*10);
-
snprintf(CS
spam_score_int_buffer, sizeof(spam_score_int_buffer), "%d", j);
+
(void)string_format(
spam_score_int_buffer, sizeof(spam_score_int_buffer), "%d", j);
spam_score_int = spam_score_int_buffer;
/* compare threshold against score */
spam_score_int = spam_score_int_buffer;
/* compare threshold against score */