Dear all,
During testing of cvs-20081021 meta-data branch we found two issues:
1. The meta_data_pack() always appends an "&" at the end of the
resulting string. As a result sms.meta_data always contains an "&" at
the end, which produces queries like the following:
DEBUG: Query:
sms_source=%2B999999999&sms_dest=9999&smsc-id=smsc&sms_command=test&meta_data=%3Fsmpp%3Fmessage_reference%3D192%26
2. When using post-xml sms.meta_data is not urlencoded resulting in an
unreadable XML file like this <meta-data>?smpp?tag=1&</meta-data>.
Regards,
Mike Zervakis
--- smsbox.c 2008-10-09 19:29:28.000000000 +0300
+++ smsbox_debug.c 2008-11-20 18:26:38.000000000 +0200
@@ -1642,6 +1642,7 @@
/* meta_data */
if (octstr_len(msg->sms.meta_data)) {
+ octstr_url_encode(msg->sms.meta_data);
OCTSTR_APPEND_XML(xml, "meta-data", msg->sms.meta_data);
}
--- meta_data.c 2008-01-24 18:47:02.000000000 +0200
+++ meta_data_debug.c 2008-11-20 18:19:10.000000000 +0200
@@ -233,10 +233,17 @@
do {
octstr_format_append(data, "?%E?", mdata->group);
l = dict_keys(mdata->values);
+
+ if(l != NULL && (tmp = gwlist_extract_first(l)) != NULL) {
+ octstr_format_append(data, "%E=%E", tmp, dict_get(mdata->values,
tmp));
+ octstr_destroy(tmp);
+ }
+
while(l != NULL && (tmp = gwlist_extract_first(l)) != NULL) {
- octstr_format_append(data, "%E=%E&", tmp, dict_get(mdata->values,
tmp));
+ octstr_format_append(data, "&%E=%E", tmp, dict_get(mdata->values,
tmp));
octstr_destroy(tmp);
}
+
gwlist_destroy(l, octstr_destroy_item);
mdata = mdata->next;
} while(mdata != NULL);