diff options
author | crichter <crichter@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-05-18 09:50:33 +0000 |
---|---|---|
committer | crichter <crichter@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-05-18 09:50:33 +0000 |
commit | 61a69abf96d7dd29836fe40c8c605fdbc8bd8cfc (patch) | |
tree | 810cbdd6443dc36f13da497e53d7ce8ce657236c /channels/chan_misdn.c | |
parent | a79e9520c800b6b385715ca6c4dfd632d9937f4a (diff) |
Merged revisions 62912 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
................
r62912 | crichter | 2007-05-03 16:36:32 +0200 (Do, 03 Mai 2007) | 17 lines
Merged revisions 61357,61770,62885 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r61357 | crichter | 2007-04-11 14:05:57 +0200 (Mi, 11 Apr 2007) | 1 line
some fixes for PMP Hold/Retrieve, it should work now, when briding=no
........
r61770 | crichter | 2007-04-24 15:50:05 +0200 (Di, 24 Apr 2007) | 1 line
added lock for sending messages to avoid double sending. shuffled some empty_chans after the cb_event calls, this avoids that a release_complete from a quite different call releases a fresh created setup by accident.
........
r62885 | crichter | 2007-05-03 15:59:00 +0200 (Do, 03 Mai 2007) | 1 line
fixed the problem that misdn_write did not return -1 when called with 0 samples in a frame this resultet in a deadlock in some circumstances, when the call ended because of a busy extension. added encoding of keypad.
........
................
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@64955 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_misdn.c')
-rw-r--r-- | channels/chan_misdn.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c index 2b759d203..3fa63317b 100644 --- a/channels/chan_misdn.c +++ b/channels/chan_misdn.c @@ -1124,8 +1124,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" " --> hold_port: %d\n" " --> hold_channel: %d\n" @@ -2621,7 +2621,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; } @@ -4625,7 +4626,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); |