From 3e05fd297b7f13581e41e78ccc144e6540d21934 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 24 Nov 2008 23:12:36 +0000 Subject: [PATCH] fix LBDING-7 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10530 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- libs/libdingaling/src/libdingaling.c | 55 +++++++++++++----------- src/mod/endpoints/mod_sofia/sofia_glue.c | 6 ++- 2 files changed, 34 insertions(+), 27 deletions(-) diff --git a/libs/libdingaling/src/libdingaling.c b/libs/libdingaling/src/libdingaling.c index 3736a934d0..ebfe6b833f 100644 --- a/libs/libdingaling/src/libdingaling.c +++ b/libs/libdingaling/src/libdingaling.c @@ -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); + assert(handle != NULL); + + if (body) { + if (strchr(body, '<')) { + len = (int) strlen(body); + if (!(bdup = malloc(len))) { + abort(); + } + + memset(bdup, 0, len); - e = bdup; - for(t = my_body; *t; t++) { - if (*t == '<') { - on = 1; - } else if (*t == '>') { - t++; - on = 0; - } + 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; diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 34f57fb183..0bc4da182b 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -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) {