minor fix to mm7/soap composition
This commit is contained in:
parent
650c1c8318
commit
18dcdf7052
|
@ -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</%sNumber>\n", prefix, y, z, prefix);
|
||||
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</%s%s>\n",
|
||||
prefix, typ, y, z, prefix, typ); /* as above... */
|
||||
else
|
||||
octstr_append(p, z);
|
||||
|
||||
octstr_destroy(z);
|
||||
} else
|
||||
octstr_format_append(p, "<%sRFC2822Address%s>%s</%sRFC2822Address>\n",
|
||||
prefix, y, octstr_get_cstr(v) + 2, prefix); /* as above... */
|
||||
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</%sSenderAddress>\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</%sRecipients>\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</%sRecipient>\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</%sSender>\n", prefix, p, prefix);
|
||||
|
|
Loading…
Reference in New Issue