From: Christian Richter Date: Wed, 11 Apr 2007 12:05:57 +0000 (+0000) Subject: some fixes for PMP Hold/Retrieve, it should work now, when briding=no X-Git-Tag: 1.2.18~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=104b12df7964e4aa8da05a0fe2989c1cea8518ec;p=thirdparty%2Fasterisk.git some fixes for PMP Hold/Retrieve, it should work now, when briding=no git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@61357 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c index 72928717d4..0adf42380c 100644 --- a/channels/chan_misdn.c +++ b/channels/chan_misdn.c @@ -821,8 +821,8 @@ static int misdn_show_cls (int fd, int argc, char *argv[]) print_bc_info(fd, help, bc); } else { if (help->state == MISDN_HOLDED) { - chan_misdn_log(2, 0, "ITS A HOLDED BC:\n"); - chan_misdn_log(2,0," --> l3_id: %x\n" + ast_cli(fd, "ITS A HOLDED BC:\n"); + ast_cli(fd, " --> l3_id: %x\n" " --> dad:%s oad:%s\n" ,help->l3id @@ -2238,7 +2238,8 @@ static struct ast_frame *misdn_read(struct ast_channel *ast) chan_misdn_log(1,0,"misdn_read called without ast->pvt\n"); return NULL; } - if (!tmp->bc) { + + if (!tmp->bc && !(tmp->state==MISDN_HOLDED)) { chan_misdn_log(1,0,"misdn_read called without bc\n"); return NULL; } @@ -4140,7 +4141,11 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data) /***************************/ case EVENT_RETRIEVE: { - ch=find_holded_l3(cl_te, bc->l3_id,1); + if (!ch) { + chan_misdn_log(4, bc->port, " --> no CH, searching in holded"); + ch=find_holded_l3(cl_te, bc->l3_id,1); + } + if (!ch) { ast_log(LOG_WARNING, "Found no Holded channel, cannot Retrieve\n"); misdn_lib_send_event(bc, EVENT_RETRIEVE_REJECT); diff --git a/channels/misdn/isdn_lib.c b/channels/misdn/isdn_lib.c index 194b07bd75..5f2d847c54 100644 --- a/channels/misdn/isdn_lib.c +++ b/channels/misdn/isdn_lib.c @@ -1816,7 +1816,7 @@ handle_event_nt(void *dat, void *arg) return 0; } - cb_log(7, stack->port, " --> new_process: New L3Id: %x\n",hh->dinfo); + cb_log(4, stack->port, " --> new_process: New L3Id: %x\n",hh->dinfo); bc->l3_id=hh->dinfo; } @@ -3291,10 +3291,11 @@ int misdn_lib_send_event(struct misdn_bchannel *bc, enum event_e event ) if (bc->bc_state == BCHAN_BRIDGED) { misdn_split_conf(bc,bc->conf_id); struct misdn_bchannel *bc2=find_bc_by_confid(bc->conf_id); - if (!bc2) + if (!bc2) { cb_log(0,bc->port,"We have no second bc in bridge???\n"); - else + } else { misdn_split_conf(bc2,bc->conf_id); + } } if (bc->channel>0)