Support for jumbo packets. Setting WITH_JUMBO on the make command line will change the image block size to 8192 bytes and reduces the number of block per chunk to 256 (to maintain the 1MB chunk size for compat with old images). The default is still 1024. Added the notion of a "dubious" chunk buffer in the client. If an incoming chunk buffer is marked as CHUNK_DUBIOUS, then its contents can be evicted and the buffer reused for a more promising chunk. This is a crude replacement mechanism that is currently only used in one place: if we miss part of a chunk and the server switches to sending a new chunk for which we have no free buffer, we switch to collecting the new chunk. The reasoning is that it will take a while for the server to switch back to completing the former chunk, during which time it may send one or more complete chunks that we could more fruitfully use (decompress and write out). Changed the meaning of the "done" field for a chunk. It used to mean either that we have completely processed the chunk or that we are currently collecting it. It took additional work (scanning all chunk buffers) to differentiate these cases, so I make it explicit. Allow the client and server to dynamically determine the maximum socket buffer size. Fix a couple more on-the-wire data structure size/alignment issues that showed up on a 64-bit OS. A few minor speedups to the bitmap handling code. Think: "rearranging deck chairs on the Titanic" here. We need more serious algorithmic changes to scale all this code going forward. Add some more TRACE events and refine what is already there. Added some hacks to allow frisbee client/server to run on the same machine. We had made it remarkably hard to do this. But then again, why would you want to! Look for SAME_HOST_HACK in the makefile.
Showing with 596 additions and 183 deletions