Merged revisions 57034,57523,57753,58558 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r57034 | crichter | 2007-02-28 17:09:27 +0100 (Mi, 28 Feb 2007) | 1 line

fixed bugs.digium.com bugs: #9157 and bugs.beronet.com bugs: #302, #303, #304
........
r57523 | crichter | 2007-03-02 19:32:51 +0100 (Fr, 02 Mar 2007) | 1 line

fixed typo
........
r57753 | crichter | 2007-03-04 11:39:50 +0100 (So, 04 Mar 2007) | 1 line

fixed another place where the out_cause was hardcoded to 16
........
r58558 | crichter | 2007-03-09 15:43:58 +0100 (Fr, 09 Mar 2007) | 1 line

we can free channel 31 as well, since we can occupy it
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@58826 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.4
Christian Richter 19 years ago
parent 160cfaf1c6
commit 5923e48d7f

@ -2261,12 +2261,8 @@ static int misdn_indication(struct ast_channel *ast, int cond, const void *data,
chan_misdn_log(1, p->bc->port, " --> * IND :\tcongestion pid:%d\n",p->bc?p->bc->pid:-1); chan_misdn_log(1, p->bc->port, " --> * IND :\tcongestion pid:%d\n",p->bc?p->bc->pid:-1);
p->bc->out_cause=42; p->bc->out_cause=42;
if (p->state != MISDN_CONNECTED) { start_bc_tones(p);
start_bc_tones(p); misdn_lib_send_event( p->bc, EVENT_DISCONNECT);
misdn_lib_send_event( p->bc, EVENT_RELEASE);
} else {
misdn_lib_send_event( p->bc, EVENT_DISCONNECT);
}
if (p->bc->nt) { if (p->bc->nt) {
hanguptone_indicate(p); hanguptone_indicate(p);
@ -3789,7 +3785,9 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
if ( stop_tone ) { if ( stop_tone ) {
stop_indicate(ch); stop_indicate(ch);
} }
if (!ch->ast) break;
if (ch->state == MISDN_WAITING4DIGS ) { if (ch->state == MISDN_WAITING4DIGS ) {
/* Ok, incomplete Setup, waiting till extension exists */ /* Ok, incomplete Setup, waiting till extension exists */
@ -4340,8 +4338,6 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
case EVENT_RELEASE: case EVENT_RELEASE:
{ {
bc->out_cause=16;
hangup_chan(ch); hangup_chan(ch);
release_chan(bc); release_chan(bc);

@ -463,7 +463,7 @@ static int find_free_chan_in_stack(struct misdn_stack *stack, struct misdn_bchan
static int empty_chan_in_stack(struct misdn_stack *stack, int channel) static int empty_chan_in_stack(struct misdn_stack *stack, int channel)
{ {
if (channel<=0 || channel>=MAX_BCHANS) { if (channel<=0 || channel>MAX_BCHANS) {
cb_log(0,stack?stack->port:0, "empty_chan_in_stack: cannot empty channel %d\n",channel); cb_log(0,stack?stack->port:0, "empty_chan_in_stack: cannot empty channel %d\n",channel);
return -1; return -1;
} }
@ -1534,8 +1534,10 @@ static int handle_event ( struct misdn_bchannel *bc, enum event_e event, iframe_
if (bc->channel>0) if (bc->channel>0)
empty_chan_in_stack(stack,bc->channel); empty_chan_in_stack(stack,bc->channel);
int tmpcause=bc->cause; int tmpcause=bc->cause;
int tmp_out_cause=bc->out_cause;
empty_bc(bc); empty_bc(bc);
bc->cause=tmpcause; bc->cause=tmpcause;
bc->out_cause=tmp_out_cause;
clean_up_bc(bc); clean_up_bc(bc);
break; break;
default: default:
@ -3331,8 +3333,10 @@ int misdn_lib_send_event(struct misdn_bchannel *bc, enum event_e event )
if (bc->channel>0) if (bc->channel>0)
empty_chan_in_stack(stack,bc->channel); empty_chan_in_stack(stack,bc->channel);
int tmpcause=bc->cause; int tmpcause=bc->cause;
int tmp_out_cause=bc->out_cause;
empty_bc(bc); empty_bc(bc);
bc->cause=tmpcause; bc->cause=tmpcause;
bc->out_cause=tmp_out_cause;
clean_up_bc(bc); clean_up_bc(bc);
} }
break; break;

Loading…
Cancel
Save