From: Wilfried Göesgens Date: Sun, 21 Feb 2010 21:05:43 +0000 (+0000) Subject: * fill the migrate buffer so the new sock_getln works X-Git-Tag: v7.86~392 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=29fda9cdbf1aac6b68aba62ac593a051af124030 * fill the migrate buffer so the new sock_getln works --- diff --git a/citadel/modules/clamav/serv_virus.c b/citadel/modules/clamav/serv_virus.c index 42cfee005..7d2aba4c7 100644 --- a/citadel/modules/clamav/serv_virus.c +++ b/citadel/modules/clamav/serv_virus.c @@ -85,6 +85,7 @@ int clamd(struct CtdlMessage *msg) { int clamhost; char *msgtext; size_t msglen; + CitContext *CCC; /* Don't care if you're logged in. You can still spread viruses. */ @@ -117,6 +118,10 @@ int clamd(struct CtdlMessage *msg) { */ return(0); } + CCC=CC; + CCC->sReadBuf = NewStrBuf(); + CCC->sMigrateBuf = NewStrBuf(); + CCC->sPos = NULL; /* Command */ CtdlLogPrintf(CTDL_DEBUG, "Transmitting STREAM command\n"); @@ -143,6 +148,8 @@ int clamd(struct CtdlMessage *msg) { /* If the service isn't running, just pass the mail * through. Potentially throwing away mails isn't good. */ + FreeStrBuf(&CCC->sReadBuf); + FreeStrBuf(&CCC->sMigrateBuf); return(0); } else { @@ -189,6 +196,8 @@ int clamd(struct CtdlMessage *msg) { } bail: close(sock); + FreeStrBuf(&CCC->sReadBuf); + FreeStrBuf(&CCC->sMigrateBuf); return(is_virus); } diff --git a/citadel/modules/network/serv_network.c b/citadel/modules/network/serv_network.c index 2ac84e3af..db178a4b2 100644 --- a/citadel/modules/network/serv_network.c +++ b/citadel/modules/network/serv_network.c @@ -2006,6 +2006,7 @@ void network_poll_node(char *node, char *secret, char *host, char *port) { char buf[SIZ]; char err_buf[SIZ]; char connected_to[SIZ]; + CitContext *CCC=CC; if (network_talking_to(node, NTT_CHECK)) return; network_talking_to(node, NTT_ADD); @@ -2019,7 +2020,9 @@ void network_poll_node(char *node, char *secret, char *host, char *port) { } CtdlLogPrintf(CTDL_DEBUG, "Connected!\n"); - + CCC->sReadBuf = NewStrBuf(); + CCC->sMigrateBuf = NewStrBuf(); + CCC->sPos = NULL; /* Read the server greeting */ if (sock_getln(&sock, buf, sizeof buf) < 0) goto bail; CtdlLogPrintf(CTDL_DEBUG, ">%s\n", buf); @@ -2050,6 +2053,8 @@ void network_poll_node(char *node, char *secret, char *host, char *port) { sock_puts(&sock, "QUIT"); bail: + FreeStrBuf(&CCC->sReadBuf); + FreeStrBuf(&CCC->sMigrateBuf); if (sock != -1) sock_close(sock); network_talking_to(node, NTT_REMOVE); diff --git a/citadel/modules/pop3client/serv_pop3client.c b/citadel/modules/pop3client/serv_pop3client.c index 775a892ce..8a0693304 100644 --- a/citadel/modules/pop3client/serv_pop3client.c +++ b/citadel/modules/pop3client/serv_pop3client.c @@ -82,6 +82,7 @@ void pop3_do_fetching(char *roomname, char *pop3host, char *pop3user, char *pop3 char utmsgid[SIZ]; struct cdbdata *cdbut; struct UseTable ut; + CitContext *CCC=CC; CtdlLogPrintf(CTDL_DEBUG, "POP3: %s %s %s \n", roomname, pop3host, pop3user); CtdlLogPrintf(CTDL_NOTICE, "Connecting to <%s>\n", pop3host); @@ -99,6 +100,9 @@ void pop3_do_fetching(char *roomname, char *pop3host, char *pop3user, char *pop3 goto bail; CtdlLogPrintf(CTDL_DEBUG, "Connected!\n"); + CCC->sReadBuf = NewStrBuf(); + CCC->sMigrateBuf = NewStrBuf(); + CCC->sPos = NULL; /* Read the server greeting */ if (sock_getln(&sock, buf, sizeof buf) < 0) goto bail; @@ -243,6 +247,9 @@ void pop3_do_fetching(char *roomname, char *pop3host, char *pop3user, char *pop3 if (sock_getln(&sock, buf, sizeof buf) < 0) goto bail; CtdlLogPrintf(CTDL_DEBUG, ">%s\n", buf); bail: + FreeStrBuf(&CCC->sReadBuf); + FreeStrBuf(&CCC->sMigrateBuf); + if (sock != -1) sock_close(sock); if (msglist) free(msglist); diff --git a/citadel/modules/smtp/serv_smtp.c b/citadel/modules/smtp/serv_smtp.c index a25303e87..f0ae5657e 100644 --- a/citadel/modules/smtp/serv_smtp.c +++ b/citadel/modules/smtp/serv_smtp.c @@ -978,6 +978,7 @@ void smtp_try(const char *key, const char *addr, int *status, char *ptr; size_t msg_size; int scan_done; + CitContext *CCC=CC; /* Parse out the host portion of the recipient address */ @@ -987,15 +988,15 @@ void smtp_try(const char *key, const char *addr, int *status, user, node, name); /* Load the message out of the database */ - CC->redirect_buffer = malloc(SIZ); - CC->redirect_len = 0; - CC->redirect_alloc = SIZ; + CCC->redirect_buffer = malloc(SIZ); + CCC->redirect_len = 0; + CCC->redirect_alloc = SIZ; CtdlOutputMsg(msgnum, MT_RFC822, HEADERS_ALL, 0, 1, NULL, ESC_DOT); msgtext = CC->redirect_buffer; msg_size = CC->redirect_len; - CC->redirect_buffer = NULL; - CC->redirect_len = 0; - CC->redirect_alloc = 0; + CCC->redirect_buffer = NULL; + CCC->redirect_len = 0; + CCC->redirect_alloc = 0; /* If no envelope_from is supplied, extract one from the message */ if ( (envelope_from == NULL) || (IsEmptyStr(envelope_from)) ) { @@ -1102,6 +1103,10 @@ void smtp_try(const char *key, const char *addr, int *status, return; } + CCC->sReadBuf = NewStrBuf(); + CCC->sMigrateBuf = NewStrBuf(); + CCC->sPos = NULL; + /* Process the SMTP greeting from the server */ if (ml_sock_gets(&sock, buf) < 0) { *status = 4; @@ -1294,6 +1299,8 @@ void smtp_try(const char *key, const char *addr, int *status, user, node, name); bail: free(msgtext); + FreeStrBuf(&CCC->sReadBuf); + FreeStrBuf(&CCC->sMigrateBuf); if (sock != -1) sock_close(sock); diff --git a/citadel/modules/spam/serv_spam.c b/citadel/modules/spam/serv_spam.c index 840fd749f..b8f3a6c96 100644 --- a/citadel/modules/spam/serv_spam.c +++ b/citadel/modules/spam/serv_spam.c @@ -82,6 +82,7 @@ int spam_assassin(struct CtdlMessage *msg) { int sa; char *msgtext; size_t msglen; + CitContext *CCC=CC; /* For users who have authenticated to this server we never want to * apply spam filtering, because presumably they're trustworthy. @@ -107,21 +108,25 @@ int spam_assassin(struct CtdlMessage *msg) { return(0); } + CCC->sReadBuf = NewStrBuf(); + CCC->sMigrateBuf = NewStrBuf(); + CCC->sPos = NULL; + /* Command */ CtdlLogPrintf(CTDL_DEBUG, "Transmitting command\n"); sprintf(buf, "CHECK SPAMC/1.2\r\n\r\n"); sock_write(&sock, buf, strlen(buf)); /* Message */ - CC->redirect_buffer = malloc(SIZ); - CC->redirect_len = 0; - CC->redirect_alloc = SIZ; + CCC->redirect_buffer = malloc(SIZ); + CCC->redirect_len = 0; + CCC->redirect_alloc = SIZ; CtdlOutputPreLoadedMsg(msg, MT_RFC822, HEADERS_ALL, 0, 1, 0); msgtext = CC->redirect_buffer; msglen = CC->redirect_len; - CC->redirect_buffer = NULL; - CC->redirect_len = 0; - CC->redirect_alloc = 0; + CCC->redirect_buffer = NULL; + CCC->redirect_len = 0; + CCC->redirect_alloc = 0; sock_write(&sock, msgtext, msglen); free(msgtext); @@ -192,6 +197,8 @@ int spam_assassin(struct CtdlMessage *msg) { } bail: close(sock); + FreeStrBuf(&CCC->sReadBuf); + FreeStrBuf(&CCC->sMigrateBuf); return(is_spam); }