2002/01/xx:
-----------

* Version 0.68.0

* New command added in client to client protocol: $GetFileLength.

* In active mode, each GDL can now scan for new download source using one or 
  more search patterns (autoscan).

* New GDL commands added: /GDLAS+ (add autoscan pattern), /GDLAS- (remove auto
  scan pattern), /GDLDETACH (detach a GDL of the client).

* fix a crash occuring when the local client wants to start a download and 
  when simultaneously, the remote client connection ends before remote client
  direction has been received.

* several memory allocation errors have been fixed.

* bzip2 has been added to the list of compressed file type.

* fix a crash occuring when the client creates a new transfer thread and 
  pthread_create return EINTR. I am not sure the problem still occurs with 
  glibc 2.2 but it exists with glibc 2.1. Previously, the client supposes the
  thread does not exist and frees its memory -> core dump. Now, the client
  supposes the thread exists. In the worst case, few memory is lost but it no
  more coredumps.

* to reduce CPU load, GTS is now called only every 5 seconds. With the DDL
  support and without this limit, we can easily achieve a 100% CPU load,
  especially with a lot of running connections.

--------------------------------------------------------------------------------
2002/01/20:
-----------

* Version 0.67.0

* DCTC now enables the "SERVER" status if the client is up for more than 2 hours
  and shares more than 2GB (including offset).

* Pong command is now supported.

* --nomd5sum bug has been fixed (-5 flag is not affected).

* new feature added: DDL (Direct download). Using this, it is possible start a
  download without being connected to a hub (remote user must be active, not
  passive) or even having one running dctc connected to a hub (using GTS, it is
  only possible to have xfers moving from one client to another but only if the
  destination client is connected). This feature affects both the normal
  download (/DL) and GDL download (/GDL).

* new commands added: /DDL, /NODDL. Enable/disable download without hub.

* On hub connection loss, DCTC sends new connection status to UI.

* Fix the bug preventing user to enter a hub as registered user if DCTC has been
  launched from UI.

* GLSTC message has been modified to include GDL start time and download bytes.

--------------------------------------------------------------------------------
2002/01/13:
-----------

* Version 0.66.0

* In GDL, DCTC no more crashs on do_gdl_start when no download range can be
  allocated.

* Fix the Glib-CRITICAL message occuring when no data are received during
  transfer handshake.

* Fix the crash occuring when during transfer handshake, the connection is
  closed just when a $Lock is expected.

* Some info messages are now debug messages.

* minor communication code parts have been changed to reduce unwanted signal
  generation.

* new flag added: --nomd5sum. The MD5sum is used for content search. If you run
  DCTC on a slow computer or share a lot of file (in number, not in size), MD5
  computation can take a long time. Using this flag, you can disable it.
  Note: once disabled, it is not possible to reenable it without leaving the 
  client.

* when attaching a GDL to a client, the client now immediatly checks if the GDL
  is completed.

--------------------------------------------------------------------------------
2002/01/06:
-----------

* Version 0.65.0

* Fix the bug preventing /GDLEND to work properly on a running and not finished
  GDL.

* Fix a bug in the users information caching system.

* Fix the bug crashing DCTC when creating semaphores on some OS (redhat 6.2 on
  sparc for example).

* DCTC now handles nickname conflict properly.

* a REFRESH_MSG is now sent when a task is removed from the running task list
  due to a timeout on start.

* an error message is now displayed for each file not taken into account in the
  shared directories.

* fix forever trying GDL tasks. In fact, only their status is trying but they
  don't really try.

* when a GDL ends, its temporary directory is now cleared and destroyed.

* GDL now properly supports the when_done flag (move complete file into the
  done/ directory).

* When a GDL ends successfully, the result is stored inside the .done file, 
  as standard download does.

* To avoid multiple client to download the same GDL file, a lock is now set in
  the GDL file temp directory.

* To allow GDL resuming, inside a GDL file temp directory, a description of the
  running GDL is saved inside this directory.

* To allow GDL resuming, new command added: /GDLATTACH. Use it followed by the
  name of the GDL you want to start. If it exists and is still not busy, it is
  load in the current client.

* when trying to leave DCTC with /FORCEQUIT, running connections are now closed.
  Previously, uploading threads may remain alive and uploads.

* GDL sources are only used if the user having the source nickname is on the hub
  (it is stupid to waste bandwidth sending requests which cannot success).

* GDL download range now takes into account the remote file size of this
  connection. Previously, it is ok when a download is started but during the
  transfer, this information is not taken into account.

* Fix a bug in initial download range allocation function occuring when there is
  no unused segment.

* it is now possible to give an empty password to /PASSWD. Just use "/PASSWD ".

* DCTC now handles hub redirection. It can either disconnect and come back
  later or follow the redirection.

* 2 new commands added: /FOLLOW_FORCE and /UNFOLLOW_FORCE.
  
* DCTC now supports OS without mmap.

* A display bug forcing DCTC to pause forever has been fixed.

* It is now possible to send multi-line message in the chat (/CHAT) and in
  private chat (/PRIV) using \r where new line must be inserted.

--------------------------------------------------------------------------------
2001/12/30:
-----------

* Version 0.64.0

* To avoid unnecessary DC commands, Users information (/UINFO result) is now
  cached.

* New output message type added: "PRGBR]". This message appears to report
  progress of a task. Currently, initial shared file database building uses it.

* client to client transfer function has been partially rewritten to be more 
  efficient and accurate. 

* For future usage, in the client to client transfer, a new command has been
  added ($Capabilities) which describes which enhanced function the client
  support (see Documentation/DCextensions/p2p_cabilities for more information).
  The client remains compatible with DC.

* previous version of DCTC doesn't return anything when the searched pattern is
  at the end of the matching string. Bug is now fixed.

* For user in active mode, in earlier version, an error can occur when creating
  communication port. If the search port fails to create, active search fails
  until the /PORT command is used. The problem has been fixed both when starting
  DCTC and when performing a /PORT.

* search pattern handling works now in the same manner has DC does. Use $ to
  separate searched strings.

* it is now possible to download one file from multiple source at the same time
  using a segmented download. This feature is in ALPHA VERSION. (see /GDL* and
  Documentation/GDL for more information)

--------------------------------------------------------------------------------
2001/12/23:
-----------

* Version 0.63.0

* some remote users extra information are now guessed. DCTC can identify users
  running in passive mode. It can also still find host address/port of active
  mode users. This is the first step of the hubless download. Using these
  information it is technically possible to start download without being
  connected to a hub.

* minor error fixed in $Capabilities function. Reply can be sent on the wrong
  socket.

* new command added: /RECOND. Using it, you can change the hub reconnection
  delay when the client loses the hub connection.

* new flag added: --precmd. The parameter of this flag is a / command. All the
  commands given using one or more this flag are performed before the hub
  connection. See Documentation/commands for more information.

--------------------------------------------------------------------------------
2001/12/09:
-----------

* Version 0.62.0

* DCTC now uses automake/autoconf. Just compile with ./configure ...

* hub address (-g option) can now contain a port. Syntax: hubaddr[:hubport]. If
  no port is given, the default one is used.

* Despite a bug fixed in the previous version, DCTC still crashs. Another bug
  has been found inside transfer initialization. When the transfer is initiated
  by the remote side, if during this initialization, the remote side closes its
  connection before sending a direction, previous DCTC versions crashed. The
  problem should be fixed now.

* new option added: --mdc. Its default value is 0 (DC compatible command).
  If the value is set to 1 and a compatible hub is found (none still exists),
  DCTC uses an extended command set. Currently, only extra command is supported:
  $Capabilities (see Documentation/MDC for more information).

* new message added: $ULST]. For each running upload, this message contains the
  upload status.

* new command added: /RESHARE. Rebuild the database of shared files to take into
  acount added/removed files/directories.

* new command added: /REUINFO. resent user information to the hub (mainly used
  internally).

* The shared file database is now rebuilt every 15 minutes.

--------------------------------------------------------------------------------
2001/12/02:
-----------

* Version 0.61

* The bug preventing some clients to perform download from a DCTC client. The
  problem seems to occur only with old glibc but not with recent one. A
  misplaced MSG_WAITALL on send system calls was the problem. Newest glibc
  doesn't care about this unuseful flag but oldest seems to.

* To work like DC, now, no more than 5 search results are sent to each search
  query.

* Trying to fix the bug randomly crashing DCTC. It is quite hard because the
  problem occurs very randomly and everytime, the stack is trashed.

* To improve bandwidth usage, when /ULIST is entered, if DCTC already has the
  user list, it doesn't retrieve it one more time but use the one it has.
  To avoid any potential problem, the command /ULIST_FORCE has been added and
  force DCTC to retrieve user list from the hub, even if it still has it.

* -s option has been rewritten. Shared directories are now added after the un*x
  socket has been created. Thus, UI should no more think the client has hanged
  because it doesn't respond for a too long time.

--------------------------------------------------------------------------------
2001/11/24:
-----------

* Version 0.60

* the client now can link downloads (file or file list) on the same connection.
  It no more releases the download connection and tries to establish a new one.

* upload bandwidth limitation added. The bandwidth is set for all clients 
  running on the same computer and having the same owner. This bandwidth is
  shared by them.

* -u added to set up the default bandwidth limit.

* /UBL added to dynamically change the bandwidth limit of running clients.

* When changing the number of upload slots, the number of free upload slots is
  now properly adjusted.

* minor bugs occuring when an upload tries to start and all upload slots are
  busy have been fixed. Previously, a 10 bytes string is sent to the client
  which though it is 10 bytes of the wanted data while it is the error message.

* same problem as previous one fixed for the shared list download.

--------------------------------------------------------------------------------
2001/11/06:
-----------

* Version 0.59

* Password protected nickname are now supported (see /PASSWD command and 
  PASWD] message).

* Fix a minor bug occuring sometimes when a UI reconnects a running client.

* Sometimes, the last displayed (or sent to local socks) messages are lost.
  The problem should be fixed now.

--------------------------------------------------------------------------------
2001/10/21:
-----------

* Version 0.58

* it is now possible, with compatible client (DCTC, ...), to search file by
  content instead of filename.

* After 5 minutes, the client automatically switches on the away flag.
  Side effect: this action also keeps the connection alive. Since v0.56, the
  download function has been optimized to reduce bandwidth usage but due to this
  optimization, the command connection can remain unused for a long time so the
  hub disconnect the client. Because the client has no more things to send, it
  does not establish a new connection to the hub.

--------------------------------------------------------------------------------
2001/10/07:
-----------

* Version 0.57

* fix the compilation problem occuring on some linux distribution in db.c and
  also some warnings.
  
* new flag added: -v. This flag allows you to override protocol version sent by
  DCTC to hubs. Thus, it is no more necessary to wait new release of DCTC to
  enter hubs only accepting latest DC client.

* current DC protocol version has changed from 1,0009 to 1,0091.

* fix the "crash all running clients" bug. In fact, this bug doesn't crash all
  clients. All clients are crashing when they attempt to lock the .dctc/gts.*
  file at the same time.

* /HUBNAME crash fixed. The first previous changes of the v0.56 has created new
  bugs. For example, if the hub is slow to return its name and someone has
  already entered commands, some commands may crash because there is no valid
  result to return (ex: /HUBNAME). 

* SIGHUP is now catched. If the start shell ends (or crashs), dctc will stay
  alive. This change has been done because the xterm of Mandrake 8.1 seems to be
  buggy and crashs when "strange" strings are displayed.

--------------------------------------------------------------------------------
2001/09/30:
-----------

* Version 0.56

* the keyboard input now is available when the client is trying to establish a
  connection with the hub, even if the hub is very slow to reply.

* the queued download list is now shared by all clients. Thus, transfer can
  move from one hub to another.

* remote search query are now supported if the remote client is in active mode.

* sometimes, the GUI hangs because it waits DCTC and DCTC hangs because it waits
  the GUI. The problem comes from socket capacity. When both programs want to 
  write but nobody reads, the sockets become full and both program wait. The
  problem is not solved but it should be no more occur ... at least until very
  big hub (approximately more than 800 users) exists.

* patch from David Toth: File sharing list Windows (DC) compatibility bugfix.
  The byte 4 of the file list is now computed.

* Protocol violation has been removed when a DC client wants to retrieve the
  shared file list. In combination with the previous patch, the list of shared
  files can now be displayed by Direct Connect.

* To avoid compatibility problem, if path containing shared files are absolute
  (starts with a slash), DCTC transparently replaces it by a  (0xFF). This
  tips is not visible in a search result, only in shared file list.

--------------------------------------------------------------------------------
2001/09/22:
-----------

* Version 0.55

* fix the hanging problem occuring when the client losts its terminal. Previous
  version hangs forever.

* new command added: /DONE and /UNDONE. When a download ends, the file can be
  moved into the done/ directory or stay where it is.

* new flags added: -t and -w. -w = /DONE. if -t is used, the program 
  immediatly closes its input and output descriptor thus no messages are
  displayed on the shell and commands cannot be entered using the keyboard.
  This flag is mainly here to provided a "clean" interface to GUI.

* new flag added: -l. When -l is provided, at the very beginning, the client
  hangs until someone connects to its local socket (like a GUI). This flag is
  only here for GUI.

--------------------------------------------------------------------------------
2001/09/15:
-----------

* Version 0.54

* fix the crash problem occuring when a program disconnect from the local socket.

* in directory $(HOME)/.dctc, a file recent contains the list of all recently
  contacted hubs.

* get_a_dc_line has been updated to avoid hanging when the network connection
  hangs.

* new flag: -x. Same as /DLOFF but from the command line.

* bug fix in the /PORT command. Changing the transfer port on the fly now works.

* bug fix in /VARS. shared dir list is now correctly returned.

* new command added: /LPATH. change the download directory.

* if the transfer port is already used by someone else or cannot be used, the 
  client tries the ports after the given one until it found one.

--------------------------------------------------------------------------------
2001/09/09:
-----------

* Version 0.53

* some no more useful INFO messages have been changed into DEBUG messages. The
  client will be less verbose.

* New command added: /LS. this command retrieves the list of the given user
  shared files.

* New command added: /VARS. the command returns the value of some internal
  client vars.

* Some new output messages have been added: ASTRT,ASTOP, RFRSH, BXFER, VAR.
  Those messages are here to simplify task managment of a GUI.

* When starting a new client, it creates an Unix socket into $(HOME)/.dctc/running.
  socket name is "dctc-xxxxxxxx-yyyy" where xxxxxxxx is the pid of the process (8
  characters) and yyyy is the hub address (the one provided by -g). A file is also
  created with the name "dctc-xxxxxxxx-yyyy.done". It contains the list of all
  done transfers.

* Remote clients can now retrieve the list of files shared by the client. For an
  unknown reason, DC fails to display the file list while this client
  successfully displays it (who cares, only windoz users won't see the file
  list).

* To avoid unwanted termination of the client, some signals are now captured
  (Ctrl-C). Ctrl-C now works only after a /QUIT has been entered.

* New command added: /ERRLOG. Same function as /LOG except only "ERR ]" messages
  are logged. If both /LOG et /ERRLOG are used at the same time,"ERR ]" messages
  are written in both files.

* On download, if the client receives a $Error message, it now aborts and
  reports the error message. Previously, the client retries which is not very
  useful because the $Error message only appears when the wanted file is no more
  available.

* If someone tries to download a file which is no more shared, the client now 
  returns an error message before closing the transfer connection.

* when the client fails to open (err)log file, it now reports the error.

* if no data are shared, the client always returns "no more download slot" to 
  client who want to get your file list.

--------------------------------------------------------------------------------
2001/08/24:
-----------

* Version 0.52

* Fix the thread creation problem. Previously, after many tries (upload/
  download), due to an error, the client cannot create new threads. This case
  mainly appears on heavily loaded hub and/or if you let the client up for a
  quite a long time (more than 12 hours).

* Simultaneous download from the same user is no more possible. In such case,
  1 transfer runs and all others remain queued (in the CMDKB list).

* In some quite rare cases, a just failed download is requeued more than one
  time. To avoid the problem. It is no more possible to queue more than one time
  the same download query.

* Active mode search is now available.

* New command added: /MSEARCH. Using it, you can do a multi-hub search.

* New command added: /HUBNAME. Reprint the name of the current hub.

* The client doesn't crash anymore if, when it tries to reconnect to the hub,
  the hub doesn't send an invalid connection string.

* After using the /DLOFF command, when replying to a search query, the client
  tell all download slots are busy.


--------------------------------------------------------------------------------
2001/08/18:
-----------

* Version 0.51

* Bug fix in download function. If the connection is closed, the thread now
  exits. Previously, the thread eats all CPU inside an infinite loop.

* when a remote client queries a connection from the client, the client no more
  hangs until the end of connection establishment.

* transfers no more hang forever after a network error. A timeout of 10 minutes
  has been added. Due to the fact that Direct Connect works with 8KByte bloc,
  a timeout of less than 8 minutes is not recommended else a timeout may occur
  if speed goes beyond 1KB/s.

* if a download is aborted due to a network error, it is automatically restarted
  30 seconds later. The download always resumes from the end of file.

* if a download is aborted due to the lack of remote client response (ie. user
  has left the hub), the download is automatically retried 1 minute later.

* New message type added: CMDKB. It is a commandline which will be sent
  automatically when the given time is reached.

* New command added: /KILLKB. This command allows you to remove a queued command
  from the CMDKB list.

* New commands added: /LOG and /NOLOG. Using these commands, you can save
  displayed messages into a log file.

* After a hub disconnection, the client will now try to reconnect it every 5
  seconds until you force the client to quit (/QUIT) or the connection can be
  reestablished. During this time, keyboard commands still are available.


--------------------------------------------------------------------------------
2001/08/15:
-----------

* Version 0.50

* Initial public release

* The most useful functions are available and work.

  Missing functions are:
   - file browsing from local and remote host.
   - active mode search. Currently, only passive mode search is available.
     If you are in active mode, the client switched just a few moment into
     passive to perform the search, this doesn't affect any running or incoming
     connection.
   - more accurate upload status. Currently, only the filename is reported.
   - support of operator functions. Currently, only the most useful user
     functions are available.
   
