diff options
Diffstat (limited to 'pith/reply.c')
-rw-r--r-- | pith/reply.c | 59 |
1 files changed, 12 insertions, 47 deletions
diff --git a/pith/reply.c b/pith/reply.c index ab4e97c..702832a 100644 --- a/pith/reply.c +++ b/pith/reply.c @@ -3346,58 +3346,23 @@ second and a single unique character char * generate_message_id(void) { - static short osec = 0, cnt = 0; - char idbuf[128], revisionbuf[128]; char *id; - time_t now; - struct tm *now_x; - char *revision = NULL; - char *hostpart = NULL; - char *alpine_name = NULL; - char *alpine_version = NULL; - char *system_os = NULL; - - now = time((time_t *)0); - now_x = localtime(&now); - - if(now_x->tm_sec == osec) - cnt++; - else{ - cnt = 0; - osec = now_x->tm_sec; - } + char *leftpart; + char *hostpart; - get_alpine_revision_number(revisionbuf, sizeof(revisionbuf)); if(F_ON(F_ROT13_MESSAGE_ID, ps_global)){ - hostpart = rot13(ps_global->hostname); - alpine_name = rot13("alpine"); - alpine_version = rot5n(ALPINE_VERSION); - system_os = rot13(SYSTYPE); - revision = rot5n(revisionbuf); + hostpart = rot13(ps_global->hostname); + leftpart = rot13(oauth2_generate_state()); } else { - hostpart = cpystr(ps_global->hostname); - alpine_name = cpystr("alpine"); - alpine_version = cpystr(ALPINE_VERSION); - system_os = cpystr(SYSTYPE); - revision = cpystr(revisionbuf); + hostpart = cpystr(ps_global->hostname); + leftpart = oauth2_generate_state(); } - - if(!hostpart) - hostpart = cpystr("huh"); - - snprintf(idbuf, sizeof(idbuf), "<%.6s.%.4s.%.20s.%.10s.%02d%02d%02d%02d%02d%02d%X.%d@%.50s>", - alpine_name, system_os, alpine_version, revision,(now_x->tm_year) % 100, now_x->tm_mon + 1, - now_x->tm_mday, now_x->tm_hour, now_x->tm_min, now_x->tm_sec, - cnt, getpid(), hostpart); - idbuf[sizeof(idbuf)-1] = '\0'; - - id = cpystr(idbuf); - - if(hostpart) fs_give((void **) &hostpart); - if(alpine_name) fs_give((void **) & alpine_name); - if(alpine_version) fs_give((void **)&alpine_version); - if(system_os) fs_give((void **)&system_os); - if(revision) fs_give((void **)&revision); + + id = fs_get(strlen(leftpart) + strlen(hostpart) + 4); + sprintf(id, "<%s@%s>", leftpart, hostpart); + + fs_give((void **) &hostpart); + fs_give((void **) &leftpart); return(id); } |