Whoops.

A tiny little screwup made the patch included in the quoted message
unusable.

Attached is another try.

Thanks!

Dave WHITE
ONE GmbH

On Fri, 2003-10-24 at 15:27, David White wrote:
> Good Hello!
> 
> We've identified a bug in the STABLE version (1.2.1) involving the PPG.
> When messages with length 140-[0-6] arrive at dispatch_datagram in
> wapbox.c, the length of the existing udhdata (UDH port addressing IE) is
> not counted with the length of the msgdata (the WSP Push PDU).
> 
> This results in malformed Push OTA messages being sent out.
> 
> Our results with the one-line patch needed to fix this in 1.2.1 have
> been satisfactory.
> 
> This bug is fixed in CVS HEAD by hard-wiring the maximum number of
> messages to 10. The enclosed patch reverts to a corrected version of the
> old logic to calculate the number of SMs needed for Push OTA.
> 
> David WHITE
> ONE GmbH
> 
> 
Index: gw/wapbox.c
===================================================================
RCS file: /home/cvs/gateway/gw/wapbox.c,v
retrieving revision 1.169
diff -u -r1.169 wapbox.c
--- gw/wapbox.c	7 Oct 2003 22:58:42 -0000	1.169
+++ gw/wapbox.c	24 Oct 2003 13:42:05 -0000
@@ -359,6 +359,8 @@
         *part;
     List *sms_datagrams;
     static unsigned long msg_sequence = 0L;   /* Used only by this function */
+    long max_msgs,
+	 msg_len;
 
     msg = part = NULL;
 
@@ -375,8 +377,10 @@
         } else {
             msg_sequence = counter_increase(sequence_counter) & 0xff;
             msg = pack_sms_datagram(dgram);
+            msg_len = octstr_len(msg->sms.msgdata) + octstr_len(msg->sms.udhdata);
+            max_msgs = (msg_len / MAX_SMS_OCTETS) + 1;
             sms_datagrams = sms_split(msg, NULL, NULL, NULL, NULL, concatenation, 
-                                      msg_sequence, max_messages, MAX_SMS_OCTETS);
+                                      msg_sequence, max_msgs, MAX_SMS_OCTETS);
             debug("wap",0,"WDP (wapbox): delivering %ld segments to bearerbox",
                   list_len(sms_datagrams));
             while ((part = list_extract_first(sms_datagrams)) != NULL) {

Reply via email to