Kernel TCP Virtual Server - Version 0.0.10 - Febuary 14, 2003

2003-02-14  Wensong Zhang  <wensong@linux-vs.org>

	* tcp_vs_phttp.c: merged Hai Long's persistent HTTP scheduling
	extension into a separate scheduling module called "phttp". Thanks
	must go to Hai Long for making this externsion.

	(http_read_line): added the detection if the connection is closed,
	which can avoid infinite loop.

	(tcp_vs_phttp_schedule): changed to terminute the sheduling loop
	if the service is down or the system is unloaded.

	(tcp_vs_phttp_schedule): fixed the NULL pointer dereferencing in
	releasing the server list.

	* userspace/tcpvsadm.c (usage_exit): fixed some typos there.

2003-01-07  Wensong Zhang  <wensong@linux-vs.org>

	* userspace/tcpvsadm.c (usage_exit): fixed the help information.

	* tcp_vs.c (tcp_vs_relay_socket, skb_send_datagram_socket): added
	sanity checking of the result of tcp_vs_sendbuffer.

2002-06-17  Wensong Zhang  <wensong@linux-vs.org>

	* tcp_vs.c (tcp_vs_daemon): added the missing vfree(child_table)
	when the daemon ends.


Kernel TCP Virtual Server - Version 0.0.9 - May 26, 2002

2002-05-26  Wensong Zhang  <wensong@linux-vs.org>

	* tcp_vs.c (tcp_vs_relay_socket): two changes in the zero-copy
	sending and non zero-copying respectively.

	- In the zero-copying sending, added the code of destructing the
	skb from the source sock and set its owner to the dest sock. It
	seems that the sock parameters have been tuned correctly.

	- Added the code of continue sending the left data, if the
	skb_send_datagram_socket cannot send all the data as expected.

	* tcp_vs.h, tcp_vs_http.c (tcp_vs_http_schedule), tcp_vs_wlc.c
	(tcp_vs_wlc_schedule) and tcp_vs.c (tcp_vs_conn_handle): changed
	return type of the schedule method in the struct tcp_vs_scheduler
	from socket pointer to int, so that the return code can return
	more error codes.

	* tcp_vs.c (tcp_vs_child): changed to use NONBLOCK accept call.


Kernel TCP Virtual Server - Version 0.0.8 - May 11, 2002

2002-05-11  Wensong Zhang  <wensong@linux-vs.org>

	* tcp_vs.c (tcp_vs_relay_socket): rewrote most code of this
	function.

	Added the experimental code of attaching the skb from the source
	socket to the destination socket. Some tcp parameters still need
	tuning. This function is controlled by
	/proc/sys/net/ktcpvs/zerocopy_send, it is disabled by default.

	Added more code to handle nonlinear skb in sending socket data.

	Thank Julian for many discussions on this issue.

2002-05-05  Wensong Zhang  <wensong@linux-vs.org>

	* tcp_vs_http.c (parse_http_header): was changed to parse more
	METHODS, such as GET/HEAD/PUT/POST.

	* redirect.c : was added with a function of redirecting request to
	local socket, most code was taken from TUX.

	* tcp_vs.c (tcp_vs_conn_handle): was changed to redirect the
	request to the specified local socket when no destination server
	is found.

	* userspace/tcpvs_config.c: was changed to parse the "redirect"
	option from a config file.

	* userspace/tcpvsadm.c (print_service): was changed to print the
	"redirect" option.

2002-05-01  Wensong Zhang  <wensong@linux-vs.org>

	* regex/kernel.c (realloc): fixed the memmove bug in the
	realloc(). We should check whehter the new size is smaller than
	the old size, because it is possible that new size is smaller. The
	correct memmove call should be "memmove(new, old, min(new_size,
	old_size), otherwise the memmove will override some data, which
	would lead to some abnormal behavior.

	* regex/kernel.h (assert): added a preprocesor macro of assert.

	* userspace/tcpvsadm.c (main): fixed up the bug of deleting a real
	server.

2002-04-30  Wensong Zhang  <wensong@linux-vs.org>

	* tcp_vs_ctl.c (__tcp_vs_del_service): remove the rules first.

	* tcp_vs_ctl.c (tcp_vs_del_dest): return busy if it is referenced
	by a rule.

	* tcp_vs_ctl.c (tcp_vs_add_service): added checking of the result
	of tcp_vs_bind_scheduler().


Kernel TCP Virtual Server - Version 0.0.7 - April 20, 2002

2002-04-20  Wensong Zhang  <wensong@linux-vs.org>

	* tcp_vs.c (tcp_vs_relay_socket): Added to implement zero-copying
	in receiving and sending data from one socket to the
	other. Although I don't benchmark the performance, I think it
	should greatly improve the performance. :)

	* userspace/tcpvsadm.8: added the description about the matching
	pattern in regular expression.


Kernel TCP Virtual Server - Version 0.0.6 - April 12, 2002

2002-04-12  Wensong Zhang  <wensong@linux-vs.org>

	* Ported Henry Spencer's regular expression library into the
	kernel. It is used to replace the original simple expression in
	rule matching of KTCPVS. So, users can now specify flexible rules
	in content-base scheduling.

	* tcp_vs_ctl.c (tcp_vs_add_rule): was changed to use regcomp to
	compile pattern in the rule. The pattern ".*" or "^/.*" is used to
	specify the default server. When no other server is matched, this
	default server will be used.

	* tcp_vs_http.c (tcp_vs_http_matchrule): was changed to use
	regexec to match content against the precompiled pattern.

	* userspace/tcpvs_config.c (get_next_token): was modified to parse
	quoted string as a token.

	* userspace/tcpvsadm.c (print_service): was changed to print
	quoted pattern.


2002-03-16  Wensong Zhang  <wensong@linux-vs.org>

	* tcp_vs_ctl.c (tcp_vs_flush_rule): removed unnecessary write
	lock, otherwise it would hang up on SMP system.


Kernel TCP Virtual Server - Version 0.0.5 - December 21, 2001

2001-12-21  Wensong Zhang  <wensong@linux-vs.org>

	* tcp_vs_ctl.c: Added the rule of pattern "*" or "/*" at the tail
	of the rule list, so that the associated server can be used as the
	default server. When no other rules are matched, this rule will be
	matched finally.

	* Add a simple tcpvsadm man page

	* Some code tidy up.

2001-12-20  Wensong Zhang  <wensong@linux-vs.org>

	* Change --start|--stop command. Start/Stop all the services in the
	TCP virtual server table if no argument is specified.

	* Add the --load-configfile command, which is to load the TCP
	virtual server table from the config file.

2001-11-14  Wensong Zhang  <wensong@linux-vs.org>

	* Split various conversion and parsing function from tcpvsadm.c to
	helper.c.

	* Create the tcpvs_config.h and tcpvs_config.c, which can parse
	very basic tcpvs configuration file.

2001-10-29  Wensong Zhang  <wensong@linux-vs.org>

	* Add the macro TCP_VS_ERR_RL that calls net_ratelimit() to limit
	error information.


Kernel TCP Virtual Server - Version 0.0.4 - October 16, 2001

2001-10-16  Wensong Zhang  <wensong@gnuchina.org>

	* Revisited the locking facility of TCPVS service list access and
	service member access (such as the destination list and the rule
	list).

	* tcp_vs.c: use net_ratelimit() to guard TCP_VS_ERR outputs in the
	connection processing.

2001-10-15  Wensong Zhang  <wensong@gnuchina.org>

	* Added the function of server pool maintenance, which is to
	dynamically keep enough server thread to handle the current load.

	It does this by periodically check the number of spare servers
	(waiting for a request). If there are fewer than MinSpareServers,
	it creates more spare servers. If there are more than
	MaxSpareServers, some of the spares die off.

	* tcpvsadm updates

	Output more TCPVS config information.

	Change some default values of TCPVS config.


Kernel TCP Virtual Server - Version 0.0.3 - October 11, 2001

2001-10-10  Wensong Zhang  <wensong@gnuchina.org>

	* Changed to use [gs]etsockopt to manipulate TCPVS inside the
	kernel (through netfilter sockopt register), so that it is
	possible to merge IPVS and TCPVS code together in the future.

	* Code tide up, such as removing the code of reading and writing
	proc files, and adding/refining data structures.

	* tcpvsadm is updated to a new version.

	Added the libtcpvs library to manipulate TCPVS.

	Rewrote most code of tcpvsadm.c to use libtcpvs to interact with
	TCPVS inside the kernel.

2001-09-22  Wensong Zhang  <wensong@gnuchina.org>

	* tcp_vs_sched.c: add the including of head file <linux/interrupt>
	to avoid the compiling error that `do_softirq' is undeclared.

	* tcp_vs_http.c (parse_http_header):  add type into min marco
	call, so that it can be compiled in kernel 2.4.9.

2001-05-18  Wensong Zhang  <wensong@gnuchina.org>

	* replace sched->refcnt with sched->module use count for tcpvs
	scheduler references.


Kernel TCP Virtual Server - Version 0.0.2 - May 17, 2001

2001-05-17  Wensong Zhang  <wensong@gnuchina.org>

	* make the tcp_vs_conn_handle function work more correctly.

	* add new debug-level facility

	* rewrite a lot code of tcp_vs_ctl.c and tcpvsadm.c, so that most
	ktcpvs configuration is done by the tcpvsadm utility. and, add the
	add-rule/del-rule of content-based scheduling rule.

	* rewrite most code of the tcp_vs_http.c

	* Although the code is still ugly, it is a little bit better than
	the last release. :)


Kernel TCP Virtual Server - Version 0.0.1 - May 8, 2001

	* initial release. It is very very draft version, it is just used
	to prove the concept that application-level load balancing can
	work inside the kernel.
