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

FreeSWITCH SVN mrene at freeswitch.org
Fri Mar 27 18:50:36 PDT 2009


Author: mrene
Date: Fri Mar 27 20:50:36 2009
New Revision: 12818

Log:
Add sip_auth_username and sip_auth_password variables so mod_sofia can answer auth challenges without defining a full gateway

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

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 Mar 27 20:50:36 2009
@@ -1371,6 +1371,9 @@
 	int ss_state;
 	sofia_gateway_t *var_gateway = NULL;
 	const char *gw_name = NULL;
+	switch_channel_t *channel = switch_core_session_get_channel(session);
+	const char *sip_auth_username = switch_channel_get_variable(channel, "sip_auth_username");
+	const char *sip_auth_password = switch_channel_get_variable(channel, "sip_auth_password");
 
 	if (sofia_private && *sofia_private->auth_gateway_name) {
 		gw_name = sofia_private->auth_gateway_name;
@@ -1435,6 +1438,7 @@
 		}
 	}
 
+	
 
 
 	if (!(scheme && realm)) {
@@ -1442,13 +1446,15 @@
 		goto end;
 	}
 
-	if (!gateway) {
+	if (sip_auth_username && sip_auth_password) {
+		switch_snprintf(authentication, sizeof(authentication), "%s:%s:%s:%s", scheme, realm, sip_auth_username, sip_auth_password);
+	} else if (gateway) {
+		switch_snprintf(authentication, sizeof(authentication), "%s:%s:%s:%s", scheme, realm, gateway->auth_username, gateway->register_password);
+	} else {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No Matching gateway found\n");
-		goto cancel;
+		goto cancel;		
 	}
 
-	switch_snprintf(authentication, sizeof(authentication), "%s:%s:%s:%s", scheme, realm, gateway->auth_username, gateway->register_password);
-
 	if (profile->debug) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Authenticating '%s' with '%s'.\n", profile->username, authentication);
 	}
@@ -1457,7 +1463,7 @@
 
 	tl_gets(tags, NUTAG_CALLSTATE_REF(ss_state), SIPTAG_WWW_AUTHENTICATE_REF(authenticate), TAG_END());
 
-	nua_authenticate(nh, SIPTAG_EXPIRES_STR(gateway->expires_str), NUTAG_AUTH(authentication), TAG_END());
+	nua_authenticate(nh, SIPTAG_EXPIRES_STR(gateway ? gateway->expires_str : "3600"), NUTAG_AUTH(authentication), TAG_END());
 
 	goto end;
 



More information about the Freeswitch-svn mailing list