This extension allows clients to max out their connection with less different sources by using multiple transfer connections per user. Additionally it adds a separate transfer connection that can be used exclusively for partial lists and small files, thus allowing browsing of partial lists without excessive waiting times caused by simultanous normal file transfer. AirDC++ has supported the MCN1 extension since version 2.20 and MCN2 is going supported since version 2.50. See http://www.airdcpp.net/forum/viewtopic.php?f=4&t=1023
for information about the implementation used in AirDC++.
Clients supporting this extension should advertise "MCN1" and/or "MCN2" in their C-C supports when initiating a transfer connection. Clients are also able to add a "CO" flag in C-C INF that specifies the maximum number of simultaneous per-user upload connections that can be created. This information can be used by the downloading client so that it doesn't add new waiting connections if the maximum limit has been reached. Not providing this parameter (or providing it with a value of 0) means that there is no separate limit for per-user connections.Upload slot distribution
The uploading client should distribute its total upload connections fairly among the uploaders. When the maximum number of total connections is reached, additional connections for existing clients can simply be disconnected without an additional error message. Free slots that are advertised to other users should be counted based on the number of unique uploaders instead of the total number of running connections.Small file slot
All downloading clients are able to have one connection that is exclusively used for downloading partial file lists and files smaller than 64 KB (never full file lists). Small file slot isn't included in the total connection limit that is specified with the "CO" parameter and connections for small files shouldn't affect the way how the regular transfer slots are distributed.
If the downloader wants to reserve a small file slot, it should add a flag "SM1" in C-C INF when initiating the connection (MCN2). Clients only supporting MCN1 don't flag the small file slot, so the uploader needs assign it based on the tranfer type/file size. The small file connection can't be converted to a regular file transfer connection.