1
0
Fork 0

minor fix to mm7/soap composition

This commit is contained in:
bagyenda 2007-09-26 06:06:33 +00:00
parent 650c1c8318
commit 18dcdf7052
1 changed files with 23 additions and 20 deletions

View File

@ -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);
octstr_destroy(z);
} else
octstr_format_append(p, "<%sRFC2822Address%s>%s</%sRFC2822Address>\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</%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</%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);