make mod cdr work on windows, and make it segfault less.

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@2279 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Michael Jerris 2006-08-13 04:41:40 +00:00
parent eaa28d3ea9
commit c0be28d911
3 changed files with 40 additions and 34 deletions

View File

@ -82,6 +82,7 @@ BaseCDR::BaseCDR(switch_mod_cdr_newchannel_t *newchannel)
callanswerdate = newchannel->timetable->answered; callanswerdate = newchannel->timetable->answered;
callenddate = newchannel->timetable->hungup; callenddate = newchannel->timetable->hungup;
if (newchannel->callerprofile) {
if(newchannel->callerprofile->caller_id_name != 0) if(newchannel->callerprofile->caller_id_name != 0)
{ {
strncpy(clid,newchannel->callerprofile->caller_id_name,strlen(newchannel->callerprofile->caller_id_name)); strncpy(clid,newchannel->callerprofile->caller_id_name,strlen(newchannel->callerprofile->caller_id_name));
@ -102,29 +103,34 @@ BaseCDR::BaseCDR(switch_mod_cdr_newchannel_t *newchannel)
if(newchannel->callerprofile->network_addr != 0) if(newchannel->callerprofile->network_addr != 0)
strncpy(network_addr,newchannel->callerprofile->network_addr,strlen(newchannel->callerprofile->network_addr)); strncpy(network_addr,newchannel->callerprofile->network_addr,strlen(newchannel->callerprofile->network_addr));
}
originated = newchannel->originate; originated = newchannel->originate;
if(newchannel->originateprofile->uuid != 0) if(newchannel->originateprofile && newchannel->originateprofile->uuid != 0)
strncpy(destuuid,newchannel->originateprofile->uuid,strlen(newchannel->originateprofile->uuid)); strncpy(destuuid,newchannel->originateprofile->uuid,strlen(newchannel->originateprofile->uuid));
// We still need to check if this is originated or not // We still need to check if this is originated or not
if(originated == 0) if(originated == 0)
{ {
if (newchannel->callerprofile) {
if(newchannel->callerprofile->destination_number != 0) if(newchannel->callerprofile->destination_number != 0)
strncpy(src,newchannel->callerprofile->destination_number,strlen(newchannel->callerprofile->destination_number)); strncpy(src,newchannel->callerprofile->destination_number,strlen(newchannel->callerprofile->destination_number));
if(newchannel->callerprofile->caller_id_number != 0) if(newchannel->callerprofile->caller_id_number != 0)
strncpy(dst,newchannel->callerprofile->caller_id_number,strlen(newchannel->callerprofile->caller_id_number)); strncpy(dst,newchannel->callerprofile->caller_id_number,strlen(newchannel->callerprofile->caller_id_number));
if(newchannel->originateprofile->chan_name != 0) }
if(newchannel->originateprofile && newchannel->originateprofile->chan_name != 0)
strncpy(dstchannel,newchannel->originateprofile->chan_name,strlen(newchannel->originateprofile->chan_name)); strncpy(dstchannel,newchannel->originateprofile->chan_name,strlen(newchannel->originateprofile->chan_name));
} }
else else
{ {
if (newchannel->callerprofile) {
if(newchannel->callerprofile->caller_id_number != 0) if(newchannel->callerprofile->caller_id_number != 0)
strncpy(src,newchannel->callerprofile->caller_id_number,strlen(newchannel->callerprofile->caller_id_number)); strncpy(src,newchannel->callerprofile->caller_id_number,strlen(newchannel->callerprofile->caller_id_number));
if(newchannel->callerprofile->destination_number != 0) if(newchannel->callerprofile->destination_number != 0)
strncpy(dst,newchannel->callerprofile->destination_number,strlen(newchannel->callerprofile->destination_number)); strncpy(dst,newchannel->callerprofile->destination_number,strlen(newchannel->callerprofile->destination_number));
if(newchannel->originateprofile->chan_name != 0) }
if(newchannel->originateprofile && newchannel->originateprofile->chan_name != 0)
strncpy(dstchannel,newchannel->originateprofile->chan_name,strlen(newchannel->originateprofile->chan_name)); strncpy(dstchannel,newchannel->originateprofile->chan_name,strlen(newchannel->originateprofile->chan_name));
} }

View File

@ -65,7 +65,7 @@ CsvCDR::CsvCDR(switch_mod_cdr_newchannel_t *newchannel) : BaseCDR(newchannel)
// Format the times // Format the times
apr_size_t retsizecsd, retsizecad, retsizeced; //csd == callstartdate, cad == callanswerdate, ced == callenddate, ceff == callenddate_forfile 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(formattedcallstartdate,&retsizecsd,sizeof(formattedcallstartdate),format,&tempcallstart);
switch_strftime(formattedcallanswerdate,&retsizecad,sizeof(formattedcallanswerdate),format,&tempcallanswer); switch_strftime(formattedcallanswerdate,&retsizecad,sizeof(formattedcallanswerdate),format,&tempcallanswer);
switch_strftime(formattedcallenddate,&retsizeced,sizeof(formattedcallenddate),format,&tempcallend); switch_strftime(formattedcallenddate,&retsizeced,sizeof(formattedcallenddate),format,&tempcallend);
@ -193,7 +193,7 @@ void CsvCDR::open_file()
switch_time_exp_lt(&now_converted,now); switch_time_exp_lt(&now_converted,now);
apr_size_t retsize; apr_size_t retsize;
char format[] = "%F %T"; char format[] = "%Y-%m-%d-%H-%M-%S";
char formatteddate[100]; char formatteddate[100];
memset(formatteddate,0,100); memset(formatteddate,0,100);
switch_strftime(formatteddate,&retsize,100,format,&now_converted); switch_strftime(formatteddate,&retsize,100,format,&now_converted);

View File

@ -60,7 +60,7 @@ PddCDR::PddCDR(switch_mod_cdr_newchannel_t *newchannel) : BaseCDR(newchannel)
// Format the times // Format the times
size_t retsizecsd, retsizecad, retsizeced; //csd == callstartdate, cad == callanswerdate, ced == callenddate, ceff == callenddate_forfile 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(formattedcallstartdate,&retsizecsd,sizeof(formattedcallstartdate),format,&tempcallstart);
switch_strftime(formattedcallanswerdate,&retsizecad,sizeof(formattedcallanswerdate),format,&tempcallanswer); switch_strftime(formattedcallanswerdate,&retsizecad,sizeof(formattedcallanswerdate),format,&tempcallanswer);
switch_strftime(formattedcallenddate,&retsizeced,sizeof(formattedcallenddate),format,&tempcallend); switch_strftime(formattedcallenddate,&retsizeced,sizeof(formattedcallenddate),format,&tempcallend);