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:
committed by
Wink Saville
parent
04b2868c74
commit
70f74b79c3
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user