@ -64,6 +64,8 @@ static int callerid_read(struct ast_channel *chan, char *cmd, char *data,
ast_log ( LOG_ERROR , " Unknown callerid data type '%s'. \n " , data ) ;
}
} else {
ast_channel_lock ( chan ) ;
if ( ! strncasecmp ( " all " , data , 3 ) ) {
snprintf ( buf , len , " \" %s \" <%s> " ,
S_OR ( chan - > cid . cid_name , " " ) ,
@ -92,6 +94,8 @@ static int callerid_read(struct ast_channel *chan, char *cmd, char *data,
} else {
ast_log ( LOG_ERROR , " Unknown callerid data type '%s'. \n " , data ) ;
}
ast_channel_unlock ( chan ) ;
}
return 0 ;
@ -107,8 +111,8 @@ static int callerid_write(struct ast_channel *chan, char *cmd, char *data,
char name [ 256 ] ;
char num [ 256 ] ;
if ( ! ast_callerid_split ( value , name , sizeof ( name ) , num , sizeof ( num ) ) )
ast_set_callerid ( chan , num , name , num ) ;
if ( ! ast_callerid_split ( value , name , sizeof ( name ) , num , sizeof ( num ) ) )
ast_set_callerid ( chan , num , name , num ) ;
} else if ( ! strncasecmp ( " name " , data , 4 ) ) {
ast_set_callerid ( chan , NULL , value , NULL ) ;
} else if ( ! strncasecmp ( " num " , data , 3 ) | |
@ -117,15 +121,17 @@ static int callerid_write(struct ast_channel *chan, char *cmd, char *data,
} else if ( ! strncasecmp ( " ani " , data , 3 ) ) {
ast_set_callerid ( chan , NULL , NULL , value ) ;
} else if ( ! strncasecmp ( " dnid " , data , 4 ) ) {
/* do we need to lock chan here? */
ast_channel_lock ( chan ) ;
if ( chan - > cid . cid_dnid )
free ( chan - > cid . cid_dnid ) ;
chan - > cid . cid_dnid = ast_strdup ( value ) ;
ast_channel_unlock ( chan ) ;
} else if ( ! strncasecmp ( " rdnis " , data , 5 ) ) {
/* do we need to lock chan here? */
ast_channel_lock ( chan ) ;
if ( chan - > cid . cid_rdnis )
free ( chan - > cid . cid_rdnis ) ;
chan - > cid . cid_rdnis = ast_strdup ( value ) ;
ast_channel_unlock ( chan ) ;
} else {
ast_log ( LOG_ERROR , " Unknown callerid data type '%s'. \n " , data ) ;
}