minor attachment handling fix

This commit is contained in:
SJ 2012-11-02 22:17:21 +01:00
parent 0d21858c96
commit 8abe4c6d60
3 changed files with 23 additions and 17 deletions

View File

@ -37,7 +37,7 @@ int store_attachments(struct session_data *sdata, struct _state *state, struct _
found = 0; found = 0;
id = 0; id = 0;
if(strlen(state->attachments[i].filename) > 4 && state->attachments[i].size > 10){ if(state->attachments[i].size > 0){
snprintf(s, sizeof(s)-1, "SELECT `id` FROM `%s` WHERE `sig`='%s'", SQL_ATTACHMENT_TABLE, state->attachments[i].digest); snprintf(s, sizeof(s)-1, "SELECT `id` FROM `%s` WHERE `sig`='%s'", SQL_ATTACHMENT_TABLE, state->attachments[i].digest);

View File

@ -13,7 +13,7 @@
#define VERSION "0.1.22" #define VERSION "0.1.22"
#define BUILD 723 #define BUILD 724
#define HOSTID "mailarchiver" #define HOSTID "mailarchiver"

View File

@ -155,6 +155,26 @@ void post_parse(struct session_data *sdata, struct _state *state, struct __confi
} }
void storno_attachment(struct _state *state){
state->has_to_dump = 0;
if(state->n_attachments <= 0) return;
state->attachments[state->n_attachments].size = 0;
state->attachments[state->n_attachments].dumped = 0;
memset(state->attachments[state->n_attachments].type, 0, TINYBUFSIZE);
memset(state->attachments[state->n_attachments].shorttype, 0, TINYBUFSIZE);
memset(state->attachments[state->n_attachments].aname, 0, TINYBUFSIZE);
memset(state->attachments[state->n_attachments].filename, 0, TINYBUFSIZE);
memset(state->attachments[state->n_attachments].internalname, 0, TINYBUFSIZE);
memset(state->attachments[state->n_attachments].digest, 0, 2*DIGEST_LENGTH+1);
state->n_attachments--;
}
int parse_line(char *buf, struct _state *state, struct session_data *sdata, int take_into_pieces, char *writebuffer, int writebuffersize, char *abuffer, int abuffersize, struct __config *cfg){ int parse_line(char *buf, struct _state *state, struct session_data *sdata, int take_into_pieces, char *writebuffer, int writebuffersize, char *abuffer, int abuffersize, struct __config *cfg){
char *p, *q, puf[SMALLBUFSIZE]; char *p, *q, puf[SMALLBUFSIZE];
unsigned char b64buffer[MAXBUFSIZE]; unsigned char b64buffer[MAXBUFSIZE];
@ -264,22 +284,8 @@ int parse_line(char *buf, struct _state *state, struct session_data *sdata, int
if(state->fd == -1){ if(state->fd == -1){
storno_attachment(state);
state->attachments[state->n_attachments].size = 0;
state->attachments[state->n_attachments].dumped = 0;
memset(state->attachments[state->n_attachments].type, 0, TINYBUFSIZE);
memset(state->attachments[state->n_attachments].shorttype, 0, TINYBUFSIZE);
memset(state->attachments[state->n_attachments].aname, 0, TINYBUFSIZE);
memset(state->attachments[state->n_attachments].filename, 0, TINYBUFSIZE);
memset(state->attachments[state->n_attachments].internalname, 0, TINYBUFSIZE);
memset(state->attachments[state->n_attachments].digest, 0, 2*DIGEST_LENGTH+1);
syslog(LOG_PRIORITY, "%s: error opening %s", sdata->ttmpfile, state->attachments[state->n_attachments].internalname); syslog(LOG_PRIORITY, "%s: error opening %s", sdata->ttmpfile, state->attachments[state->n_attachments].internalname);
state->n_attachments--;
state->has_to_dump = 0;
} }
else { else {
snprintf(puf, sizeof(puf)-1, "ATTACHMENT_POINTER_%s.a%d_XXX_PILER", sdata->ttmpfile, state->n_attachments); snprintf(puf, sizeof(puf)-1, "ATTACHMENT_POINTER_%s.a%d_XXX_PILER", sdata->ttmpfile, state->n_attachments);