]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix LBDING-7
authorAnthony Minessale <anthony.minessale@gmail.com>
Mon, 24 Nov 2008 23:12:36 +0000 (23:12 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Mon, 24 Nov 2008 23:12:36 +0000 (23:12 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10530 d0543943-73ff-0310-b7d9-9358b9ac24b2

libs/libdingaling/src/libdingaling.c
src/mod/endpoints/mod_sofia/sofia_glue.c

index 3736a934d0bf6e8b60f4032c6f068660840f00da..ebfe6b833fe9ce3cb1475d64f3a6f1173412f56a 100644 (file)
@@ -1792,39 +1792,44 @@ void ldl_handle_send_vcard(ldl_handle_t *handle, char *from, char *to, char *id,
 void ldl_handle_send_msg(ldl_handle_t *handle, char *from, char *to, const char *subject, const char *body)
 {
        iks *msg;
-       char *t, *e;
+       const char *t;
+       char *e;
        char *bdup = NULL;
        int on = 0;
        int len = 0;
-       char *my_body = strdup(body);
+
        assert(handle != NULL);
-       assert(body != NULL);
-       
-       if (strchr(my_body, '<')) {
-               len = (int) strlen(my_body);
-               if (!(bdup = malloc(len))) {
-                       return;
-               }
 
-               memset(bdup, 0, len);
-               
-               e = bdup;
-               for(t = my_body; *t; t++) {
-                       if (*t == '<') {
-                               on = 1;
-                       } else if (*t == '>') {
-                               t++;
-                               on = 0;
+       if (body) {     
+               if (strchr(body, '<')) {
+                       len = (int) strlen(body);
+                       if (!(bdup = malloc(len))) {
+                               abort();
                        }
+
+                       memset(bdup, 0, len);
+               
+                       e = bdup;
+                       for(t = body; t && *t; t++) {
+                               if (*t == '<') {
+                                       on = 1;
+                               } else if (*t == '>') {
+                                       t++;
+                                       on = 0;
+                               }
                        
-                       if (!on) {
-                               *e++ = *t;
+                               if (!on) {
+                                       *e++ = *t;
+                               }
                        }
+                       body = bdup;
                }
-               my_body = bdup;
+       } else {
+               body = "";
        }
+
+       msg = iks_make_msg(IKS_TYPE_NONE, to, body);
        
-       msg = iks_make_msg(IKS_TYPE_NONE, to, my_body);
        iks_insert_attrib(msg, "type", "chat");
 
        if (!from) {
@@ -1840,9 +1845,7 @@ void ldl_handle_send_msg(ldl_handle_t *handle, char *from, char *to, const char
        if (bdup) {     
                free(bdup);
        }
-
-       free(my_body);
-
+       
        apr_queue_push(handle->queue, msg);
        msg = NULL;
        
index 34f57fb183e777ef4fad4951aa633b6e7d726685..0bc4da182b2c514a0ec0b3cfbbceb1507d2faff6 100644 (file)
@@ -1186,7 +1186,11 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
                   or did he just suggest it to make our lives miserable?
                 */
                use_from_str = from_str;
-               from_str = switch_core_session_sprintf(session, "\"%s\" <%s>", tech_pvt->caller_profile->caller_id_name, use_from_str);
+               if ((val = switch_channel_get_variable(tech_pvt->channel, "suppress_from_cidname")) && switch_true(val)) {
+                       from_str = switch_core_session_sprintf(session, "<%s>", use_from_str);
+               } else {
+                       from_str = switch_core_session_sprintf(session, "\"%s\" <%s>", tech_pvt->caller_profile->caller_id_name, use_from_str);
+               }
                
                if (!(call_id = switch_channel_get_variable(channel, "sip_outgoing_call_id"))) {
                        if (tech_pvt->profile->pflags & PFLAG_UUID_AS_CALLID) {