DC++ 0.76x improvements in detail – Part Three: Behind the Scenes
April 8, 2010 3 Comments
As you may know, the structure of the source code of DC++ is divided into many parts. Basically it can be grouped into three major parts, as the GUI, the DCPP library and additional open source libraries. We covered the most important changes in the GUI part in the first and second post of this series. We won’t go into details about what’s new with the additional libraries since they are (mostly) developed by others.
So let’s talk about what’s happened around the DCPP library (or DClib) recently. DClib is the heart of all DC clients which inherit code from DC++. This means that the changes we discuss in this post are not unique to DC++: all the DC clients shown in the link above will incorporate most of the improvements as well as the compatiblility changes sooner or later, as they release their new versions.
The new version fixes two long standing and annoying problems with hashing files. As we know, if you add files to an already shared folder and want to hash them immediately you select Refresh filelist. However, in most cases after a simple refresh command the new files wasn’t added to your own filelist so you needed refresh twice. This problem is hopefully gone now, along with another annoyance when you wanted to restart DC++ while a large file has been hashed. In the latter case the the thread busy with hashing was not closed immediately with the rest of the application, keeping the user from restarting DC++ sometimes even for several minutes.
A memory leak happened in (automatic and manual) refreshing of the filelist is also fixed. It is an important fix to those who are with large shares and running the client all day. These users often experienced that after a few days of uptime all free memory was eaten out by DC++.
From now you must experience much less UAC warnings under Vista or Windows 7, since all keys are written to per user sections of the Windows Registry.
An identifying problem of users in ADC hubs has been solved which could happen when two users both were logged on to (two or more) same hubs. Connection requests, searches and private messages could went through other hub than selected/used which could cause privacy problems.
User commands support for ADC is greatly improved and modified according the current protocol standards.
The code for parsing XML files was completly rewritten to meet the current XML standards and to avoid various attacks trying to distract the normal operation of the program by providing malicious input files. As an effect of this change, all not fully XML compatible hublists will be rejected by the new DC clients. Fresh hublists provided by major hublist servers do not have this problem but some small static hublist files or old / cached hublists may fail to open from now. This applies to all old non-XML format hublists (their name usually contain .config) as well, because upon this change, support of them is also removed.
As you already informed before this version of the lib also drops compatibility with clients using ADC version 0.10 and earlier.
The list of changes is now over, but there’s more: a lot of small things you can be informed from the changelog. We hope you’ll like all the advantages of this year old development… and beware of another milestone improvement coming soon :)