[Freeswitch-svn] [commit] r4987 - freeswitch/trunk/src/mod/endpoints/mod_sofia

Freeswitch SVN anthm at freeswitch.org
Fri Apr 20 12:05:37 EDT 2007


Author: anthm
Date: Fri Apr 20 12:05:37 2007
New Revision: 4987

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
   freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c

Log:
change flow and name of new paramater

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	Fri Apr 20 12:05:37 2007
@@ -955,7 +955,6 @@
 		char *gw;
 		outbound_reg_t *gateway_ptr;
 
-
 		if (!(gw = strchr(profile_name, '/'))) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid URL\n");
 			switch_core_session_destroy(&nsession);
@@ -982,7 +981,7 @@
 		}
 
 		profile = gateway_ptr->profile;
-		if (gateway_ptr->force_fromuser) {
+		if (!switch_test_flag(gateway_ptr, REG_FLAG_CALLERID)) {
 			tech_pvt->gateway_from_str = switch_core_session_strdup(nsession, gateway_ptr->register_from);
 		}
 		if (!strchr(dest, '@')) {

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h	Fri Apr 20 12:05:37 2007
@@ -157,6 +157,7 @@
 
 typedef enum {
 	REG_FLAG_AUTHED = (1 << 0),
+	REG_FLAG_CALLERID = (1 << 1)
 } reg_flags_t;
 
 typedef enum {
@@ -178,7 +179,6 @@
 	char *register_realm;
 	char *register_username;
 	char *register_password;
-	switch_bool_t force_fromuser;
 	char *register_from;
 	char *register_contact;
 	char *register_to;

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	Fri Apr 20 12:05:37 2007
@@ -680,7 +680,13 @@
 						if ((gateway = switch_core_alloc(profile->pool, sizeof(*gateway)))) {
 							char *register_str = "true", *scheme = "Digest",
 								*realm = NULL,
-								*username = NULL, *password = NULL, *force_fromuser = "false", *extension = NULL, *proxy = NULL, *context = "default", *expire_seconds = "3600";
+								*username = NULL,
+								*password = NULL,
+								*caller_id_in_from = "false",
+								*extension = NULL,
+								*proxy = NULL,
+								*context = "default",
+								*expire_seconds = "3600";
 
 							gateway->pool = profile->pool;
 							gateway->profile = profile;
@@ -702,8 +708,8 @@
 									username = val;
 								} else if (!strcmp(var, "password")) {
 									password = val;
-								} else if (!strcmp(var, "force-fromuser")) {
-									force_fromuser = val;
+								} else if (!strcmp(var, "caller-id-in-from")) {
+									caller_id_in_from = val;
 								} else if (!strcmp(var, "extension")) {
 									extension = val;
 								} else if (!strcmp(var, "proxy")) {
@@ -747,7 +753,9 @@
 							gateway->register_realm = switch_core_strdup(gateway->pool, realm);
 							gateway->register_username = switch_core_strdup(gateway->pool, username);
 							gateway->register_password = switch_core_strdup(gateway->pool, password);
-							gateway->force_fromuser = switch_true(force_fromuser);
+							if (switch_true(caller_id_in_from)) {
+								switch_set_flag(gateway, REG_FLAG_CALLERID);
+							}
 							gateway->register_from = switch_core_sprintf(gateway->pool, "sip:%s@%s", username, realm);
 							gateway->register_contact = switch_core_sprintf(gateway->pool, "sip:%s@%s:%d", extension, profile->sipip, profile->sip_port);
 

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c	Fri Apr 20 12:05:37 2007
@@ -636,12 +636,12 @@
 
 			if (!gateway) {
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No Match for Scheme [%s] Realm [%s]\n", scheme, qrealm);
-				return;
+				goto cancel;
 			}
 			switch_safe_free(duprealm);
 		} else {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Memory Error!\n");
-			return;
+			goto cancel;
 		}
 	}
 
@@ -656,6 +656,16 @@
 
 	nua_authenticate(nh, SIPTAG_EXPIRES_STR(gateway->expires_str), NUTAG_AUTH(authentication), TAG_END());
 
+	return;
+
+ cancel:
+	if (session) {
+		switch_channel_t *channel = switch_core_session_get_channel(session);
+		switch_channel_hangup(channel, SWITCH_CAUSE_MANDATORY_IE_MISSING);
+	} else {
+		nua_cancel(nh, TAG_END());
+	}
+	
 }
 
 auth_res_t parse_auth(sofia_profile_t *profile, sip_authorization_t const *authorization, const char *regstr, char *np, size_t nplen)



More information about the Freeswitch-svn mailing list