From: Simon Morlat Date: Thu, 11 Apr 2013 14:36:40 +0000 (+0200) Subject: try to fix date issues X-Git-Url: http://sjero.net/git/?p=linphone;a=commitdiff_plain;h=6a9dafbb64cdea8a239ccafa9430bc9a3cd90cf3 try to fix date issues --- diff --git a/coreapi/sal_eXosip2.c b/coreapi/sal_eXosip2.c index b86fc26e..1bbbe36e 100644 --- a/coreapi/sal_eXosip2.c +++ b/coreapi/sal_eXosip2.c @@ -1798,7 +1798,7 @@ static void text_received(Sal *sal, eXosip_event_t *ev){ for(j=0;j<12;j++) { if(strcmp(tmp2,months[j])==0) ret.tm_mon=j; } - ret.tm_isdst=-1; + ret.tm_isdst=0; }else ms_warning("No date header in SIP MESSAGE, we don't know when it was sent."); content_type= osip_message_get_content_type(ev->request); diff --git a/coreapi/sal_eXosip2_presence.c b/coreapi/sal_eXosip2_presence.c index ffa7ed92..1b64fe42 100644 --- a/coreapi/sal_eXosip2_presence.c +++ b/coreapi/sal_eXosip2_presence.c @@ -81,23 +81,28 @@ void sal_remove_in_subscribe(Sal *sal, SalOp *op){ sal->in_subscribes=ms_list_remove(sal->in_subscribes,op); } -#ifdef WIN32 - -static inline char *my_ctime_r(const time_t *t, char *buf){ - strcpy(buf,ctime(t)); - return buf; -} - +static const char *days[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"}; +static const char *months[]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}; + +static void msg_add_current_date(osip_message_t *msg){ + char tmp[64]={0}; + time_t curtime=time(NULL); + struct tm *ret; +#ifndef WIN32 + struct tm gmt; + ret=gmtime_r(&curtime,&gmt); #else -#define my_ctime_r ctime_r + ret=gmtime(&curtime); #endif + /*cannot use strftime because it is locale dependant*/ + snprintf(tmp,sizeof(tmp)-1,"%s, %i %s %i %02i:%02i:%02i GMT", + days[ret->tm_wday],ret->tm_mday,months[ret->tm_mon],1900+ret->tm_year,ret->tm_hour,ret->tm_min,ret->tm_sec); + osip_message_replace_header(msg,"Date",tmp); +} + int sal_message_send(SalOp *op, const char *from, const char *to, const char* content_type, const char *msg){ osip_message_t *sip=NULL; - char t[26]; - time_t curtime=time(NULL); - - my_ctime_r(&curtime,t); if(op->cid == -1) { @@ -113,7 +118,7 @@ int sal_message_send(SalOp *op, const char *from, const char *to, const char* co sal_op_get_from(op),sal_op_get_route(op)); if (sip!=NULL){ sal_exosip_add_custom_headers(sip,op->base.custom_headers); - osip_message_set_date(sip,t); + msg_add_current_date(sip); osip_message_set_content_type(sip,content_type); if (msg) osip_message_set_body(sip,msg,strlen(msg)); sal_add_other(op->base.root,op,sip); @@ -136,7 +141,7 @@ int sal_message_send(SalOp *op, const char *from, const char *to, const char* co return -1; } sal_exosip_add_custom_headers(sip,op->base.custom_headers); - osip_message_set_date(sip,t); + msg_add_current_date(sip); osip_message_set_content_type(sip,content_type); if (msg) osip_message_set_body(sip,msg,strlen(msg)); eXosip_call_send_request(op->did,sip);