Log in | Back to darenet.org

mIRCs DCC resume protocol

DCC Resume.

The DCC Resume protocol is an extention to the standard DCC protocol as 
described in http://www2.undernet.org:8080/~cs93jtl/irc_dcc.txt
It is ment to overcome the bad experiences people on slow modem connections 
have with DCC File transfers. Since more and more people access IRC by 
Slip and PPP modem connections, more and more people are affected by stopped 
transfers, sometimes after a looong period of downloading and hoping for a
long transfer to complete correctly. The DCC Resume offers you the option to 
simply restart a transfer at the point it was broken off and to proceed without 
loss of expensive (?) connection time. 

The DCC Resume allows you to resume DCC transfers that failed to complete. 
This will only work with mIRC and compatible clients. If a user tries to send 
you a file that already (eventually partly) exists in your get directory then 
you will be shown a DCC Get dialog warning that the file exists. The dialog 
gives you the option to either overwrite the older file, resume a transfer, or 
rename the incoming file . If you select overwrite then the whole file will be 
downloaded from the beginning and any existing file of the same name will be 
erased. If you select resume then mIRC will attempt to negotiate a transfer 
resume to get the remaining part of the file. It will append this to the portion 
of the file you already have.

The negotiation method is specific to mIRC and to other clients supporting the 
protocol. It is not standard and will not work with other DCC implementations 
that do not have resume capability. The negotiation is automatic, and once the 
receiving user clicks the resume button, the transfer will commence as normal.
If the other party does not support the DCC Resume protocol the transfer will 
simply not start. In those cases you have to start a complete new transfer from 
the very beginning.

The DCC Resume standard is set by mIRC and several other IRC clients support 
DCC Resume already :

mIRC			http://www.mirc.co.uk/index.html
PIRCH			http://www.bcpl.lib.md.us/~frappa/pirch.html
Visual IRC (ViRC)	http://apollo3.com/~acable/virc.html
IaIRC (InterAp IRC)	http://merlin.datlin.ee/HamGroup/yury/iairc.htm

----

Here is a description of the mIRC DCC Resume Protocol.

User1 is sending the file.
User2 is receiving the file.

To initiate a DCC Send, User1 sends:

PRIVMSG User2 :DCC SEND filename ipaddress port filesize

Normally, if User2 accepts the DCC Send request, User2 connects to the address 
and port number given by User1 and the file transfer begins.

If User2 chooses to resume a file transfer of an existing file, the following 
negotiation takes place:

User2 sends:

PRIVMSG User1 :DCC RESUME filename port position

filename = the filename sent by User1.
port = the port number sent by User1.
position = the current size of the file that User2 has.

User1 then responds:

PRIVMSG User2 :DCC ACCEPT filename port position

This is simply replying with the same information that User2 sent as 
acknowledgement.

At this point User2 connects to User1 address and port and the transfer begins 
from the specified position.

NOTE: the newer versions of mIRC actually ignore the filename as it is 
redundant since the port uniquely identifies the connection. However, to remain 
compatible mIRC still sends a filename as "file.ext" in both RESUME and ACCEPT.

----

Tjerk Vonck
mirc@dds.nl