--
-- TODO
-- 
-- This is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2, or (at your option)
-- any later version.
-- 
-- This software is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
-- 
-- You should have received a copy of the GNU General Public License
-- along with this package; see the file COPYING.  If not, write to
-- the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-- Boston, MA 02111-1307, USA.  
--

This file lists all the things we would like to add in the future.
Bugs are not listed here, for a list of all known bugs (fixed and
unfixed) have a look at the file BUGS.

(completed tasks are indented one tab)

- Resolve libcoserver problem (some linkers swallow syms because they
  are not needed in libserveez).
	- Document compilation hints (--disable-shared, static guile, ...)
- Runtime check for sendfile() (4 vs 7 args) in configure script.
- How can a self connected gnutella socket find out its port
  configuration for sending push requests and replies ?
	- Make http-cache faster (in fact, faster than the fs). Use other LRU
	  detection.
	- Remove SOCK_MAX_ID limit.
	- Control proto 'stat id' should print socket-type specific info only.
	- Restartable (automatically) coservers (ident dies on aWCS mass test).
	- Allow implementing servers in guile.
	- Convince the guile people to accept patches for Windows 
	  compatibility.
- Write a replacement for the inetd.
	- Make protocol detection limits / timeouts configurable.
	- Create a logo for Serveez.
	- Write an identd.
	- Define a CLF-compatible default http logfile format and make 
          it being used.
	- Rename the 'local-ip' part of port configurations to some
	  sane name.
- Implement a DNS server for home networks.
- Implement a DNS client.
	- Make Serveez embeddable (create libserveez.[so | dll]).
	- Implement dynamic server loading capabilities.
	- Consider Guile as configuration file parser.
	- Implement another example for an UDP server (drop q3key).
	- Start a reverse nslookup for each HTTP client.
	- Allow "/~user/*" HTTP requests. 
	- Using encryption for passwords (libcrypt).
	- Port forwarder for UDP and TCP.
- Some solution for upcoming IPv6 ?
	- Support for ICMP sockets.
- Content-Range implementation for Gnutella and HTTP.
	- Gnutella spider should share files.
	- Make http cgi file extension associations configurable in Win32.
	- Add --disable-poll option.
	- For directory list: scandir, alphasort, qsort.
	- Make Serveez automatically compile sizzle again.
	- Hack until WsControl tells the interface list on Windows.
	- What to do if coserver delivers argument not anymore valid ?
	- Default file reader to avoid http using its own callback.
	- Socket/protocol specific flags within socket structure.
	- Find out how the list of local interfaces works on different Unices.
	- Do something sensible when a coserver fails its job.
	- IP address representation must be unsigned long everywhere.
	- Rechain socket list to avoid starving of chain end.
	- Convert all protocols to new scheme.
	- support local sizzle installations (sizzle-config)
	- local ip addresses for portcfg
	- List of local ip addresses on supported systems.
	- HTTP: Make DefaultType and TypesConfig configurable.
	- Support for UDP sockets.
	- HTTP access logfile.
	- Implement a real nslookup coserver or integrate it in the 
	  reverse lookup coserver.
	- How to exec cgi scripts on Win32 that are not exe/com/bat ?
	- HTTP cache reinit via control protocol.
	- Configuration file handling.
	- Wrapper for snprintf (not on Compaq Tru64 Dec)
	- Implement Internet Relay Chat (IRC) protocol.
- Implement Internet Relay Chat (IRC) bouncer.
	- Set user and group id when executing cgi scripts.
	- HTTP directory listing when file is missing.
	- HTTP file cache.
	- Fix the problem with using Guile as a coserver
	- don't kick coservers on master server death
	- Add configure switch --enable-warning (1999-11-14/mgrabmue)
	- Add configure option for detecting whether usleep() is defined.
	- Add configure option for specifying max clients at configure time.
	  (1999-11-14/mgrabmue)
	- Check client ids which come from the master server for
	  validity. (1999-10-26/mgrabmue)
	- Implement a HTTP plugin for streaming sounds and pictures.
	- Make the protocol for coservers (e.g. ident) clean and document it.
	- Debug the aWCS protocol -- massclient with more than 4 threads
	  kills the master server. (1999-10-20/raimi)
	- Only accept master server if first message is "6 \0".
	- Implement aWCS client detection.
	- Implement ident lookup (do in a fork()ed server or do it unblocking).
	- Implement reverse lookup for client IPs (use raimi's
	  dns_reverse_lookup() after fork()ing).
	- Implement protocol detection.
	- Implement control protocol.
	- Add autoconf support for C and CPP flags. (1999-10-19/mgrabmue)
	- Add autoconf support for reverse host name lookup.
	  (1999-10-19/mgrabmue)
	- Check select() for EINV and reap socket structure if
	  happening. (1999-10-21/mgrabmue)
	- Catch and ignore SIGPIPE. (1999-10-21/mgrabmue)
	- Make a --disable-debug switch to shut up all log printings
	  beyond errors and wrap all calls to log_printf().
	  (1999-10-21/mgrabmue)
	- Hold all socket structures in a hash table to speed up
	  client lookup. (1999-10-21/mgrabmue)
	- socket.o: In function `sock_printf':
	  /chat/serveez-0.0.2/src/socket.c:565: undefined reference to
	  `vsnprintf'
	  under cygwin - make the configure checking for vsnprintf
	  working (1999-10-21/mgrabmue) 
	- Check whether libnsl is needed (like on Solaris)
	  (1999-10-21/mgrabmue)
