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
