diff options
author | jeremy <jeremy@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-06-15 20:56:06 +0000 |
---|---|---|
committer | jeremy <jeremy@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-06-15 20:56:06 +0000 |
commit | 6a2cecd06c08f9709ad1f6b00b7a3a3df94cee78 (patch) | |
tree | a801fd2c3cdc95ff9a4174bc12e1c3237fe120b4 /channels/chan_h323.c | |
parent | 9af3a68d8798cb0282395503d60c4bb5b799fc5d (diff) |
check to make sure the extension exists b4 actually accepting the call and lets hope this gives Open H.323 enough time to sync up (bug #1714)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3220 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_h323.c')
-rwxr-xr-x | channels/chan_h323.c | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/channels/chan_h323.c b/channels/chan_h323.c index ae1a6bbf2..e016b4812 100755 --- a/channels/chan_h323.c +++ b/channels/chan_h323.c @@ -1007,7 +1007,7 @@ int setup_incoming_call(call_details_t cd) { struct oh323_pvt *p = NULL; - struct ast_channel *c = NULL; +/* struct ast_channel *c = NULL; */ struct oh323_user *user = NULL; struct oh323_alias *alias = NULL; @@ -1118,13 +1118,41 @@ int setup_incoming_call(call_details_t cd) } exit: +#if 0 /* allocate a channel and tell asterisk about it */ c = oh323_new(p, AST_STATE_RINGING, cd.call_token); if (!c) { ast_log(LOG_ERROR, "Couldn't create channel. This is bad\n"); return 0; } +#endif + return 1; +} +/** + * Call-back function to start PBX when OpenH323 ready to serve incoming call + * + * Returns 1 on success + */ +static int answer_call(unsigned call_reference) +{ + struct oh323_pvt *p = NULL; + struct ast_channel *c = NULL; + + /* Find the call or allocate a private structure if call not found */ + p = find_call(call_reference); + + if (!p) { + ast_log(LOG_ERROR, "Something is wrong: answer_call\n"); + return 0; + } + + /* allocate a channel and tell asterisk about it */ + c = oh323_new(p, AST_STATE_RINGING, p->cd.call_token); + if (!c) { + ast_log(LOG_ERROR, "Couldn't create channel. This is bad\n"); + return 0; + } return 1; } @@ -1857,7 +1885,8 @@ int load_module() cleanup_connection, chan_ringing, connection_made, - send_digit); + send_digit, + answer_call); /* start the h.323 listener */ |