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; 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; Octstr *v = addr_spec, *z;
char *y; char *y, *typ = "";
int j, ch = octstr_get_char(v, 0); int j, ch = octstr_get_char(v, 0);
if (ch == '-') if (ch == '-')
y = " displayOnly=\"true\""; y = " displayOnly=\"true\"";
@ -378,12 +378,21 @@ static int append_address(Octstr *p, Octstr *addr_spec, char *prefix)
y = ""; y = "";
j = octstr_case_search(v, octstr_imm("/TYPE=PLMN"),0); j = octstr_case_search(v, octstr_imm("/TYPE=PLMN"),0);
if (j >= 0) { if (j >= 0) {
Octstr *z = octstr_copy(v, 2, j-2); /* skip the initial char that is only for info purposes. */ 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); typ = "Number";
octstr_destroy(z); } else {
} else z = octstr_copy(v, 2, octstr_len(v));
octstr_format_append(p, "<%sRFC2822Address%s>%s</%sRFC2822Address>\n", typ = "RFC2822Address";
prefix, y, octstr_get_cstr(v) + 2, prefix); /* as above... */ }
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; 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_format_append(p, "<%s%S>\n", prefix, h);
} }
octstr_destroy(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); octstr_destroy(v);
} }
if (x[0]) /* close it off. */ if (x[0]) /* close it off. */
@ -496,11 +505,8 @@ static Octstr *headers_to_soapxml(List *hdrs, MM7Version_t *ver)
if (r) { if (r) {
Octstr *xx = octstr_create(""); Octstr *xx = octstr_create("");
if (ver_compare(ver,&min_ver) > 0) append_address(xx, r, prefix,
append_address(xx, r, prefix); ver_compare(ver,&min_ver) > 0);
else if (octstr_get_char(r, 0) != '-') /* not display only. */
octstr_format_append(xx, "%s", octstr_get_cstr(r) + 1);
if (octstr_len(xx) > 0) if (octstr_len(xx) > 0)
octstr_format_append(s, "<%sSenderAddress>%S</%sSenderAddress>\n", prefix, xx, prefix); octstr_format_append(s, "<%sSenderAddress>%S</%sSenderAddress>\n", prefix, xx, prefix);
octstr_destroy(xx); octstr_destroy(xx);
@ -522,7 +528,7 @@ static Octstr *headers_to_soapxml(List *hdrs, MM7Version_t *ver)
if (octstr_len(p) > 0) if (octstr_len(p) > 0)
octstr_format_append(s, "<%sRecipients>\n%S</%sRecipients>\n", prefix, p, prefix); octstr_format_append(s, "<%sRecipients>\n%S</%sRecipients>\n", prefix, p, prefix);
} else if ((q = http_header_value(hdrs, octstr_imm("To"))) != NULL) { } 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_format_append(s, "<%sRecipient>\n%S</%sRecipient>\n", prefix, p, prefix);
octstr_destroy(q); octstr_destroy(q);
} }
@ -564,10 +570,7 @@ static Octstr *headers_to_soapxml(List *hdrs, MM7Version_t *ver)
break; break;
case MM7_TAG_Sender: case MM7_TAG_Sender:
p = octstr_create(""); p = octstr_create("");
if (ver_compare(ver,&min_ver) > 0) append_address(p, v, prefix, 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);
if (octstr_len(p) > 0) if (octstr_len(p) > 0)
octstr_format_append(s, "<%sSender>%S</%sSender>\n", prefix, p, prefix); octstr_format_append(s, "<%sSender>%S</%sSender>\n", prefix, p, prefix);