diff --git a/src/config.h b/src/config.h index c1821a4..9daee9a 100644 --- a/src/config.h +++ b/src/config.h @@ -13,7 +13,7 @@ #define VERSION "0.1.22" -#define BUILD 734 +#define BUILD 735 #define HOSTID "mailarchiver" diff --git a/src/defs.h b/src/defs.h index 0b92a80..41c8664 100644 --- a/src/defs.h +++ b/src/defs.h @@ -188,7 +188,7 @@ float __acquire, __parsed, __av, __store, __compress, __encrypt; char bodydigest[2*DIGEST_LENGTH+1]; char digest[2*DIGEST_LENGTH+1]; - time_t now, sent, retained; + time_t now, sent, delivered, retained; char ms_journal, ms_journal_dropped; int journal_envelope_length, journal_bottom_length; #ifdef NEED_MYSQL diff --git a/src/import.c b/src/import.c index d4c0283..b972b3b 100644 --- a/src/import.c +++ b/src/import.c @@ -67,10 +67,13 @@ sdata->sent = 0; + sdata->delivered = 0; state = parse_message(sdata, 1, cfg); post_parse(sdata, &state, cfg); + if(sdata->sent <= 0 && sdata->delivered > 0) sdata->sent = sdata->delivered; + if(sdata->sent > sdata->now) sdata->sent = sdata->now; if(sdata->sent == -1) sdata->sent = 0; diff --git a/src/misc.c b/src/misc.c index 0927f2b..c08d49d 100644 --- a/src/misc.c +++ b/src/misc.c @@ -504,7 +504,7 @@ for(i=0; ircptto[i], 0, SMALLBUFSIZE); time(&(sdata->now)); - sdata->sent = sdata->retained = sdata->now; + sdata->sent = sdata->delivered = sdata->retained = sdata->now; } diff --git a/src/parser.c b/src/parser.c index c1a4b0b..323053a 100644 --- a/src/parser.c +++ b/src/parser.c @@ -347,6 +347,7 @@ else if(strncasecmp(buf, "Subject:", strlen("Subject:")) == 0) state->message_state = MSG_SUBJECT; else if(strncasecmp(buf, "Recipient:", strlen("Recipient:")) == 0) state->message_state = MSG_RECIPIENT; else if(strncasecmp(buf, "Date:", strlen("Date:")) == 0 && sdata->sent == 0) sdata->sent = parse_date_header(buf); + else if(strncasecmp(buf, "Delivery-date:", strlen("Delivery-date:")) == 0 && sdata->delivered == 0) sdata->delivered = parse_date_header(buf); else if(strncasecmp(buf, "Received:", strlen("Received:")) == 0) state->message_state = MSG_RECEIVED; else if(cfg->extra_to_field[0] != '\0' && strncasecmp(buf, cfg->extra_to_field, strlen(cfg->extra_to_field)) == 0) state->message_state = MSG_TO; diff --git a/src/test.c b/src/test.c index d02c1a8..ef03ff9 100644 --- a/src/test.c +++ b/src/test.c @@ -63,6 +63,7 @@ init_session_data(&sdata); sdata.sent = 0; + sdata.delivered = 0; sdata.tot_len = st.st_size; snprintf(sdata.ttmpfile, SMALLBUFSIZE-1, "%s", argv[1]); @@ -79,7 +80,7 @@ printf("subject: *%s*\n", state.b_subject); printf("body: *%s*\n", state.b_body); - printf("sent: %ld\n", sdata.sent); + printf("sent: %ld, delivered-date: %ld\n", sdata.sent, sdata.delivered); make_digests(&sdata, &cfg);