quick recovery of thread resources when clamd clients abandon stream connection requests

git-svn: trunk@1585
remotes/push_mirror/metadata
Tomasz Kojm 21 years ago
parent d704c68e6b
commit c477e3ba94
  1. 6
      clamav-devel/ChangeLog
  2. 10
      clamav-devel/clamd/scanner.c
  3. 3
      clamav-devel/shared/output.c

@ -1,3 +1,9 @@
Thu May 26 04:03:31 CEST 2005 (tk)
----------------------------------
* clamd/scanner.c: quick recovery of thread resources when clamd clients
abandon stream connection requests (patch by Mark
Pizzolato <clamav-devel*subscriptions.pizzolato.net>)
Thu May 26 03:20:44 CEST 2005 (tk) Thu May 26 03:20:44 CEST 2005 (tk)
---------------------------------- ----------------------------------
* libclamav/others.c: print warnings and errors in single call to write * libclamav/others.c: print warnings and errors in single call to write

@ -380,7 +380,11 @@ int scanstream(int odesc, unsigned long int *scanned, const struct cl_node *root
return -1; return -1;
} else { } else {
listen(sockfd, 1); listen(sockfd, 1);
mdprintf(odesc, "PORT %d\n", port); if(mdprintf(odesc, "PORT %d\n", port) <= 0) {
logg("!ScanStream: error transmitting port.\n");
close(sockfd);
return -1;
}
} }
switch(retval = poll_fd(sockfd, timeout)) { switch(retval = poll_fd(sockfd, timeout)) {
@ -478,11 +482,11 @@ int scanstream(int odesc, unsigned long int *scanned, const struct cl_node *root
virusaction("stream", virname, copt); virusaction("stream", virname, copt);
} else if(ret != CL_CLEAN) { } else if(ret != CL_CLEAN) {
mdprintf(odesc, "stream: %s ERROR\n", cl_strerror(ret)); mdprintf(odesc, "stream: %s ERROR\n", cl_strerror(ret));
logg("stream: %s ERROR\n", cl_strerror(ret)); logg("stream %d: %s ERROR\n", port, cl_strerror(ret));
} else { } else {
mdprintf(odesc, "stream: OK\n"); mdprintf(odesc, "stream: OK\n");
if(logok) if(logok)
logg("stream: OK\n"); logg("stream %d: OK\n", port);
} }
return ret; return ret;

@ -73,8 +73,7 @@ int mdprintf(int desc, const char *str, ...)
va_start(args, str); va_start(args, str);
bytes = vsnprintf(buff, 512, str, args); bytes = vsnprintf(buff, 512, str, args);
va_end(args); va_end(args);
write(desc, buff, bytes); return send(desc, buff, bytes, 0);
return bytes;
} }
void logg_close(void) { void logg_close(void) {

Loading…
Cancel
Save