Gnutella Forums  

Go Back   Gnutella Forums > Gnutella News and Gnutelliums Forums > General Gnutella Development Discussion
Register FAQ The Twelve Commandments Members List Calendar Arcade Find the Best VPN Today's Posts

General Gnutella Development Discussion For general discussion about Gnutella development.


Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old March 3rd, 2009
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
  #2 (permalink)  
Old March 4th, 2009
arne_bab's Avatar
Draketo, small dragon.
 
Join Date: May 31st, 2002
Location: Heidelberg, Germany
Posts: 1,881
arne_bab is a great assister to others; your light through the dark tunnel
Default

I assume that#s because there isn't an end of the stream: Gnutella servents keep using the same stream for more data.

Do you get valid messages when you pass parts of the inflated stream to the parser?
__________________

-> put this banner into your own signature! <-
--
Erst im Spiel lebt der Mensch.
Nur ludantaj homoj vivas.
GnuFU.net - Gnutella For Users
Draketo.de - Shortstories, Poems, Music and strange Ideas.
Reply With Quote
  #3 (permalink)  
Old March 11th, 2009
Novicius
 
Join Date: January 8th, 2009
Posts: 3
CathalG is flying high
Default

Thanks for your reply.

Yes; if I wait until the TCP connection is terminated, then pass the incomplete inflated stream to a handler function: it does produce valid messages.

My next question is: how can I continuously process these messages without having to wait until the end of the connection?

i.e. Currently, if I pass the stream to a handler function after x packets (for example), the next time I call inflate() with the stream beginning at packet(x+1), it returns Z_STREAM_ERROR.

I assume this return value will result in an invalid inflated stream.

I hope I have explained this clearly enough.

Thanks for your help.
Reply With Quote
  #4 (permalink)  
Old March 11th, 2009
arne_bab's Avatar
Draketo, small dragon.
 
Join Date: May 31st, 2002
Location: Heidelberg, Germany
Posts: 1,881
arne_bab is a great assister to others; your light through the dark tunnel
Default

Quote:
Originally Posted by CathalG View Post
i.e. Currently, if I pass the stream to a handler function after x packets (for example), the next time I call inflate() with the stream beginning at packet(x+1), it returns Z_STREAM_ERROR.
Can you just send inflate() the whole stream again, including the already processed part, but only take packets you didn't yet see?

Best wishes,
Arne
__________________

-> put this banner into your own signature! <-
--
Erst im Spiel lebt der Mensch.
Nur ludantaj homoj vivas.
GnuFU.net - Gnutella For Users
Draketo.de - Shortstories, Poems, Music and strange Ideas.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT -7. The time now is 08:02 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.

Copyright © 2020 Gnutella Forums.
All Rights Reserved.