void ast_set_callerid(struct ast_channel *chan, const char *callerid, const char *calleridname, const char *ani) { if (callerid) { if (chan->cid.cid_num) free(chan->cid.cid_num); if (ast_strlen_zero(callerid)) chan->cid.cid_num = NULL; else chan->cid.cid_num = strdup(callerid); } if (calleridname) { if (chan->cid.cid_name) free(chan->cid.cid_name); if (ast_strlen_zero(calleridname)) chan->cid.cid_name = NULL; else chan->cid.cid_name = strdup(calleridname); } if (ani) { if (chan->cid.cid_ani) free(chan->cid.cid_ani); if (ast_strlen_zero(ani)) chan->cid.cid_ani = NULL; else chan->cid.cid_ani = strdup(ani); } if (chan->cdr) ast_cdr_setcid(chan->cdr, chan); manager_event(EVENT_FLAG_CALL, "Newcallerid", "Channel: %s\r\n" "Callerid: %s\r\n" "CalleridName: %s\r\n" "Uniqueid: %s\r\n", chan->name, chan->cid.cid_num ? chan->cid.cid_num : "", chan->cid.cid_name ? chan->cid.cid_name : "", chan->uniqueid); }