Hi, folks. 

I need some technical help on getting gtk-gnutella 0.92.1 working
on Solaris 8 for X86 platforms. I am using the Sun Forte 6.2 
compilers and tools. 

I have a working version of the code built, with debug symbols in
the code. But I have found a problem that occurrs when I try to use
the program, which causes a crash every time. Because there is so 
little documentation available on the protocol and how it's 
implemented, I have been unable to solve this problem myself. 

What happens is I get an upload request, and the request appears to
be missing a critical piece of information. While the program is
trying to process this information, there is a call to the function
'upload_get_status()' in uploads.c. This in turn calls the function
'parq_upload_lookup_queue_no()', which calls 'parq_upload_find()'.

That function attemps to access the gnutella_upload_t member item
'u->name', which is null, in order to create an 'ip_and_name' string
to be used by the hash table lookup. But the u->name is NULL, and the
reference to NULL by the sprintf function causes a segment fault. 

It seems pretty clear that the u->name value should never be null. 
It is this case which causes the crash. There is a test for an 
empty 'ip_and_name', and that passes, because there is a valid IP
address, or at least I believe it's valid. 

But there is no test for an empty name. So the program crashes as
soon as I get a request for an upload. What confuses me even more, 
is that there are no files shared for upload, so I don't know why
I am getting requests, unless it's a request for the list of shared
files. But it's not clear to me what kind of request it is, other 
than it is an upload request, since I can trace through the creation
of the upload request. 

At the time that the request is placed into the event queue, the 
name element is empty, and it still is at the time of the crash. 
I cannot find anywhere in the code where this information should
be forced to a value. Yet without a value, it will always cause a 
crash. 

I find it almost impossible to believe that this is caused by an
illegal request, because that type of request would crash every
user of the program, making the program and network unusable. 

I also don't think that I am being specifically targeted, because
I have only just gotten the program built, and have not downloaded
or uploaded anything. I haven't been able to keep the program running
long enough to do any useful searches. 

If you could provide me with some insight into how the upload process
is supposed to work, I am sure that I can fix the problem. I just do
not understand the code well enough, nor the data that is normally 
encountered in the protocol, to be able to figure this out on my own. 

If you could tell me the steps that an upload request should make, 
in order, and at what point the name field should contain data, I 
will be able to track down the problem. But at the point when the 
upload request is entered into the queue, there is no code that 
puts anything into the name. And I am not yet familiar enough with
the event queue process to know where to look, to find where the 
name data is added to the request. 

Please let me know as soon as you can, as this is very frustrating
to me. I have spent many hours porting the code over to the SUN
compiler, along with about 12 hours of porting work on all the 
support libraries. After all that, it's so close that I can almost
taste it. I'm sure you can imagine how I feel. 

Thank you in advance for any help you can give. If you need any
additional information, please contact me and I will be glad to
provide it to you. 

Regards,
--Carl Erhorn <[EMAIL PROTECTED]>




-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Gtk-gnutella-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/gtk-gnutella-devel

Reply via email to