]> sjero.net Git - linphone/commitdiff
try to fix date issues
authorSimon Morlat <simon.morlat@linphone.org>
Thu, 11 Apr 2013 14:36:40 +0000 (16:36 +0200)
committerSimon Morlat <simon.morlat@linphone.org>
Thu, 11 Apr 2013 14:38:19 +0000 (16:38 +0200)
coreapi/sal_eXosip2.c
coreapi/sal_eXosip2_presence.c

index b86fc26e08738ad483982ebf03e97786ad6fe413..1bbbe36e6ed3e67307eb248395ecb8d42555fe61 100644 (file)
@@ -1798,7 +1798,7 @@ static void text_received(Sal *sal, eXosip_event_t *ev){
                for(j=0;j<12;j++) { \r
                        if(strcmp(tmp2,months[j])==0) ret.tm_mon=j; \r
                }\r
-               ret.tm_isdst=-1;\r
+               ret.tm_isdst=0;\r
        }else ms_warning("No date header in SIP MESSAGE, we don't know when it was sent.");\r
        \r
        content_type= osip_message_get_content_type(ev->request);\r
index ffa7ed92066801ddfd37cbe50398674671ee0898..1b64fe42970884ce0fdfe253067aa69187a4efa6 100644 (file)
@@ -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);