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

Freeswitch SVN anthm at freeswitch.org
Thu May 22 10:41:12 EDT 2008


Author: anthm
Date: Thu May 22 10:41:11 2008
New Revision: 8522

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

Log:
tweak

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	Thu May 22 10:41:11 2008
@@ -1497,6 +1497,7 @@
 	char *p;
 	sofia_profile_t *profile = NULL;
 	const char *exclude_contact = NULL;
+	char *reply = "";
 
 	if (!cmd) {
 		stream->write_function(stream, "%s", "");
@@ -1543,11 +1544,13 @@
 		if (profile) {
 			struct cb_helper cb;
 			switch_stream_handle_t mystream = { 0 };
+			
 			if (!domain || !strchr(domain, '.')) {
 				domain = profile->name;
 			}
 
 			SWITCH_STANDARD_STREAM(mystream);
+			switch_assert(mystream.data);
 			cb.profile = profile;
 			cb.stream = &mystream;
 			
@@ -1561,19 +1564,20 @@
 			switch_assert(sql);
 			sofia_glue_execute_sql_callback(profile, SWITCH_FALSE, profile->ireg_mutex, sql, contact_callback, &cb);
 			switch_safe_free(sql);
-			if (mystream.data) {
-				char *str = mystream.data;
-				*(str + (strlen(str) - 1)) = '\0';
+			reply = (char *) mystream.data;
+			if (!switch_strlen_zero(reply) && end_of(reply) == ',') {
+				end_of(reply) = '\0';
 			}
-			stream->write_function(stream, "%s", mystream.data);
+			stream->write_function(stream, "%s", reply);
+			reply = NULL;
 			switch_safe_free(mystream.data);
-			goto end;
 		}
 	}
 	
-	stream->write_function(stream, "%s", "");
+	if (reply) {
+		stream->write_function(stream, "%s", reply);
+	}
 
-end:
 	switch_safe_free(data);
 
 	if (profile) {

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	Thu May 22 10:41:11 2008
@@ -704,9 +704,14 @@
 
 	if (regtype == REG_REGISTER) {
 		char *new_contact = NULL;
+		char *p;
+
+		if ((p = strstr(contact_str, ";nat"))) {
+			*p = '\0';
+		}
 
 		if (exptime) {
-			if (nat_hack) {
+			if (is_nat || nat_hack) {
 				new_contact = switch_mprintf("%s;expires=%ld;received=\"%s:%d\"", contact_str, (long)exptime, network_ip, network_port);
 			} else {
 				new_contact = switch_mprintf("%s;expires=%ld", contact_str, (long)exptime);



More information about the Freeswitch-svn mailing list