diff options
Diffstat (limited to 'channels/misdn')
-rw-r--r-- | channels/misdn/isdn_lib.c | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/channels/misdn/isdn_lib.c b/channels/misdn/isdn_lib.c index 91a854b59..aa0277efc 100644 --- a/channels/misdn/isdn_lib.c +++ b/channels/misdn/isdn_lib.c @@ -183,7 +183,9 @@ struct misdn_lib { void misdn_tx_jitter(struct misdn_bchannel *bc, int len); struct misdn_bchannel *find_bc_by_l3id(struct misdn_stack *stack, unsigned long l3id); + struct misdn_bchannel *find_bc_by_confid(unsigned long confid); + struct misdn_bchannel *stack_holder_find_bychan(struct misdn_stack *stack, int chan); int setup_bc(struct misdn_bchannel *bc); @@ -824,14 +826,13 @@ static int create_process (int midev, struct misdn_bchannel *bc) { int l3_id; int i; struct misdn_stack *stack=get_stack_by_bc(bc); - int free_chan; if (stack->nt) { - free_chan = find_free_chan_in_stack(stack, bc, bc->channel_preselected?bc->channel:0); - if (!free_chan) return -1; + if (!find_free_chan_in_stack(stack, bc, bc->channel_preselected ? bc->channel : 0)) + return -1; /*bc->channel=free_chan;*/ - cb_log(4,stack->port, " --> found channel: %d\n",free_chan); + cb_log(4,stack->port, " --> found channel: %d\n", bc->channel); for (i=0; i <= MAXPROCS; i++) if (stack->procids[i]==0) break; @@ -857,10 +858,10 @@ static int create_process (int midev, struct misdn_bchannel *bc) { } else { if (stack->ptp || bc->te_choose_channel) { /* we know exactly which channels are in use */ - free_chan = find_free_chan_in_stack(stack, bc, bc->channel_preselected?bc->channel:0); - if (!free_chan) return -1; + if (!find_free_chan_in_stack(stack, bc, bc->channel_preselected ? bc->channel : 0)) + return -1; /*bc->channel=free_chan;*/ - cb_log(2,stack->port, " --> found channel: %d\n",free_chan); + cb_log(2,stack->port, " --> found channel: %d\n", bc->channel); } else { /* other phones could have made a call also on this port (ptmp) */ bc->channel=0xff; @@ -1496,8 +1497,7 @@ static int handle_event ( struct misdn_bchannel *bc, enum event_e event, iframe_ { if (bc->channel == 0xff) { - bc->channel=find_free_chan_in_stack(stack, bc, 0); - if (!bc->channel) { + if (!find_free_chan_in_stack(stack, bc, 0)) { cb_log(0, stack->port, "Any Channel Requested, but we have no more!!\n"); break; } @@ -1799,9 +1799,7 @@ handle_event_nt(void *dat, void *arg) bc->l3_id=hh->dinfo; if (bc->channel<=0) { - bc->channel=find_free_chan_in_stack(stack,0,0); - - if (bc->channel<=0) + if (!find_free_chan_in_stack(stack, bc, 0)) goto ERR_NO_CHANNEL; } } @@ -2040,8 +2038,7 @@ handle_event_nt(void *dat, void *arg) } else { - bc->channel = find_free_chan_in_stack(stack, bc, 0); - if (!bc->channel) { + if (!find_free_chan_in_stack(stack, bc, 0)) { cb_log(0, stack->port, " No free channel at the moment\n"); msg_t *dmsg; @@ -3230,8 +3227,7 @@ int misdn_lib_send_event(struct misdn_bchannel *bc, enum event_e event ) if (stack->nt) { if (bc->channel <=0 ) { /* else we have the channel already */ - bc->channel = find_free_chan_in_stack(stack, bc, 0); - if (!bc->channel) { + if (!find_free_chan_in_stack(stack, bc, 0)) { cb_log(0, stack->port, " No free channel at the moment\n"); err=-ENOCHAN; |