From 30d7131076c25dcf98893314a2ab11e2bf2b42c9 Mon Sep 17 00:00:00 2001 From: MelwareDE Date: Fri, 13 Aug 2010 21:36:12 +0000 Subject: [PATCH] Asterissk 1.8 --- chan_capi_qsig_core.c | 2 +- chan_capi_qsig_ecma.c | 13 ++++++++++++- chan_capi_qsig_ecma.h | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/chan_capi_qsig_core.c b/chan_capi_qsig_core.c index c7ca870..faf907f 100644 --- a/chan_capi_qsig_core.c +++ b/chan_capi_qsig_core.c @@ -1003,7 +1003,7 @@ unsigned int cc_qsig_add_call_setup_data(unsigned char *data, struct capi_pvt *i } cc_qsig_build_facility_struct(data, &dataidx, protocolvar, APDUINTERPRETATION_IGNORE, &nfe); - cc_qsig_encode_ecma_name_invoke(data, &dataidx, &invoke, i, 0, i->owner->cid.cid_name); + cc_qsig_encode_ecma_name_invoke(data, &dataidx, &invoke, i, 0, pbx_capi_get_callername (i->owner)); cc_qsig_add_invoke(data, &dataidx, &invoke, i); if (add_externalinfo) { diff --git a/chan_capi_qsig_ecma.c b/chan_capi_qsig_ecma.c index 3cb2db8..9150994 100644 --- a/chan_capi_qsig_ecma.c +++ b/chan_capi_qsig_ecma.c @@ -75,7 +75,11 @@ void cc_qsig_op_ecma_isdn_namepres(struct cc_qsig_invokedata *invoke, struct cap switch (invoke->type) { case 0: /* Calling Name */ +#ifdef CC_AST_HAS_VERSION_1_8 + ast_set_callerid(i->owner, NULL, callername, NULL); +#else i->owner->cid.cid_name = strdup(callername); /* Save name to callerid */ +#endif break; case 1: /* Called Name */ case 2: /* Connected Name */ @@ -112,7 +116,7 @@ void cc_qsig_op_ecma_isdn_namepres(struct cc_qsig_invokedata *invoke, struct cap * returns * always 0 */ -int cc_qsig_encode_ecma_name_invoke(unsigned char * buf, unsigned int *idx, struct cc_qsig_invokedata *invoke, struct capi_pvt *i, int nametype, char * name) +int cc_qsig_encode_ecma_name_invoke(unsigned char * buf, unsigned int *idx, struct cc_qsig_invokedata *invoke, struct capi_pvt *i, int nametype, const char * name) { unsigned char namebuf[51]; unsigned char data[255]; @@ -408,10 +412,17 @@ void cc_qsig_encode_ecma_calltransfer(unsigned char * buf, unsigned int *idx, st if (ii) { /* send callers name to user B */ +#ifdef CC_AST_HAS_VERSION_1_8 + if (ii->owner->caller.id.name.valid ) { + name = ast_strdupa(S_COR(ii->owner->caller.id.name.valid, ii->owner->caller.id.name.str, "")); + namelength = strlen(name); + } +#else if (ii->owner->cid.cid_name) { name = ast_strdupa(ii->owner->cid.cid_name); namelength = strlen(name); } +#endif } } else { /* have to build first facility - send destination number back to inbound channel */ struct capi_pvt *ii = capi_find_interface_by_plci(i->qsig_data.partner_plci); diff --git a/chan_capi_qsig_ecma.h b/chan_capi_qsig_ecma.h index 65449a0..9585ab9 100644 --- a/chan_capi_qsig_ecma.h +++ b/chan_capi_qsig_ecma.h @@ -53,7 +53,7 @@ struct cc_qsig_ccbsreq { */ extern void cc_qsig_op_ecma_isdn_namepres(struct cc_qsig_invokedata *invoke, struct capi_pvt *i); -extern int cc_qsig_encode_ecma_name_invoke(unsigned char * buf, unsigned int *idx, struct cc_qsig_invokedata *invoke, struct capi_pvt *i, int nametype, char *name); +extern int cc_qsig_encode_ecma_name_invoke(unsigned char * buf, unsigned int *idx, struct cc_qsig_invokedata *invoke, struct capi_pvt *i, int nametype, const char *name); extern int cc_qsig_encode_ecma_isdn_leginfo3_invoke(unsigned char * buf, unsigned int *idx, struct cc_qsig_invokedata *invoke, struct capi_pvt *i, char *name);