[Pkg-clamav-commits] [SCM] Debian repository for ClamAV branch, debian/unstable, updated. debian/0.95+dfsg-1-6156-g094ec9b
aCaB
acab at clamav.net
Sun Apr 4 00:53:43 UTC 2010
The following commit has been merged in the debian/unstable branch:
commit aecb594f3cf0388c886787a89932f552785d2fea
Author: aCaB <acab at clamav.net>
Date: Mon Jun 29 16:46:44 2009 +0200
use INSTREAM in clamav-milter
diff --git a/ChangeLog b/ChangeLog
index 2a5abcd..2155252 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Mon Jun 29 15:40:42 CEST 2009 (acab)
+------------------------------------
+ * clamav-milter: use s/STREAM/INSTREAM/ (bb#1548)
+
Mon Jun 29 11:25:46 CEST 2009 (acab)
------------------------------------
* clamav-milter/netcode.c: Properly handle clamd disconnection (bb#1643)
diff --git a/clamav-milter/clamfi.c b/clamav-milter/clamfi.c
index cccc005..f00c331 100644
--- a/clamav-milter/clamfi.c
+++ b/clamav-milter/clamfi.c
@@ -64,7 +64,6 @@ enum {
static const char *HDR_UNAVAIL = "UNKNOWN";
struct CLAMFI {
- char buffer[CLAMFIBUFSZ];
const char *virusname;
char *msg_subj;
char *msg_date;
@@ -78,6 +77,8 @@ struct CLAMFI {
unsigned int gotbody;
unsigned int scanned_count;
unsigned int status_count;
+ uint32_t sendme;
+ char buffer[CLAMFIBUFSZ];
};
@@ -175,18 +176,21 @@ static sfsistat sendchunk(struct CLAMFI *cf, unsigned char *bodyp, size_t len, S
cf->bufsz += len;
} else if(len < CLAMFIBUFSZ) {
memcpy(&cf->buffer[cf->bufsz], bodyp, CLAMFIBUFSZ - cf->bufsz);
- sendfailed = nc_send(cf->alt, cf->buffer, CLAMFIBUFSZ);
+ cf->sendme = htonl(CLAMFIBUFSZ);
+ sendfailed = nc_send(cf->main, &cf->sendme, CLAMFIBUFSZ + 4);
len -= (CLAMFIBUFSZ - cf->bufsz);
memcpy(cf->buffer, &bodyp[CLAMFIBUFSZ - cf->bufsz], len);
cf->bufsz = len;
} else {
- if(nc_send(cf->alt, cf->buffer, cf->bufsz) || nc_send(cf->alt, bodyp, len))
+ uint32_t sendmetoo = htonl(len);
+ cf->sendme = htonl(cf->bufsz);
+ if((cf->bufsz && nc_send(cf->main, &cf->sendme, cf->bufsz + 4)) || nc_send(cf->main, &sendmetoo, 4) || nc_send(cf->main, bodyp, len))
sendfailed = 1;
cf->bufsz = 0;
}
if(sendfailed) {
logg("!Streaming failed\n");
- nullify(ctx, cf, CF_MAIN);
+ nullify(ctx, cf, CF_NONE);
return FailAction;
}
}
@@ -289,12 +293,13 @@ sfsistat clamfi_eom(SMFICTX *ctx) {
return FailAction;
}
} else {
- if(cf->bufsz && nc_send(cf->alt, cf->buffer, cf->bufsz)) {
+ uint32_t sendmetoo = 0;
+ cf->sendme = htonl(cf->bufsz);
+ if((cf->bufsz && nc_send(cf->main, &cf->sendme, cf->bufsz + 4)) || nc_send(cf->main, &sendmetoo, 4)) {
logg("!Failed to flush STREAM\n");
- nullify(ctx, cf, CF_MAIN);
+ nullify(ctx, cf, CF_NONE);
return FailAction;
}
- close(cf->alt);
}
reply = nc_recv(cf->main);
diff --git a/clamav-milter/netcode.c b/clamav-milter/netcode.c
index de18e60..7624cf4 100644
--- a/clamav-milter/netcode.c
+++ b/clamav-milter/netcode.c
@@ -315,41 +315,8 @@ int nc_connect_rand(int *main, int *alt, int *local) {
unlink(unlinkme);
free(unlinkme);
} else {
- char *reply=NULL, *port;
- int nport;
- struct CP_ENTRY new_cpe;
- union {
- struct sockaddr_in sa4;
- struct sockaddr_in6 sa6;
- } sa;
-
- if(nc_send(*main, "nSTREAM\n", 8) || !(reply = nc_recv(*main)) || !(port = strstr(reply, "PORT"))) {
+ if(nc_send(*main, "nINSTREAM\n", 10)) {
logg("!Failed to communicate with clamd\n");
- if(reply) {
- free(reply);
- close(*main);
- }
- return 1;
- }
- port+=5;
- sscanf(port, "%d", &nport);
- free(reply);
- if(cpe->server->sa_family == AF_INET && cpe->socklen == sizeof(struct sockaddr_in)) {
- memcpy(&sa, cpe->server, sizeof(struct sockaddr_in));
- sa.sa4.sin_port = htons(nport);
- new_cpe.socklen = sizeof(struct sockaddr_in);
- } else if(cpe->server->sa_family == AF_INET6 && cpe->socklen == sizeof(struct sockaddr_in6)) {
- memcpy(&sa, cpe->server, sizeof(struct sockaddr_in6));
- sa.sa6.sin6_port = htons(nport);
- new_cpe.socklen = sizeof(struct sockaddr_in6);
- } else {
- logg("!WTF WHY AM I DOING HERE???\n");
- close(*main);
- return 1;
- }
- new_cpe.server = (struct sockaddr *)&sa;
- if ((*alt = nc_connect_entry(&new_cpe)) == -1) {
- logg("!Failed to communicate with clamd for streaming\n");
close(*main);
return 1;
}
--
Debian repository for ClamAV
More information about the Pkg-clamav-commits
mailing list