]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
make mod cdr work on windows, and make it segfault less.
authorMichael Jerris <mike@jerris.com>
Sun, 13 Aug 2006 04:41:40 +0000 (04:41 +0000)
committerMichael Jerris <mike@jerris.com>
Sun, 13 Aug 2006 04:41:40 +0000 (04:41 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@2279 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/event_handlers/mod_cdr/basecdr.cpp
src/mod/event_handlers/mod_cdr/csvcdr.cpp
src/mod/event_handlers/mod_cdr/pddcdr.cpp

index 77844f037882e757fe0629abac1eb251ea27593f..8c302fd75c1a6973dd10dcf9c805739f93a4797e 100644 (file)
@@ -82,49 +82,55 @@ BaseCDR::BaseCDR(switch_mod_cdr_newchannel_t *newchannel)
                callanswerdate = newchannel->timetable->answered;
                callenddate = newchannel->timetable->hungup;
        
-               if(newchannel->callerprofile->caller_id_name != 0)
-               {
-                       strncpy(clid,newchannel->callerprofile->caller_id_name,strlen(newchannel->callerprofile->caller_id_name));
-                       strncat(clid," <",2);
-                       if(newchannel->callerprofile->caller_id_number != 0 )
-                               strncat(clid,newchannel->callerprofile->caller_id_number,strlen(clid)+strlen(newchannel->callerprofile->caller_id_number));
-                       strncat(clid,">",1);
-               }
+               if (newchannel->callerprofile) {
+                       if(newchannel->callerprofile->caller_id_name != 0)
+                       {
+                               strncpy(clid,newchannel->callerprofile->caller_id_name,strlen(newchannel->callerprofile->caller_id_name));
+                               strncat(clid," <",2);
+                               if(newchannel->callerprofile->caller_id_number != 0 )
+                                       strncat(clid,newchannel->callerprofile->caller_id_number,strlen(clid)+strlen(newchannel->callerprofile->caller_id_number));
+                               strncat(clid,">",1);
+                       }
+                       
+                       // Get the ANI information if it's set
+                       if(newchannel->callerprofile->ani != 0)
+                               strncpy(ani,newchannel->callerprofile->ani,strlen(newchannel->callerprofile->ani));
+                       if(newchannel->callerprofile->ani2 != 0)
+                               strncpy(ani2,newchannel->callerprofile->ani2,strlen(newchannel->callerprofile->ani2));
                
-               // Get the ANI information if it's set
-               if(newchannel->callerprofile->ani != 0)
-                       strncpy(ani,newchannel->callerprofile->ani,strlen(newchannel->callerprofile->ani));
-               if(newchannel->callerprofile->ani2 != 0)
-                       strncpy(ani2,newchannel->callerprofile->ani2,strlen(newchannel->callerprofile->ani2));
-       
-               if(newchannel->callerprofile->dialplan != 0)
-                       strncpy(dialplan,newchannel->callerprofile->dialplan,strlen(newchannel->callerprofile->dialplan));
-       
-               if(newchannel->callerprofile->network_addr != 0)
-                       strncpy(network_addr,newchannel->callerprofile->network_addr,strlen(newchannel->callerprofile->network_addr));
-                               
+                       if(newchannel->callerprofile->dialplan != 0)
+                               strncpy(dialplan,newchannel->callerprofile->dialplan,strlen(newchannel->callerprofile->dialplan));
+               
+                       if(newchannel->callerprofile->network_addr != 0)
+                               strncpy(network_addr,newchannel->callerprofile->network_addr,strlen(newchannel->callerprofile->network_addr));
+               }
+
                originated = newchannel->originate;
        
-               if(newchannel->originateprofile->uuid != 0)
+               if(newchannel->originateprofile && newchannel->originateprofile->uuid != 0)
                        strncpy(destuuid,newchannel->originateprofile->uuid,strlen(newchannel->originateprofile->uuid));
        
                // We still need to check if this is originated or not
                if(originated == 0)
                {
-                       if(newchannel->callerprofile->destination_number != 0)
-                               strncpy(src,newchannel->callerprofile->destination_number,strlen(newchannel->callerprofile->destination_number));
-                       if(newchannel->callerprofile->caller_id_number != 0)
-                               strncpy(dst,newchannel->callerprofile->caller_id_number,strlen(newchannel->callerprofile->caller_id_number));
-                       if(newchannel->originateprofile->chan_name != 0)
+                       if (newchannel->callerprofile) {
+                               if(newchannel->callerprofile->destination_number != 0)
+                                       strncpy(src,newchannel->callerprofile->destination_number,strlen(newchannel->callerprofile->destination_number));
+                               if(newchannel->callerprofile->caller_id_number != 0)
+                                       strncpy(dst,newchannel->callerprofile->caller_id_number,strlen(newchannel->callerprofile->caller_id_number));
+                       }
+                       if(newchannel->originateprofile && newchannel->originateprofile->chan_name != 0)
                                strncpy(dstchannel,newchannel->originateprofile->chan_name,strlen(newchannel->originateprofile->chan_name));
                }
                else
                {
-                       if(newchannel->callerprofile->caller_id_number != 0)
-                               strncpy(src,newchannel->callerprofile->caller_id_number,strlen(newchannel->callerprofile->caller_id_number));
-                       if(newchannel->callerprofile->destination_number != 0)
-                               strncpy(dst,newchannel->callerprofile->destination_number,strlen(newchannel->callerprofile->destination_number));
-                       if(newchannel->originateprofile->chan_name != 0)
+                       if (newchannel->callerprofile) {
+                               if(newchannel->callerprofile->caller_id_number != 0)
+                                       strncpy(src,newchannel->callerprofile->caller_id_number,strlen(newchannel->callerprofile->caller_id_number));
+                               if(newchannel->callerprofile->destination_number != 0)
+                                       strncpy(dst,newchannel->callerprofile->destination_number,strlen(newchannel->callerprofile->destination_number));
+                       }
+                       if(newchannel->originateprofile && newchannel->originateprofile->chan_name != 0)
                                strncpy(dstchannel,newchannel->originateprofile->chan_name,strlen(newchannel->originateprofile->chan_name));
                }
                
index 5b6541c6c790540006e3b71d00aa314922acc6b5..d821e69a8fb0f76895b387387a822141c9c9f76f 100644 (file)
@@ -65,7 +65,7 @@ CsvCDR::CsvCDR(switch_mod_cdr_newchannel_t *newchannel) : BaseCDR(newchannel)
                
                // Format the times
                apr_size_t retsizecsd, retsizecad, retsizeced;  //csd == callstartdate, cad == callanswerdate, ced == callenddate, ceff == callenddate_forfile
-               char format[] = "%F %T";
+               char format[] = "%Y-%m-%d-%H-%M-%S";
                switch_strftime(formattedcallstartdate,&retsizecsd,sizeof(formattedcallstartdate),format,&tempcallstart);
                switch_strftime(formattedcallanswerdate,&retsizecad,sizeof(formattedcallanswerdate),format,&tempcallanswer);
                switch_strftime(formattedcallenddate,&retsizeced,sizeof(formattedcallenddate),format,&tempcallend);
@@ -193,7 +193,7 @@ void CsvCDR::open_file()
        switch_time_exp_lt(&now_converted,now);
                
        apr_size_t retsize;             
-       char format[] = "%F %T";
+       char format[] = "%Y-%m-%d-%H-%M-%S";
        char formatteddate[100];
        memset(formatteddate,0,100);
        switch_strftime(formatteddate,&retsize,100,format,&now_converted);
index 8f39ede6d3f50de36ae562d5ab00054ba2a1c763..ae49d0957cc3cd88268162f5b283fefd02d8d22c 100644 (file)
@@ -60,7 +60,7 @@ PddCDR::PddCDR(switch_mod_cdr_newchannel_t *newchannel) : BaseCDR(newchannel)
                
                // Format the times
                size_t retsizecsd, retsizecad, retsizeced; //csd == callstartdate, cad == callanswerdate, ced == callenddate, ceff == callenddate_forfile
-               char format[] = "%F %T";
+               char format[] = "%Y-%m-%d-%H-%M-%S";
                switch_strftime(formattedcallstartdate,&retsizecsd,sizeof(formattedcallstartdate),format,&tempcallstart);
                switch_strftime(formattedcallanswerdate,&retsizecad,sizeof(formattedcallanswerdate),format,&tempcallanswer);
                switch_strftime(formattedcallenddate,&retsizeced,sizeof(formattedcallenddate),format,&tempcallend);