
This file describes the changes to xinetd. The base version is 2.0.0.

2.0.0: (not released)

2.0.1: (not released)

2.0.2:
	Changes to the Makefile.
	Trivial mods to the usage() function

2.0.3:
	Changes to the Makefile.
	Fixed a bug in the usage() function

2.0.4:
	Distribution versions of the Makefile no longer contain any 
	references to options.opt

2.0.5:
	1) Clarified what an "unlisted RPC service" is in the man page
	2) Fixed a bug in remote_address_check which caused access to be denied
		for all hosts if no_access was set and only_from was not set.
	3) Fixed a bug which caused arbitrary syslog levels if the log_type
		was specified as SYSLOG in the "defaults" entry

2.0.6:
	bug fix in child.c: replaced strx_sprint with strx_print when naming
	interceptor processes


-------------------------------------------------------------------------------

2.1.0: (not released)
	This was mostly a clean-up of 2.0
	List of changes:

	A. The man page has been split into 3 parts:
			xinetd.man			:	man page describing the program
			xinetd.conf.man	:	man page describing the configuration file 
										This file now includes figures about the
										overhead of interception.
			xinetd.log.man		:	man page describing the log file
	B. New service attributes
			rpc_number			: to support unlisted RPC services
			nice					: to set the nice value of forked servers
	C. The IDONLY service flag was added
	D. Now uses the timer library unless NO_TIMERS is defined. If NO_TIMERS
		is not defined, the following are also available:
			a) a new option, -cc, to do periodic consistency checks
			b) timeout for reconfiguration
	E.	Configuration file man page now mentions that access control is 
		based on IP-address instead of domain address.
	F.	The interception code now sets the TCP_NODELAY option.
	G. The timeout when contacting a remote identification server is
		configurable both when the service request has been accepted and 
		when the request is rejected. In the former case it defaults to
		infinity while in the latter it defaults to 30 sec.
	H. The log line ids are now constants in an include file.
	I. The fsma library is no longer used.
	J. Most structure fields were renamed; certain functions were renamed too.
		Access to structure fields is now via macros.
	K. A bug in not restoring the number of descriptors to the soft limit
		was fixed.
	L. The -pid option works
	M. New internal services:
			"servers"		: lists active servers
			"services"		: lists active services

2.1.1:
	xinetd produces more meaningful messages if it can't start logging

2.1.2:
	Fixed 2 bugs:
		1) xinetd would request a port number for unlisted RPC services
			One could get around this by simply specifying the port attribute
			for the service; the specified value would be ignored anyway.
		2) xinetd initialization might fail sometimes in function msg_init()
			syslog logging was specified (i.e. the option -syslog was used)
			The cause of this bug was that the 
				xlog_control( xlog, XLOG_GETFD, &fd ) 
			operation will not fail for xlogs connected to syslog and
			the value of 'fd' would be used in the subsequent fcntl(). That
			value is arbitrary since 'fd' is a local variable.
			If 'fd' did not happen to refer to an open descriptor, the program 
			would terminate since the fcntl() would fail (btw, the success
			of the fcntl() call would be harmless if 'fd' happened to
			refer to an open descriptor).

2.1.3:
	Bug fix:
		only_from/no_access addresses would get inverted on little-endian
		machines when such addresses were specified using the numeric notation
		(for example, 128.138.45.3). This bug was in the numeric_addr function
		which did not convert the result of inet_addr to host-byte-order.
		A work around for the bug would be to use the factorized address 
		notation (for example, 128.138.45.{3})

2.1.4:
	Bug fixes:
		1) in dgram_echo(), sin_len was not being set before the invocation of
			recvfrom
		2) in finger_shutdown(), it was possible for Srdline() to return NULL
			(if the remote end would close the socket without sending anything).
			If the RECORD option was set in the log_on_failure flags, this
			would cause the forked xinetd process which did the recording to
			die since it would try to dereference a NULL pointer.

