]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
tweak
authorAnthony Minessale <anthony.minessale@gmail.com>
Thu, 22 May 2008 14:41:11 +0000 (14:41 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Thu, 22 May 2008 14:41:11 +0000 (14:41 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8522 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/endpoints/mod_sofia/mod_sofia.c
src/mod/endpoints/mod_sofia/sofia_reg.c

index 6724aa3d677135df8745aec2fc2d1285af048f2a..1b58333fce74cca46c897f9a3c3dc30d1d2a63f9 100644 (file)
@@ -1497,6 +1497,7 @@ SWITCH_STANDARD_API(sofia_contact_function)
        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 @@ SWITCH_STANDARD_API(sofia_contact_function)
                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_STANDARD_API(sofia_contact_function)
                        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) {
index b4c5ff777395dfb4323ba6f497c04bee3530e608..97d61355fa67ac1f0ff2e15b9d5223adcf7b5900 100644 (file)
@@ -704,9 +704,14 @@ uint8_t sofia_reg_handle_register(nua_t * nua, sofia_profile_t *profile, nua_han
 
        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);