View Single Post
  #1 (permalink)  
Old March 3rd, 2009
CathalG CathalG is offline
Novicius
 
Join Date: January 8th, 2009
Posts: 3
CathalG is flying high
Default zlib inflate() never returns end of stream

Hi,

I am trying to inflate a negotiated deflated Gnutella TCP connection.

The way I am going about this is the following:

e.g. direction = client to server:

1. Append packet to buffered stream.
2. pass stream to inflate()
3. if returns 0 (Z_OK) (successfully begun inflating but not finished), wait for next packet
4. else if returns Z_STREAM_END, pass inflated stream to function to parse Gnutella message(s). clean out buffer.

I have gone through numerous deflated TCP connections with this method, but inflate() only ever returns 0 (Z_OK).
Therefore I never reach the end of stream, even though this TCP connection is finished with a handshake. So I am never able to parse the Gnutella content.

Am I going about this the correct way? If not, where am I going wrong? If I am, why do I never reach end of stream?

Any help would be appreciated.

Thanks ,

Cathal
Reply With Quote