Fixed a bug in IPv4 pseudoIP cksum calculation which would cause invalid TCP and UDP cksums in certain cases

This commit is contained in:
Srivats P. 2010-05-23 22:30:32 +05:30
parent 956455137c
commit 7327fbb58d

View File

@ -622,6 +622,9 @@ quint32 Ip4Protocol::protocolFrameCksum(int streamIndex,
sum += fieldData(ip4_proto, FieldValue, streamIndex).toUInt() & 0x00FF;
sum += (fieldData(ip4_totLen, FieldValue, streamIndex).toUInt() & 0xFFFF) - 20;
while(sum>>16)
sum = (sum & 0xFFFF) + (sum >> 16);
// Above calculation done assuming 'big endian'
// - so convert to host order
//return qFromBigEndian(sum);