|
From: itinerants <iti...@ho...> - 2007-11-03 20:22:36
|
A coupla weeks ago I decided to port dc++ onto OSX, that is, to put a native
interface onto the "client" section of the code.
It went well - had it up and running in about 8 hours, another 4 to put some
semblance of "nice" interface on it, and I've been using it, crashless
(well, a few due to my own errors) since then.
I did, however, find the following, which I think are NOT my bugs, but I
stand to be corrected...
1. I see there is some "if macintosh" type code, so I needed to turn off
SO_NOSIGPIPE...
BufferedSocket::accept
BufferedSocket::connect
Both needed
sock->setSocketOpt(SO_NOSIGPIPE, 1);
With the other socket options.
I suspect this is a mac only fix, but I know nothing about pcs, so I can't
be sure.
2. DirectoryListing::loadFile need to be specified as throwing
FileException, SimpleXMLException - corrupt file lists, as well as the
routine itself, throw more than just "Exception". I'm not a c++ expert, but
my understanding of the "throw" thing in the function prototype is that if
you throw something other than what's listed, you get a runtime exception
and the prog exits if it isn't handled - can't see that it is being handled.
This certainly killed my version until I added the new specifiers.
3. in .702...
In "StringDefs.cpp",
A) in ResourceManager::strings
between
"Tag", and " Target filename too long",
There should be "Target removed"
B) in ResourceManager::names
between
"Tag", and "TargetFilenameTooLong",
There should be "TargetRemoved"
4. The AutoSearch thing...
It saves a list of the 30 last "searched for" strings.
This means that, if you have, say, 29 items in your list, once they've all
been searched for, no more autosearching is performed, yet if you have 31,
it'll keep cycling around.
I fixed this by clearing the list if nothing to search for is found, then,
next time around, we're back searching again.
5. The autosearch interval needs to be user-specifiable. It's either 120000,
or 300000, but some hubs have 10 minute minimum search intervals! On those
hubs, autosearch never finds anything after the first one, since the hub
bounces every subsequent search as being within the minimm search interval.
6. Unless I've missed something, which is quite possible, users in the wait
list who aren't online are shown only with their CIDs?
I've created a "Downloaders" database/window that shows how much has been
down/up loaded from each user you've down/up loaded from/to. I had this on
an earlier Valknut port and now wouldn't/couldn't live without it. It tells
you who might be a good target for future downloads (it also shows
max/average speed for each).
To do this it hooks into the DownloadManagerListener, UploadManagerListener,
BufferedSocketListener, ClientManagerListener, and QueueManagerListener (to
collect nicks for people before you've downloaded from them).
The other advantage is that my wait list uses THIS database to provide real
nicks.
Guess that's more a suggestion than a bug, sorry.
There are a bunch of other things of lesser import, but I'll stop for now.
Hope some of this is useful, if not, just send a nuke my way!
Regards and keep up the good work.
"SomeQuestions"
|