From 18dcdf7052018028f98c109eae2c5ff3b9778c05 Mon Sep 17 00:00:00 2001 From: bagyenda <> Date: Wed, 26 Sep 2007 06:06:33 +0000 Subject: [PATCH] minor fix to mm7/soap composition --- mbuni/mmlib/mms_mm7soap.c | 43 +++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/mbuni/mmlib/mms_mm7soap.c b/mbuni/mmlib/mms_mm7soap.c index bb02aa6..3836cba 100644 --- a/mbuni/mmlib/mms_mm7soap.c +++ b/mbuni/mmlib/mms_mm7soap.c @@ -367,10 +367,10 @@ MSoapMsg_t *mm7_parse_soap(List *headers, Octstr *body) return smsg; } -static int append_address(Octstr *p, Octstr *addr_spec, char *prefix) +static int append_address(Octstr *p, Octstr *addr_spec, char *prefix, int add_type) { - Octstr *v = addr_spec; - char *y; + Octstr *v = addr_spec, *z; + char *y, *typ = ""; int j, ch = octstr_get_char(v, 0); if (ch == '-') y = " displayOnly=\"true\""; @@ -378,12 +378,21 @@ static int append_address(Octstr *p, Octstr *addr_spec, char *prefix) y = ""; j = octstr_case_search(v, octstr_imm("/TYPE=PLMN"),0); if (j >= 0) { - Octstr *z = octstr_copy(v, 2, j-2); /* skip the initial char that is only for info purposes. */ - octstr_format_append(p, "<%sNumber%s>%S\n", prefix, y, z, prefix); - octstr_destroy(z); - } else - octstr_format_append(p, "<%sRFC2822Address%s>%s\n", - prefix, y, octstr_get_cstr(v) + 2, prefix); /* as above... */ + z = octstr_copy(v, 2, j-2); /* skip the initial char that is only for info purposes. */ + typ = "Number"; + } else { + z = octstr_copy(v, 2, octstr_len(v)); + typ = "RFC2822Address"; + } + + octstr_strip_blanks(z); + if (add_type) + octstr_format_append(p, "<%s%s%s>%S\n", + prefix, typ, y, z, prefix, typ); /* as above... */ + else + octstr_append(p, z); + + octstr_destroy(z); return 0; } @@ -404,7 +413,7 @@ static void output_rcpt(char *hdr, List *hdrs, Octstr *p, char *prefix) octstr_format_append(p, "<%s%S>\n", prefix, h); } octstr_destroy(h); - append_address(p, v, prefix); /* put the address in */ + append_address(p, v, prefix,1); /* put the address in */ octstr_destroy(v); } if (x[0]) /* close it off. */ @@ -496,11 +505,8 @@ static Octstr *headers_to_soapxml(List *hdrs, MM7Version_t *ver) if (r) { Octstr *xx = octstr_create(""); - if (ver_compare(ver,&min_ver) > 0) - append_address(xx, r, prefix); - else if (octstr_get_char(r, 0) != '-') /* not display only. */ - octstr_format_append(xx, "%s", octstr_get_cstr(r) + 1); - + append_address(xx, r, prefix, + ver_compare(ver,&min_ver) > 0); if (octstr_len(xx) > 0) octstr_format_append(s, "<%sSenderAddress>%S\n", prefix, xx, prefix); octstr_destroy(xx); @@ -522,7 +528,7 @@ static Octstr *headers_to_soapxml(List *hdrs, MM7Version_t *ver) if (octstr_len(p) > 0) octstr_format_append(s, "<%sRecipients>\n%S\n", prefix, p, prefix); } else if ((q = http_header_value(hdrs, octstr_imm("To"))) != NULL) { - append_address(p, q, prefix); + append_address(p, q, prefix, 1); octstr_format_append(s, "<%sRecipient>\n%S\n", prefix, p, prefix); octstr_destroy(q); } @@ -564,10 +570,7 @@ static Octstr *headers_to_soapxml(List *hdrs, MM7Version_t *ver) break; case MM7_TAG_Sender: p = octstr_create(""); - if (ver_compare(ver,&min_ver) > 0) - append_address(p, v, prefix); - else if (octstr_get_char(v, 0) != '-') /* not display only. */ - octstr_format_append(p, "%s", octstr_get_cstr(v) + 1); + append_address(p, v, prefix, ver_compare(ver,&min_ver) > 0); if (octstr_len(p) > 0) octstr_format_append(s, "<%sSender>%S\n", prefix, p, prefix);