checksum(new DataInputStream(new PacketToInputStream(payload)));
}
// restore the limit and seek to the footer.
dup.limit(packet.limit());
dup.position(dup.position()+payloadLength);
readFooter(is);
// If every thing went well.. advance the position of the orignal packet.
packet.position(dup.position());
dup.dispose();