Update of /usr/cvsroot/asterisk/channels
In directory mongoose.digium.com:/tmp/cvs-serv14433/channels

Modified Files:
        chan_h323.c 
Log Message:
Make capbilities be connection specific versus for the whole endpoint. Bug #4334

Index: chan_h323.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_h323.c,v
retrieving revision 1.115
retrieving revision 1.116
diff -u -d -r1.115 -r1.116
--- chan_h323.c 19 May 2005 16:17:08 -0000      1.115
+++ chan_h323.c 19 May 2005 19:12:22 -0000      1.116
@@ -83,6 +83,7 @@
 progress_cb on_progress;
 rfc2833_cb on_set_rfc2833_payload;
 hangup_cb on_hangup;
+setcapabilities_cb on_setcapabilities;
 
 /* global debug flag */
 int h323debug;
@@ -1014,9 +1015,7 @@
        else
                memcpy(&pvt->options, &global_options, sizeof(pvt->options));
 
-       /* pass on our capabilites to the H.323 stack */
        ast_mutex_lock(&caplock);
-       h323_set_capability(pvt->capability, pvt->dtmfmode);
        /* Generate unique channel identifier */
        snprintf(tmp1, sizeof(tmp1)-1, "%s-%u", host, ++unique);
        tmp1[sizeof(tmp1)-1] = '\0';
@@ -1511,6 +1510,26 @@
                ast_log(LOG_DEBUG, "DTMF payload on %s set to %d\n", token, 
payload);
 }
 
+static void set_local_capabilities(unsigned call_reference, const char *token)
+{
+       struct oh323_pvt *pvt;
+       int capability, dtmfmode;
+
+       if (h323debug)
+               ast_log(LOG_DEBUG, "Setting capabilities for connection %s\n", 
token);
+
+       pvt = find_call_locked(call_reference, token);
+       if (!pvt)
+               return;
+       capability = pvt->capability;
+       dtmfmode = pvt->dtmfmode;
+       ast_mutex_unlock(&pvt->lock);
+       h323_set_capabilities(token, capability, dtmfmode);
+
+       if (h323debug)
+               ast_log(LOG_DEBUG, "Capabilities for connection %s is set\n", 
token);
+}
+
 static void *do_monitor(void *data)
 {
        int res;
@@ -2160,14 +2179,6 @@
                alias = alias->next;
        }
 
-       /* Add our capabilities */
-       ast_mutex_lock(&caplock);
-       if (h323_set_capability(capability, dtmfmode)) {
-               ast_log(LOG_ERROR, "Capabilities failure, this is bad.\n");
-               ast_mutex_unlock(&caplock);
-               return -1;
-       }
-       ast_mutex_unlock(&caplock);
        return 0;
 }
 
@@ -2383,7 +2394,8 @@
                                                answer_call,
                                                progress,
                                                set_dtmf_payload,
-                                               hangup_connection);
+                                               hangup_connection,
+                                               set_local_capabilities);
                /* start the h.323 listener */
                if (h323_start_listener(h323_signalling_port, bindaddr)) {
                        ast_log(LOG_ERROR, "Unable to create H323 listener.\n");

_______________________________________________
Asterisk-Cvs mailing list
[email protected]
http://lists.digium.com/mailman/listinfo/asterisk-cvs

Reply via email to