actually implement the setting of noFastStart and noH245Tunneling.
authorJeremy McNamara <jj@nufone.net>
Sat, 17 Jul 2004 19:38:30 +0000 (19:38 +0000)
committerJeremy McNamara <jj@nufone.net>
Sat, 17 Jul 2004 19:38:30 +0000 (19:38 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3459 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_h323.c
channels/h323/ast_h323.cpp
channels/h323/chan_h323.h

index db379a1..db2ec98 100755 (executable)
@@ -100,6 +100,9 @@ static int  usingGk;
 static int  port = 1720;
 static int  gkroute = 0;
 
+static int noFastStart = 1;
+static int noH245Tunneling = 0;
+
 /* to find user by alias is default, alternative is the incomming call's source IP address*/
 static int  userbyalias = 1;
 
@@ -486,6 +489,9 @@ static int oh323_call(struct ast_channel *c, char *dest, int timeout)
                 }
         }
 
+       p->calloptions.noFastStart = noFastStart;
+       p->calloptions.noH245Tunneling = noH245Tunneling;
+
        res = h323_make_call(called_addr, &(p->cd), p->calloptions);
 
        if (res) {
@@ -1141,6 +1147,7 @@ int setup_incoming_call(call_details_t cd)
                                strncpy(p->accountcode, user->accountcode, sizeof(p->accountcode)-1);
                        } 
 
+                       
                        /* Increment the usage counter */
                        user->inUse++;
                } 
@@ -1566,7 +1573,7 @@ int reload_config(void)
        
        /* fire up the H.323 Endpoint */       
        if (!h323_end_point_exist()) {
-              h323_end_point_create();        
+              h323_end_point_create(noFastStart,noH245Tunneling);        
        }
        h323debug=0;
        dtmfmode = H323_DTMF_RFC2833;
@@ -1644,7 +1651,11 @@ int reload_config(void)
                         userbyalias = ast_true(v->value);
                 } else if (!strcasecmp(v->name, "bridge")) {
                         bridge_default = ast_true(v->value);
-                }
+                } else if (!strcasecmp(v->name, "noFastStart")) {
+                                noFastStart = ast_true(v->value);
+                } else if (!strcasecmp(v->name, "noH245Tunneling")) {
+                                noH245Tunneling = ast_true(v->value);
+               }
                v = v->next;    
        }
        
index c10f17a..d67e95f 100755 (executable)
@@ -62,7 +62,7 @@ int mode = H323_DTMF_RFC2833;
 
 /** Options for connections creation */
 BOOL   noFastStart = TRUE;
-BOOL   noH245Tunnelling;
+BOOL   noH245Tunneling;
 BOOL   noSilenceSuppression;
 
 /**
@@ -479,7 +479,7 @@ H323Connection * MyH323EndPoint::CreateConnection(unsigned callReference, void *
        if (noFastStart)
                options |= H323Connection::FastStartOptionDisable;
 
-       if (noH245Tunnelling)
+       if (noH245Tunneling)
                options |= H323Connection::H245TunnelingOptionDisable;
 
        return new MyH323Connection(*this, callReference, options);
@@ -816,9 +816,13 @@ int h323_end_point_exist(void)
        return 1;
 }
     
-void h323_end_point_create(void)
+void h323_end_point_create(int no_fast_start, int no_h245_tunneling)
 {
        channelsOpen = 0;
+       
+       noFastStart = (BOOL)no_fast_start;
+       noH245Tunneling = (BOOL)no_h245_tunneling;
+
        localProcess = new MyProcess(); 
        localProcess->Main();
 }
@@ -1103,12 +1107,14 @@ int h323_make_call(char *host, call_details_t *cd, call_options_t call_options)
 {
        int res;
        PString token;
+       PString dest(host);
 
        if (!h323_end_point_exist()) {
                return 1;
        }
        
-       PString dest(host);
+       noFastStart =   call_options.noFastStart;
+       noH245Tunneling = call_options.noH245Tunneling;
 
        res = endPoint->MakeCall(dest, token, &cd->call_reference, call_options.port, call_options.callerid, call_options.callername);
        memcpy((char *)(cd->call_token), (const unsigned char *)token, token.GetLength());
index e45d3c4..bfdd0dd 100755 (executable)
@@ -57,16 +57,16 @@ struct oh323_user {
 struct oh323_peer {
        char name[80];
        char context[80];
-       int     noFastStart;
-       int     noH245Tunneling;
-       int     noSilenceSuppression;
-       int inUse;
-       int outgoinglimit;
-       int bridge;
-       int nat;
-       int dtmfmode;
-       struct sockaddr_in addr;
+       int  noFastStart;
+       int  noH245Tunneling;
+       int  noSilenceSuppression;
+       int  inUse;
+       int  outgoinglimit;
+       int  bridge;
+       int  nat;
+       int  dtmfmode;
        int delme;
+       struct sockaddr_in addr;
        struct oh323_peer *next;
 };
 
@@ -88,7 +88,7 @@ typedef struct call_options {
        char            *callerid;
        char            *callername;
        int             noFastStart;
-       int             noH245Tunnelling;
+       int             noH245Tunneling;
        int             noSilenceSuppression;
        unsigned int    port;
 } call_options_t;
@@ -98,7 +98,6 @@ typedef struct call_options {
        asterisk channels to acutal h.323 connections */
 typedef struct call_details {  
        unsigned int call_reference;
-
        const char *call_token;                         
        const char *call_source_aliases;
        const char *call_dest_alias;
@@ -167,7 +166,7 @@ extern "C" {
 #endif   
     
        void h323_gk_urq(void);
-       void h323_end_point_create(void);
+       void h323_end_point_create(int, int);
        void h323_end_process(void);
        int  h323_end_point_exist(void);