Assemble WAP datagram correctly when segments arrive out of order

The WAP assembly code will always attach the last received segment at the end
of the WAP datagram. Change the code to add the current segment at the correct
location during the WAP datagram assembly.

Change-Id: I4cc18bf33bc68ab9a328a0107f21e3670b5026ac
This commit is contained in:
Christian Gustafsson
2009-09-13 20:59:47 -05:00
committed by Wink Saville
parent 04b2868c74
commit 70f74b79c3

View File

@@ -299,14 +299,16 @@ final class CdmaSMSDispatcher extends SMSDispatcher {
// Build up the data stream
ByteArrayOutputStream output = new ByteArrayOutputStream();
for (int i = 0; i < totalSegments-1; i++) {
for (int i = 0; i < totalSegments; i++) {
// reassemble the (WSP-)pdu
output.write(pdus[i], 0, pdus[i].length);
if (i == segment) {
// This one isn't in the DB, so add it
output.write(pdu, index, pdu.length - index);
} else {
output.write(pdus[i], 0, pdus[i].length);
}
}
// This one isn't in the DB, so add it
output.write(pdu, index, pdu.length - index);
byte[] datagram = output.toByteArray();
// Dispatch the PDU to applications
switch (destinationPort) {