- Padded with zero, instead of Undefined
- Fixed ping to return the ping time, instead of the timestamp
if(now() > end)
return -1;
- return (int)ts;
+ return (int)( now() - ts );
}
const Uint16 *arr = Buf;
int i;
- Size = (Size + 1) >> 1; // 16-bit word count
- for(i = 0; i < Size; i++ )
+ // Sum all whole words
+ for(i = 0; i < Size/2; i++ )
{
Uint16 val = ntohs(arr[i]);
sum += val;
}
+ // Add the tail word
+// if( i*2 != Size )
+// sum += arr[i]&0xFF;
// Apply one's complement
while (sum >> 16)
buf[2] = (htons(Length)<<16) | (6<<8) | 0;
Data->Checksum = 0;
memcpy( &buf[3], Data, Length );
+ if(Length & 1)
+ ((Uint8*)buf)[12+Length] = 0;
Data->Checksum = htons( IPv4_Checksum( buf, buflen ) );
free(buf);
IPv4_SendPacket(Conn->Interface, Conn->RemoteIP.v4, IP4PROT_TCP, 0, Length, Data);