diff options
author | jeremy <jeremy@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-07-17 19:38:30 +0000 |
---|---|---|
committer | jeremy <jeremy@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-07-17 19:38:30 +0000 |
commit | 2e12cb472384a279a33056b889825cfd64336f10 (patch) | |
tree | 1cf265ad477f9938a00ce02e66f84998226810c8 | |
parent | 2423ab16e6092fa73c121d9a952a2d4750dab760 (diff) |
actually implement the setting of noFastStart and noH245Tunneling.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3459 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-x | channels/chan_h323.c | 15 | ||||
-rwxr-xr-x | channels/h323/ast_h323.cpp | 14 | ||||
-rwxr-xr-x | channels/h323/chan_h323.h | 23 |
3 files changed, 34 insertions, 18 deletions
diff --git a/channels/chan_h323.c b/channels/chan_h323.c index db379a125..db2ec980f 100755 --- a/channels/chan_h323.c +++ b/channels/chan_h323.c @@ -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; } diff --git a/channels/h323/ast_h323.cpp b/channels/h323/ast_h323.cpp index c10f17a87..d67e95fd3 100755 --- a/channels/h323/ast_h323.cpp +++ b/channels/h323/ast_h323.cpp @@ -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()); diff --git a/channels/h323/chan_h323.h b/channels/h323/chan_h323.h index e45d3c4dc..bfdd0dd82 100755 --- a/channels/h323/chan_h323.h +++ b/channels/h323/chan_h323.h @@ -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); |