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

Freeswitch SVN anthm at freeswitch.org
Sun Nov 19 15:08:17 EST 2006


Author: anthm
Date: Sun Nov 19 15:08:16 2006
New Revision: 3415

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

Log:
update

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	Sun Nov 19 15:08:16 2006
@@ -4120,6 +4120,8 @@
 	char const *scheme = NULL;
 	int index;
 	char *cur;
+	char authentication[256] = "";
+	int ss_state;
 	
 	if (session) {
 		private_object_t *tech_pvt;
@@ -4129,6 +4131,15 @@
 		}
 	}
 
+	if (sofia_private && sofia_private->oreg) {
+		oreg = sofia_private->oreg;
+		if (oreg && status == 200) {
+			oreg->state = REG_STATE_REGISTER;
+			return;
+		}
+	}
+
+
 	if (status == 401 || status == 407) {
 		if (sip->sip_www_authenticate) {
 			authenticate = sip->sip_www_authenticate;
@@ -4152,13 +4163,8 @@
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No scheme and realm!\n");
 			return;
 		}
-	}
 
-
-	if (sofia_private) {
-		if (sofia_private->oreg) {
-			oreg = sofia_private->oreg;
-		} else if (profile) {
+		if (profile) {
 			outbound_reg_t *oregp;
 
 			if ((duprealm = strdup(realm))) {
@@ -4167,6 +4173,7 @@
 				while(*qrealm && *qrealm == '"') {
 					qrealm++;
 				}
+
 				if ((p = strchr(qrealm, '"'))) {
 					*p = '\0';
 				}
@@ -4186,38 +4193,23 @@
 				return;
 			}
 		}
-	}
-
-	if (!oreg) {
-		return;
-	}
-	
-	if (status == 200) {
-		oreg->state = REG_STATE_REGISTER;
-	} else if (authenticate) {
-		char authentication[256] = "";
-		int ss_state;
-
-		if (realm) {
-			snprintf(authentication, sizeof(authentication), "%s:%s:%s:%s", scheme, realm, 
-					 oreg->register_username,
-					 oreg->register_password);
 		
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Authenticating '%s' with '%s'.\n",
-							  profile->username, authentication);
+		snprintf(authentication, sizeof(authentication), "%s:%s:%s:%s", scheme, realm, 
+				 oreg->register_username,
+				 oreg->register_password);
 		
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Authenticating '%s' with '%s'.\n",
+						  profile->username, authentication);
 		
-			ss_state = nua_callstate_authenticating;
 		
-			tl_gets(tags,
-					NUTAG_CALLSTATE_REF(ss_state),
-					SIPTAG_WWW_AUTHENTICATE_REF(authenticate),
-					TAG_END());
+		ss_state = nua_callstate_authenticating;
 		
-
-
-			nua_authenticate(nh, SIPTAG_EXPIRES_STR(oreg->expires_str), NUTAG_AUTH(authentication), TAG_END());
-		}
+		tl_gets(tags,
+				NUTAG_CALLSTATE_REF(ss_state),
+				SIPTAG_WWW_AUTHENTICATE_REF(authenticate),
+				TAG_END());
+		
+		nua_authenticate(nh, SIPTAG_EXPIRES_STR(oreg->expires_str), NUTAG_AUTH(authentication), TAG_END());
 	}
 }
 



More information about the Freeswitch-svn mailing list