summaryrefslogtreecommitdiff
path: root/channels/chan_h323.c
diff options
context:
space:
mode:
authorJeremy McNamara <jj@nufone.net>2004-06-15 20:56:06 +0000
committerJeremy McNamara <jj@nufone.net>2004-06-15 20:56:06 +0000
commit1f4eadaf6a4840773cb44aa9be4ded233b72540f (patch)
treea801fd2c3cdc95ff9a4174bc12e1c3237fe120b4 /channels/chan_h323.c
parentada1e768c46a689636de407e0692ea742894fd1f (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: https://origsvn.digium.com/svn/asterisk/trunk@3220 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_h323.c')
-rwxr-xr-xchannels/chan_h323.c33
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 */