Hello,
I sent this patch a few days ago, but I've been told that mail with
patch attached should be prefixed with [PATCH] so I resend it.
The problem is that judging by fields_to_dcs function in sms.c, an empty
message with an activating MWI flag should result in "discard message"
MWI whereas a non-empty message should result in "store message" MWI.
But when the smsbox handle the message sent by sendsms HTTP interface,
it replace the empty text by a default message. This problem is already
highlighted in the comment in the file. Here is the interesting part of
the file.
/*
* Empty message? Two alternatives have to be handled:
* a) it's a HTTP sms-service reply: either ignore it or
* substitute the "empty" warning defined
* b) it's a sendsms HTTP interface call: leave the message empty
* if at least a UDH is given.
*
* XXX this still does not cover the case when the sendsms interface is
* used with *no* text and udh. What should we do then?!
*/
if (octstr_len(msg->sms.msgdata) == 0 && octstr_len(msg->sms.udhdata)
== 0) {
if (trans != NULL && urltrans_omit_empty(trans))
return 0;
else
msg->sms.msgdata = octstr_duplicate(reply_emptymessage);
}
My proposition is to replace the if statement in order to check if the
message is a mt_reply (case a) or not.
Regards,
Colin
diff -ur gateway/gw/smsbox.c gateway-new/gw/smsbox.c
--- gateway/gw/smsbox.c 2006-07-13 10:05:57.000000000 +0200
+++ gateway-new/gw/smsbox.c 2006-07-13 10:20:11.000000000 +0200
@@ -324,12 +324,8 @@
* a) it's a HTTP sms-service reply: either ignore it or
* substitute the "empty" warning defined
* b) it's a sendsms HTTP interface call: leave the message empty
- * if at least a UDH is given.
- *
- * XXX this still does not cover the case when the sendsms interface is
- * used with *no* text and udh. What should we do then?!
*/
- if (octstr_len(msg->sms.msgdata) == 0 && octstr_len(msg->sms.udhdata) ==
0) {
+ if (octstr_len(msg->sms.msgdata) == 0 && msg->sms.sms_type == mt_reply) {
if (trans != NULL && urltrans_omit_empty(trans))
return 0;
else