1999-09-27  Niels Mller  <nisse@cuckoo.localdomain>

	* src/Makefile.am.in (SUBDIRS): Added scm subdirectory.
	(SCHEME): Added -l flag to load compatibility code for the right
	scheme implementation. Changed rules to use gaba.scm and
	make-char-classes.scm which have moved to the scm subdir.

	* configure.in: Bumped version to 0.1.11. Added --with-scheme
	option to select scheme implementation. Generate src/scm/Makefile.

Wed Sep 22 00:30:47 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/channel.c (channel_close_callback): Check the
 	CHANNEL_SENT_CLOSE flag before calling channel_close().

	* configure.in: Bumped version to 0.1.10.

	* src/server_publickey.c (do_authenticate): Initialize
	signature_start. 

	* src/server.c (format_service_accept_kludge): Made function static.

	* src/spki.c (keyblob2spki): Reorganized a little, and initialize
 	and free the dsa_public struct properly.

	* src/lshd.c (do_read_key): Replaced keypair_info with keypair. 

	* src/server_keyexchange.c (do_init_server_dh): -"-

	* src/lsh.c (main): Added trailing zeros in the getopt
 	initializer.

	*src/sexp_conv.c (main): -"-
	
	* src/dsa.c (init_dsa_public): New function.
	(make_dsa_signer): Use init_dsa_public.

	* src/exception.c: Use STATIC_EXCEPTION_HANDLER and
	STATIC_EXCEPTION.

Tue Sep 21 22:41:47 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/keyexchange.h: removed keypair_info class.

	* src/keyexchange.c: removed make_keypair_info function..
	
	* src/publickey_crypto.h: renamed keypair_info to keypair, and
 	moved here.

	* src/publickey_crypto.c: renamed make_keypair_info
 	renamed to make_keypair, and moved here.

	* src/sexp_streamed_parser.c (make_parse_transport_sexp): Fixed
	error message.

1999-09-21  Niels Mller  <nisse@cuckoo.localdomain>

	* src/read_data.c: Removed the EXC_IO_EOF handler.

1999-09-19  Niels Mller  <nisse@cuckoo.localdomain>

	* src/tcpforward_commands.c (forward_remote_port): Added a call to
	prog1, to get things evaluated at the right time.

	* src/server_session.c (do_spawn_shell): Simplified handling of
	exceptions. In particular, removed all handling of EXC_IO_EOF.

	* src/make_class (string-upcase): New function.
	(make-output): Associate any otherwise undefined global with a C
	symbol with the same name, but in uppercase.

	* src/lsh_writekey.c (read_sexp): Use transport syntax.

	* src/io.h (callback, callout): New classes. 

	* src/io.c (do_buffered_read): Close fd on EOF.
	(do_consuming_read): On EOF, pass NULL to the consumer, and close
	fd. 

	* src/exception.h (EXC_IO_EOF): Commented out this constant.

	* src/channel.c (do_channel_write): Handle EOF here.
	(do_channel_write_extended): -"-

	* src/sexp_streamed_parser.c (do_parse_base64): Bugfix: Increase
	done at the start of the loop.

1999-09-09  Balazs Scheidler  <bazsi@balabit.hu>

	* src/lsh.c, src/lshd.c, src/sexp_conv.c: added some uninitialized
 	fields to structure inits to avoid warning

	* src/command.c: fixed typo, make_once_continution ->
	make_once_continuation

	* src/server_password.h: removed, contents moved to server_userauth.h

	* src/server_publickey.h: removed, contents moved to server_userauth.h

	* src/server_userauth.h: merged with former server_password.h &
	server_publickey.h

	* src/server_userauth.c: unix account handling funtions moved
	here, userauth_handler class.

1999-09-07  Niels Mller  <nisse@cuckoo.localdomain>

	* abstract_io.h channel.c channel.h channel_commands.c client.c
	command.c gc.c gc.h io.c lsh.c lsh.h lsh_writekey.c lshd.c
	read_data.c read_packet.c server_password.c service.h sexp_conv.c
	sexp_parser.c sexp_streamed_parser.c tcpforward_commands.c
	tcpforward_commands.h werror.c: Cleaned up and deleted old dead
	code.

	* src/Makefile.am.in (liblsh_a_SOURCES): Removed sexp_parser.c 

	* configure.in: Bumbed version to 0.1.9.

	* src/server_session.c (do_spawn_shell): Use better exception
	handlers. 

	* src/read_data.c (do_exc_read_eof_channel_handler): Bugfix: Don't
	call channel_close() twice.

	* src/io_commands.c (do_listen): Raise a better exception.

	* src/io.h (close_callback): Changed return type to void.

	* src/exception.h (EXC_IO_LISTEN): New constant.

	* src/exception.c (make_report_exception_handler): New function.

	* src/connection.c (packet_types): Made this table public. 

	* src/channel_commands.c (do_channel_open_command): Raise a more
	sensible exception.

	* src/channel.c (register_channel): Take a connections as
	argument, in order to install the right exception handler.
	(prepare_channel_open): -"-

	* src/debug.c (do_debug): Display packet type. Don't display
	USERAUTH_REQUEST messages.

	* src/channel.h (ssh_channel): Added a connection argument to
	CHANNEL_SEND.

	* src/client.c (do_send_first): New function, to add stdin to the
	connection's resources.

	* src/userauth.h (authenticate): Added connection argument.

	* src/userauth.c (format_userauth_failure): Moved here (from
	server_userauth.c). 
	(format_userauth_success): -"-
	(make_userauth_special_exception): New function.

	* src/spki.c: Assorted bug fixes.

	* src/sexp_streamed_parser.c (make_parse_transport_sexp): New
	function. 
	(make_parse_base64): New function.

	* src/sexp_conv.c (main): Simplified exception handling.

	* src/sexp_commands.c: Commands to read and write s-expressions.

	* src/sexp.c (sexp2string): New function.
	(sexp2atom): New function.

	* src/server_userauth.c (do_exc_userauth_handler): Added handler
	for EXC_USERAUTH_SPECIAL.

	* src/server_password.c (do_authenticate): Added connection
	argument. 

	* src/server_keyexchange.c (do_handle_dh_init): Make sending of
	debug messages conditional on the peer-flags.

	* src/read_scan.h: Flagged as obsolete.

	* src/lsh_writekey.c (do_write_key): Deleted function. Use the
	appropriate commands instead.
	(main): Adapted to new sexp parser.

	* src/keyexchange.c (invoke_ssh2_dsa_kludge_p): Removed this
	function. 
	(do_handle_kexinit): Use the connection's peer_flags rather than
	an explicit check of the version string.

	* src/io_commands.c (do_io_write_file, do_io_read_fd): New
	commands to read and write files.
	(make_io_write_file_info): New function.

	* src/io.c (do_buffered_read): Attempt to recover if the handler
	disappears. 
	(do_exc_io_handler): New exception handler.
	(init_file): Install exception handler to close the file on i/o
	errors. 
	(io_write_file): New function.

	* src/exception.c (make_exception_handler): New function.

	* src/dsa.c (do_dsa_sign_kludge): Fixed ssh2 compatibility hack.
	(do_dsa_verify_kludge): -"-

	* src/digits.h (BASE64_PARTIAL): New constant.

	* src/digits.c (base64_init): Moved function to this file.
	(base64_decode): -"-

	* src/connection.h (ssh_connection): Added peer_flags field.

	* src/compiler.scm: Added comments describing the combinators
	used. 

	* src/command.h (PROG1): New global command.

	* src/client_keyexchange.c: instead of a simple verifier, an alist
	of verifiers is passed to make_dh_client(). Removed sending "Key
	exchange successful!" debug message, because it bugs ssh2. (Bazsi)


1999-09-06  Niels Mller  <nisse@cuckoo.localdomain>

	* src/atoms.c: Bugfix: Include <string.h> rather than <strings.h>. 

	* src/Makefile.am.in (liblsh_a_SOURCES): Added lookup_verifier.c,
	server_authorization.c, server_publickey.c and spki.c. Removed
	read_scan.c. 

	* src/lshd.c (main): Create an authorization_db class (Bazsi).

1999-07-23  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: merged different DATAFELLOWS workaround defines to
	a simple DATAFELLOWS_WORKAROUNDS, this affects a few files, for a
	list grep for DATAFELLOWS_WORKAROUNDS *.{c,h}

	* src/connection.h: peer_flags added to ssh_connection, workarounds
	and peer features have a flag here, which is then checked at
	appropriate places. 

	* src/connection_commands.c (do_line): peer_flags is set according
	to the peer version,
	(split_version_string): new function

	* src/dsa.c (parse_dsa_public): made public, moved public key
	mpz_t initialization here. [No, I didn't move the initialization.
	/nisse] 

	* src/server_authorization.c: new file, some public key checking
	is done
	
1999-07-22  Balazs Scheidler  <bazsi@balabit.hu>

	* src/lookup_verifier.{c,h}: new files. moved lookup_verifier
	class from client_keyexchange.h to separate files. It is also used
	by publickey authentication. Added an additional parameter to
	LOOKUP_VERIFIER: keyholder, which determines which host, or which
	user's keys should be checked.

	* src/dsa.c: do_dsa_verify_kludge() cleaned up
	
1999-07-11  Balazs Scheidler  <bazsi@balabit.hu>

	* src/client.c: added DataFellows workaround for
	SSH_MSG_SERVICE_ACCEPT, compiled in conditionally if
	DATAFELLOWS_SSH2_SERVICE_ACCEPT_KLUDGE is defined.

	* src/server.c: -"-

	* configure.in: changed --with-ssh-dss-kludge option to
	--with-datafellows-workarounds

	* src/dsa.c: ssh2 dsa kludge fixes, added dsa_kludge_algorithm
	(only creates verifiers!)
	
	* src/lsh.c: added support for alist maps of lookup verifiers 

	* src/debug.c: fixed a bug in packet_debug class

	* src/connection.c: added debug messages for sent packets

	* src/server_keyexchange.c: removed "Key exchange successful!"
	[actually, made conditional. /nisse]
	
1999-09-05  Niels Mller  <nisse@cuckoo.localdomain>

	* src/exception.h: Added SPKI-related exceptions.

	* src/atoms.in: Added spki-related names.

	* src/sexp_streamed_parser.c: Rewrote parser to use continuations
	and exceptions. For now, support for any encoding but
	SEXP_CANONICAL is dropped.

	* src/read_packet.c (do_read_packet): Handle available == 0 (EOF).
	* src/read_line.c (do_read_line): Handle available == 0 (EOF).

	* src/exception.h (EXC_SEXP, EXC_SEXP_SYNTAX, EXC_SEXP_EOF): New
	constants.

	* src/command.c: First attempt at a catch-command.

	* src/io.c (io_iter): Check for POLLNVAL.
	(do_buffered_read): Pass EOF to the read handler, rather than
	raising an exception.

	* src/Makefile.am.in: Added sexp_conv, sexp_commands.c.

	* sexp_commands.c, sexp_commands.h, sexp_conv.c, sexp_conv.h: New
	files. 

1999-09-04  Niels Mller  <nisse@cuckoo.localdomain>

	* src/lsh.c (do_lsh_default_handler): Improved handling of I/O
	exceptions. 

	* src/io_commands.c (do_connect): Improved exception handling.

	* src/io.c (io_connect): Added an exception_handler argument.

1999-08-30  Niels Mller  <nisse@cuckoo.localdomain>

	* Lots of files: Removed the exception argument from the
	A_WRITE-method. 

	* src/exception.h (PROTOCOL_ERROR): New macro.

1999-08-29  Niels Mller  <nisse@cuckoo.localdomain>

	* src/read_packet.c (do_read_packet): The MAC memcmp test was
	inverted. A real old bug.

	* src/io.c (do_consuming_read): Use CAST_SUBTYPE.
	(do_buffered_read): Stop processing if fd->read is NULL. For
	example, if an exception handler tried to close the file.

	* src/exception.c (do_default_handler): Fixed format string.

	* src/channel.c (alloc_channel): Update in_use table properly. .

	* configure.in: Bumped version to 0.1.8.

1999-08-28  Niels Mller  <nisse@cuckoo.localdomain>

	* src/Makefile.am.in (liblsh_a_SOURCES): Added esception.c.

1999-07-04  Niels Mller  <nisse@cuckoo.localdomain>

	* src/command.c, src/command.h, src/lsh.c, src/lshd.c: Don't allow
	a NULL continuation. Instead, use discard_continuation to ignore
	the value.

1999-07-01  Niels Mller  <nisse@cuckoo.localdomain>

	* src/tcpforward_commands.c (new_tcpip_channel): Don't initialize
	rec_window_size and rec_max_packet hare; let make_tcpip_channel
	handle that.
	(forward_remote_port): Noted that this doesn't work; connect gets
	called too early.

	* src/tcpforward.c (make_tcpip_channel): Initialize
	rec_window_size and rec_max_packet.

	* src/channel.c (prepare_channel_open): Added debug output.

	* configure.in: Bumped version to 0.1.3

	* NEWS: Wrote an entry for 0.1.3

1999-06-30  Niels Mller  <nisse@cuckoo.localdomain>

	* src/tcpforward_commands.c (new_tcpip_channel): Initialize
	max_window and rec_window_size.
	(remote_port_install_continuation): Added a port variable.
	Various bug fixes.

	* src/tcpforward.c (make_tcpip_channel): Set the max_window
	attribute.
	(do_tcpip_channel_die): New function.
	(do_open_forwarded_tcpip_continuation): Initialize channel->write,
	and call tcpip_channel_start_io, if the connection was successful.

	* src/sexp_parser.c, src/sexp_streamed_parser.c: Use digits.h
	rather than duplicating code.

	* src/lsh.c (main): Fixed -N flag.

	* src/io_commands.c (connect_with_port): Fixed name. Was
	connect_with_connection. 

	* src/Makefile.am.in (liblsh_a_SOURCES): Added digits.c.

	* src/digit_table.c (main): Remove #defines and static
	declarations from output.

	* src/command.h (COMMAND_RETURN): Evaluate the return value even
	if the continuation is NULL.

	* src/command.c (discard_continuation): New continuation.

	* src/channel_commands.c (do_install_global_request_handler):
	fixed format string to trace() call.
	(do_install_channel_open_handler): -"-
	(do_install_fix_global_request_handler): -"-
	(do_install_fix_channel_open_handler): -"-

	* src/digits.h: New file.

	* src/digits.c: New file.

	* src/channel.c (channel_start_receive): New function, to replace
	the LSH_CHANNEL_READY_REC flag.
	(do_channel_open_failure): Clear the open_continuation attribute.
	(do_channel_open_confirm): -"-
	(channel_close_callback): Handle the case reason == 0.

1999-06-28  Niels Mller  <nisse@cuckoo.localdomain>

	* src/tcpforward.h: Bugfix: Declare channel_open_forwarded_tcpip
	extern. 

	* src/channel.c (do_global_request_success): New function. 
	(do_global_request_failure): New function.
	(do_connection_service): Install handlers for
	SSH_MSG_REQUEST_SUCCESS and SSH_MSG_REQUEST_FAILURE.

	* src/lsh.c (main): Install a handler for forwarded-tcpip
	requests.

	* src/command.c (trace_command): New command.

1999-06-23  Niels Mller  <nisse@cuckoo.localdomain>

	* src/tcpforward_commands.c (forward_local_port): Use
	CAST_SUBTYPE() rather than CAST().

	* src/lsh.c (main): Added -R option.

	* src/io_commands.c (collect_listen): The _first_ argument is the
	callback function.

	* channel_commands.c, combinators.c, connection_commands.c,
	io_commands.c, tcpforward.c, tcpforward_commands.c: In collect_*
	functions, don't assert that info == NULL. It's info->next that
	should be NULL.
	
	* src/channel_commands.h (STATIC_INSTALL_GLOBAL_HANDLER): Bug fix,
	use STATIC_COLLECT_2_FINAL.
	(STATIC_INSTALL_OPEN_HANDLER): -"-

	* doc/TODO: Updated the section on the control language.

	* src/lshd.c (lshd_connection_service): Call connection_service to
	initialize the connection, before logging in. 

	* src/lsh.c (make_client_connect): Take advantage of
	connection_service being a constant.

	* src/make_class (process-expr): Generate a call to trace().

1999-06-22  Niels Mller  <nisse@cuckoo.localdomain>

	* src/command.h: Never pass a NULL as the first argument of a
	collect_* function.

Mon Jun 21 19:11:57 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/server_session.c (make_server_connection_service):
	Reorganized the commands to initialize a connection.

	* src/lshd.c: Use the "hook"-mechanism to install handlers on the
	connection. 

	* src/lsh.c (main): Don't use the old function
 	make_connection_service.

	* src/io_commands.c (connect_port): Renamed from
	connect_connection.
	(connect_connection): New command.

	* src/connection_commands.c (do_connection_remember): Commented
	out this unused function.

	* src/channel_commands.h (STATIC_INSTALL_GLOBAL_HANDLER): New
	macro. Currently broken.
	(STATIC_INSTALL_OPEN_HANDLER): -"-

	* src/channel_commands.c (make_install_fix_channel_open_handler):
	New function.
	(make_install_fix_global_request_handler): -"-

	* src/channel.c: Keep information about channel_types and
	global_requests in the channel_table, rather than in the packet
	handlers. 
	(make_connection_service): Removed this function. The command is
	now statically allocated.

1999-06-20  Niels Mller  <nisse@lysator.liu.se>

	* src/command.h (STATIC_COLLECT_1_FINAL): Commented out this
	redundant macro.

	* src/Makefile.am.in (liblsh_a_SOURCES): Added
	tcpforward_commands.c. 

1999-06-17  Niels Mller  <nisse@cuckoo.localdomain>

	* src/tcpforward.c, src/tcpforward_commands.c: Reorganization.
	Keep low-level protocol stuff in tcpforward.c, and move higher
	level functionality in tcpforward_commands.c.
	
	* src/io_commands.c (make_connect_connection): New function.

	* src/connection_commands.c (connection_remember_command): New
	command, currently not used.

	* src/command.h (STATIC_COMMAND): New macro.

	* src/tcpforward_commands.h: New file
	* src/tcpforward_commands.c: New file	

1999-06-15  Niels Mller  <nisse@cuckoo.localdomain>

	* src/tcpforward.c: Made forwarded_port a super class for
	local_port and remote_port. 
	(do_channel_open_direct_tcpip): Free dest_host on failure.
	(make_forward_listen): Added backend parameter.
	(remote_port): New class.
	(make_remote_port): New function.
	(remote_port_install_continuation): New class.
	(make_remote_port_install_continuation): New function.
	(request_tcpip_forward_command): New class.
	(make_request_tcpip_forward_command): New function.
	(remote_listen_value): New class.
	(make_remote_listen_value): New function.
	(start_forwarded_client_io): New command.
	(make_start_forwarded_client_io) New function.
	(make_forward_remote_port): New expression.
	(forward_remote_port): New function.

	* src/lsh.c (main): Pass backend to forward_local_port(). 

	* src/io_commands.c (collect_listen): Use CAST_SUBTYPE rather than
	CAST. 

	* src/connection.h (ssh_connection): Removed forwarded_pots
	attribute (moved to channel_table). 

	* src/command.h (STATIC_COLLECT_1_FINAL): New macro.

	* src/channel_commands.c (do_channel_global_command): New
	function. 

	* src/channel.h (channel_table): Moved information about forwarded
	ports here.

	* src/channel.c (make_channel_table): Initialize queues for
	handling global requests.

1999-06-14  Niels Mller  <nisse@cuckoo.localdomain>

	* configure.in: Added option -with-tcp-forward.
	Bumped version to 0.1.2.

	* src/queue.c (object_queue_init): New function.
	(object_queue_is_empty): New function.
	(object_queue_add_head): Update length.
	(object_queue_add_tail): -"-
	(object_queue_remove_head): -"-
	(object_queue_remove_tail): -"-
	(queue_to_list): New function.
	(object_queue_kill): New function.

	* src/queue.h (object_queue): Added length attribute.
	(FOR_OBJECT_QUEUE_REMOVE): Update length.

	* src/read_data.c (do_read_data): When the channel
	is closed because  of a read failure, don't throw away the
	return value from channel_close().

	* src/tcpforward.h (forwarded_port): Don't inherit resource.

	* src/tcpforward.c (do_direct_tcp_server_start_io): Fix flow control.
	(make_tcpip_channel): -"-
	(channel_open_direct_tcpip): Renamed (was open_direct_tcp).
	(do_channel_open_direct_tcpip): Renamed similarly.
	(make_channel_open_direct_tcpip): -"-
	(open_forwarded_tcpip_command): Renamed (was open_tcpip_command).
	(new_forwarded_tcpip_channel): Renamed similarly.
	(make_open_forwarded_tcpip_command): -"-
	(do_forward_start_io): Removed redundant assignment to
	channel->socket.
	(open_direct_tcpip_command): New class.
	(new_direct_tcpip_channel): New function.
	(make_open_direct_tcpip_command): New function.
	(open_direct_tcp): New command.
	(make_forward_local_port): New expression.
	(forward_local_port): New function.

	* src/server_session.c (do_spawn_shell): Fix flow control.

	* src/client.c (make_client_session): Fix flow control.

	* src/channel.h (ssh_channel): Inherit flow_controlled. 

	* src/channel.c (adjust_rec_window): Adapted for flow control.
	(channel_process_status): On LSH_CHANNEL_READY_REC, call
	prepare_window_adjust and c->write directly, rather than
	adjust_rec_window. 
	(do_channel_data): Don't call adjust_rec_window.
	(do_channel_extended_data): -"- 
	(init_channel): Install adjust_rec_window as flow control callback.

	* src/lshd.c (main): Added a --no-forward option.

	* src/lsh.c (make_client_connect): Don't invoke open_session here;
	instead use progn to apply a list of "actions"-commands to the
	connection. 
	(make_start_session): New command, do open a session and send some
	requests to it.
	(parse_forward_arg): New function, to parse arguments to -L and -R.
	(main): Build a list of "actions" when parsing the options. Added
	options -L, -N, -g.

	* src/write_buffer.h (flow_controlled): New class.
	(write_buffer): Added REPORT attribute.

	* src/write_buffer.c (write_buffer_consume): Do flow control. 

	* src/publickey_crypto.h (make_dsa_verifier_kludge,
	make_dsa_signer_classic, make_dsa_verifier_classic): New
	functions.

	* src/publickey_crypto.c: Moved the dsa-ralated code to a separate
	file. 

	* src/io.c (io_iter): Close fd:s that report POLLHUP.

	* src/Makefile.am.in (liblsh_a_SOURCES): Added dsa.c.

	* src/dsa.c: New file. Extracted from publickey_crypto.c. Also
	fixed the dsa signature format to match the latest draft.

1999-06-12  Niels Mller  <nisse@cuckoo.localdomain>

	* configure.in: Bump version to lsh-0.1.1

	* src/lsh.c (main): Reset the tty mode before return.

1999-06-12    <nisse@cuckoo.localdomain>

	* src/lsh_keygen.c (main): Use %xn rather than %hn for debug().
	* src/lshd.c (do_read_key): -"-
	* src/publickey_crypto.c (dsa_hash): -"-
	(generic_dsa_sign): -"-
	(do_dsa_verify): -"-

	* src/channel.c (make_channel_table): Initialize
	active_global_requests and pending_global_requests.
	* src/channel.c, src/channel.h: object_queues should be declared
	as structs.
	* src/connection.c, src/connection.h: -"-
	* src/tcpforward.c: -"-
	
1999-06-11    <nisse@cuckoo.localdomain>

	* src/tcpforward.c (direct_tcp_server_start_io): Renamed class,
	and related functions. Was forward_server_start_io.
	(do_forward_start_io): Renamed. Was do_forward_client_io.

	* src/io_commands.h (LISTEN_COMMAND): New define.

	* src/tcpforward.c (do_tcpip_forward_request): Use GLOBAL_REQUEST_CALLBACK().
	(do_tcp_forward_continuation): -"-
	Various bug fixes.

	* src/channel.c (global_request_status): New class. 
	(make_global_request_status): New function.
	(global_request_response): New class.
	(do_global_request_response): New function.
	(make_global_request_response): New function.
	(do_global_request): Pass a callback object to the handler.

	* src/channel.h (channel_table): New attributes
	active_global_requests and pending_global_requests.
	(global_request_callback): New class.
	(global_request): Let the handler method take a
	global_request_callback as argument.

	* src/channel_commands.h (global_request_command): New class. 
	(do_channel_global_command): New function (not yet implemented).

	* src/queue.c (lsh_queue_peek_head): New function.
	(lsh_queue_peek_tail): -"-
	(object_queue_peek_head): -"-
	(object_queue_peek_tail): -"-
	(object_queue_get_contents): Cast here, rather than in all calling
	functions. 

	* src/io_commands.c (listen_connection): Adapted to the needs for
	tcp forwarding.
	(make_listen_command): New function.

	* src/make_class (process-expr): Include the compiler output in a
	comment. 

1999-06-07    <nisse@cuckoo.localdomain>

	* src/werror.c (werror_vformat): Removed 'h'-modifier. Use 'x'
	instead. 

	* src/queue.h (struct object_queue_node): Made this structure public.
	(FOR_OBJECT_QUEUE): Traverse an object_queue (Bazsi).
	(FOR_OBJECT_QUEUE_REMOVE): Somewhat ugly macro to delete the
	current node inside a for-loop.

	* src/lshd.c (main): Added tcpforward support (Bazsi).

	* src/io.h (address_info): Renamed the ADDRESS field. Is now
	called IP.

	* src/io.c (io_iter): When closing a file, always invoke its close
	callback (if it is non-NULL). Previously, the callback was never
	invoked if fd->close_reason was zero.

	(io_iter): Some handling of POLLHUP and POLLPRI.

	* src/format.h (lsh_string_cmp, lsh_string_cmp_l): New functions
	(don't really belong in this file).

1999-06-06    <nisse@cuckoo.streamserve.com>

	* src/dsa_keygen.c (dsa_nist_gen): Bugfix: Removed extra mpz_init().

1999-06-07    <nisse@cuckoo.localdomain>

	* src/connection.h (ssh_connection): New field forwarded_ports
	(Bazsi).  

Wed May 26 18:54:43 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/client.c: #include signal.h (reported by MArtin Jabobsson).  

Wen May 12 21:35:22 1999  Niels Mller  <nisse@lysator.liu.se>

	* Configure tests for strerror and strsignal.

Tue May 11 20:22:05 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/sexp_test.c (main): Create the fd objects properly (old
	problem).

	* src/server_session.c (do_spawn_shell): Fixed typo.
	(do_send): Handle the case that session->err is NULL.

	* src/server_pty.c: Added a better warning message if opening
 	/dev/ptmx failes.

	* src/keyexchange.c (parse_kexinit): Use the improved
	parse_atom_list() function.

	* src/parse.c (parse_atoms): New function.
	(parse_atom_list): Read length field first, so that callers don't
	have to call parse_sub_buffer() manually.

	* src/client_pty.c (do_pty_continuation, make_pty_request): Moved
	the call of CFMAKERAW (Bazsi). 

	* src/channel.c (adjust_rec_window): Don't touch the
 	rec_window_size attribute here; that's done in
 	prepare_window_adjust().
	(do_channel_data, do_channel_extended_data): rec_window_size was
 	updated too many times, fixed. (Bazsi).

Mon May 10 23:20:54 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/server_session.c (make_pty): Added BASH_WORKAROUND (Bazsi).
	(server_session, do_spawn_shell): Allow the session->err field to
	be NULL. Probably some more functions need updating.

	* src/server_pty.c (pty_check_permissions): New function,
 	extracted from pty_grantpt_uid.
	(pty_allocate): Do some permissions check also on BSD (Bazsi).
	Also disabled the openpty() version.

	* src/crypto.h, src/Makefile.am.in: IDEA support (Bazsi).

	* src/idea.c: New file (Bazsi).

Sun May  9 20:17:27 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/keyexchange.c, src/keyexchange.h (kex_build_secret): New
 	function, implementing the changed session key generation in the
	transport-05 draft (pointed out by Joseph Galbraith).
	
	* src/server_keyexchange.c (do_handle_dh_init): Use
 	kex_build_secret().

	* src/client_keyexchange.c (do_handle_dh_reply): Use
 	kex_build_secret().

	* src/Makefile.am.in (EXTRA_DIST): Added compiler.scm to the dist.

Sun Apr 25 15:47:13 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/channel.c, src/channel.h, src/client.c, src/client.h,
 	src/client_pty.c, src/client_pty.c, src/command.h,
 	src/connection.c, src/keyexchange.c, src/lsh.c, src/lshd.c,
 	src/queue.c, src/resource.c, src/server.h, src/server_password.c,
 	src/server_pty.h, src/server_session.c, src/service.c,
 	src/service.h, src/session.c, src/tcpforward.c,
 	src/write_buffer.c, src/zlib.c: Removed old #if:ed out code.

	* src/server_session.c (do_close): Return a status code, rather
	than void.

	* src/lshd.c (main): Added pty support.

	* src/client_pty.c (make_pty_request): Bugfix: Select raw mode.

	* src/client.c (do_client_session_eof): Renamed the
	close_client_session function.
	(do_client_session_close): New function, to set the PENDING_CLOSED
	flag when the session is closed.
	(make_client_session): Install a close method.

	* src/channel.h (ssh_channel): Let the close method return a
	status value.
	* src/channel.c (channel_process_status): Moved processing of
	LSH_CHANNEL_PENDING_CLOSE after LSH_CHANNEL_FINISHED. This way, it
	is possible for the channels close-callback to return
	LSH_CHANNEL_PENDING_CLOSE. 

Tue Apr 20 00:00:58 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/resource.c (do_kill_all): Bugfix (use CAST_SUBTYPE rather
 	than CAST).

	* src/lsh.c (make_client_connect): Added calls die_on_null and
 	init_connection.

	* src/client.c (new_session): Initialize session->write from the
	connection. 

Mon Apr 19 16:23:22 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/channel.c (do_channel_success, do_channel_failure): Bugfix
 	(use CAST_SUBTYPE rather than CAST).

	* src/lsh.c: Adapted to the command language.

	* src/command.c (do_progn): Bug fix.

	* src/client_pty.c (make_pty_request): New function.

	* src/client.c (do_client_io): Renamed the do_io function, and
	turned it into the client_io command.
	(make_client_session): Removed the requests argument.
	(do_format_shell_request): New function.
	(request_shell): New command.
	#if:ed out a lot of old code. pty handling moved to client_pty.h. 

	* src/channel_commands.c (do_channel_request_command): Pass
	continuation pointer to the FORMAT_CHANNEL_REQUEST method.

	* src/invert-defs: Don't use echo "\n" (Bazsi).

Sun Apr 18 23:03:20 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/channel_commands.h (channel_request_command): Pass a pointer
 	to a pointer to the command's continuation as an argument. This
	replaces the want_reply argument, and it also makes it possible
	for the command to add a new continuation which is invoked when
	the peers response is received. 

Wed Apr 14 00:32:34 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/command.c (make_parallell_progn): New command.

	* src/channel_commands.h (channel_request_command): New class. 

	* src/channel_commands.c (do_channel_open_command): Bugfix: Use
	CAST rather than CAST_SUBTYPE for connection argument.

	* src/channel_commands.c (do_channel_request_command): New
 	function.

	* src/channel.c (init_channel): Init pending_requests queue.
	Deleted channel_success and channel_failure.
	(do_channel_success): Use pending_requests queue rather than
	channel_success and channel_failure.
	(do_channel_failure): Likewise.

	* src/channel.h (ssh_channel): New attribute pending_requests
	(a queue). Removed methods channel_success and channel_failure.

	* src/io.c (connect_callback): Fixed call to getsockopt.

	* src/io_commands.c (do_connect_continue): Check for fd < 0, and
	in this case, invoke the continuation with a NULL value.

	* src/io.c (connect_callback): Check socket error status, and
	invoke th FD_CALLBACK with -1 as argument if the connection
	failed.

	* src/resource.c, src/resource.h: Use the object_queue struct.
	Deleted struct resource_node, and associated allocation and gc
	functions.  

	* src/queue.c (object_queue_add_head): New function.
	(object_queue_add_tail): Likewise
	(object_queue_remove_head): Likewise
	(object_queue_remove_tail): Likewise

	* src/queue.h (object_queue): New struct. 

Tue Apr 13 21:24:08 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/server_pty.c (pty_grantpt_uid): Fixed pid/uid typo (Noted by
	Bazsi).

Mon Apr 12 22:20:01 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/server_session.c (do_alloc_pty): Pass uid on to
	pty_allocate(). 

	* src/server_pty.c (pty_grantpt_uid): New function to set up the
	permissions properly, when the current uid is different from the
	user that should own the pty.
	(pty_allocate): Added uid-argument, to take avantage of
	pty_grantpt_uid. 

Sun Apr 11 22:56:02 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/server.c, src/server.h, src/server_session.c,
	src/server_session.h: Moved session features (i.e. shell and pty
	handling) into a separate file.

	* src/password.h (unix_user): Moved definition to
	server_password.h. 

	* src/lshd.c (main): Added user authentication and connection
	service, now using the command language.

	* src/channel.h (make_connection_service): Removed START argument.
	Now returns a struct command *. 

	* src/channel.c (connection_service): Removed START attribute. 
	(do_connection_service): Use the command's continuation rather than
	the START attribute.

	* src/io.c (tcp_addr): Added this function again.
	(address_info2sockaddr_in): Use tcp_addr().

Wed Apr  7 21:30:35 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/channel.c, src/server.c: Started adapting the functions to
 	the command framework.

	* src/service.c, src/service.h: These files are almost obsolete
	now. #if:ed out most of them. 

	* src/userauth.h, src/server_userauth.c, src/server_password.c:
 	Reorganized user authentication. An authentication method takes
 	the data from a USERAUTH_REQUEST message, and returns some
 	userinfo-object if authentication was successful. The general
	(server-side) userauth-code invokes the right service with the
 	user-info as argument, and the result (typically a command taking
 	a connection as argument) is passed to the continuation of the
 	userauth command.

	* src/queue.h (FOR_QUEUE): Bugfix (Bazsi).

Tue Apr  6 21:17:15 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/compiler.scm: Added support for let and let*.
	(make-preprocess): New function.
	
Mon Apr  5 11:43:12 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/werror.c (werror_hex): Bugfix.

	* src/service.c: Moved server-specific functionality to server.c. 

	* src/server.c (make_service_request_handler): New function
	(replaces make_service_handler in service.c).
	(make_offer_service): New function (replaces the meta_service in
	service.c). 

	* src/lsh.c (make_client_connect): Invoke commands to perform user
 	authentication.

	* src/connection.c (handle_connection): Display packet type in
	debug messages. Uses packet_types.h.

	* src/command.h (COMMAND_RETURN, COMMAND_CALL, COMMAND_SIMPLE):
	Cast arguments to struct lsh_object *.

	* src/Makefile.am.in: Added packet_types.h and channel_commands.c.
	
	* src/client_userauth.c: Bent the user authentication mechanism
 	into a command.

	* src/client.c (request_service): Rewrote as a command. Also
	removed some other old code. 
	(make_request_service): Renamed function (was request_service()). 

Sun Apr  4 22:18:54 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/server.c (do_spawn_shell): Use the make_io_fd function.

	* src/lsh_writekey.c, src/sexp_test.c (main): Use the make_io_fd
 	function.

	* src/tcpforward.c (do_tcpip_connected): Use the make_io_fd
 	function.

	* src/lsh.c, src/lshd.c: Use the control language language.
 	Commented out a lot of features that are currently broken.

	* src/keyexchange.c (make_kexinit_handler): Removed finished
	argument. 

	* src/keyexchange.h (keyexchange_algorithm): Removed finished
	argument from the init method. 

	* src/connection_commands.c (connection_line_handler): Removed
	continuation attribute.
	(do_line): Don't invoke any continuation here; return LSH_OK and
	let the keyexchange-init handlers do their work.
	(make_connection_read_line): Removed continuation argument.

	* src/connection_commands.c (connection_command): Added randomness
 	attribute.
	(do_connection): Added call to connection_init_io.
	(make_handshake_command): Added randomness argument.

	* src/client_keyexchange.c (do_client): Removed finished
 	attribute.
	(do_handle_dh_reply): Pass connection to the
 	connection->established continuation (if non-NULL).

	* src/server_keyexchange.c (dh_server): Removed finished
	attribute.
	(do_handle_dh_init): Pass connection to the
	connection->established continuation (if non-NULL).

	* src/channel_commands.h (channel_open_command): Fixed declaration
	of the new_channel method. 

	* src/channel.c (do_channel_open_confirm, do_channel_open_failure,
 	init_channel): Use the channel_open_continuation attribute.

	* src/io_commands.c (do_listen, do_connect): Use new
 	address_info2sockaddr_in() function.
	(do_listen): If listen() failes, return LSH_COMMAND_FAILED, and
	never invoke the command's continuation.
	(make_simple_listen): New function.
	(io_log_peer_command): New command.

	* src/lsh.h (LSH_COMMAND_FAILED): New status code.

	* src/io.c (get_portno): New function.
	(tcp_addr): Commented out this function.
	(make_address_info_c): New function.
	(sockaddr_in2address_info): Renamed from sock
	(sockaddr2info): Fixed bug in format string.
	(address_info2sockaddr_in): New function.

	* src/format.c (format_decimal): New function (previously
	duplicated in several places).
	(ssh_format): New format %di to write decimal integers.
	(write_decimal_length): Use the format_decimal() function.

	* src/werror.c (werror_decimal): Use the format_decimal() function.

Fri Apr  2 17:00:13 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/make_class (process-expr): Fixed handling of the PARAMS
	attribute. Declare generated functions static.

	* src/io_commands.c (make_simple_connect): New function.

Tue Mar 30 21:48:08 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/read_line.c (do_read_line): Bug fix noticed by Bazsi.

Fri Mar 26 03:05:16 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/io_commands.c (listen_command_callback): Added BACKEND
	variable.  
	(do_connect): New function.

	* src/client_keyexchange.c (do_handle_dh_reply): Invoke the
 	connection's ESTABLISHED continuation if the key exchange is
 	successful.
	(dh_client_exchange, do_init_client_dh): Removed FINISHED
 	attribute.

	* src/command.c, src/command.h (command_die_on_null): New command.
 	Don't know how useful it is.

	* src/connection.c (make_ssh_connection): Take a continuation as
	argument. 

	* src/connection.h (ssh_connection): Added an ESTABLISHED
	continuation, which replaces the FINISHED field previously found
	in the keyexchange-related objects.

	* src/keyexchange.c (kexinit_handler): Removed the FINISHED
	attribute. 
	(initiate_keyexchange): Deleted some of the arguments. The kexinit
	is found inside the connection object, and so is any
	first_kex_packet. 

	* src/keyexchange.h: Changed the MAKE_KEXINIT method back. Added a
	first_kex_packet field to the kexinit object, which may be filled
	in by MAKE_KEXINIT.

Wed Mar 24 02:56:41 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/channel_commands.c, src/channel_commands.h: New files.

	* src/client.c (session_open_command): New class.

	* src/channel.h (ssh_channel): Replaced the open_confirm and
	open_failure methods with a command_continuation.

	* src/connection_commands.c: New file. The connection_command
	unifies some of the logic from in client.c and server.c.

	* src/io.h (address_info): New class.
	(fd_listen_callback): Use address_info rather than struct
 	sockaddr.

	* src/io.c (make_io_fd): New function.
	(io_read_write, io_read, io_write): Now takes a io_fd as argument,
 	rather than a numerical fd.

	* src/keyexchange.h (make_kexinit): New definition of the
 	MAKE_KEXINIT method. Should create and register a kexinit message,
	and return a string consisting of this message and any extra
	speculative message. Should not actually write anything.

Tue Mar 23 03:12:15 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/io_commands.c, src/io_commands.h: New files, for listen and
	connect commands.

Fri Mar 19 18:15:38 1999    <nisse@idonex.se>

	* src/make_class (process-expr): Generate code using more
	combinators. 

Fri Mar 19 01:03:50 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/combinators.c: New file. Implemented all of the I, K, S, B,
 	C S', B' and C' combinators.

	* src/command.c, src/command.h: Added collect_info_N and
	collect_state_N (n=1, 2, 3, 4) to handle builtin functions that
	need to collect some arguments before actually doing anything.

Wed Mar 17 00:07:07 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/compiler.scm (let-and): New macro.
	(match): Simple pattern matcher for optimizations.
	(optimize): New optimizer.
	(preprocess): Use the formal arguments in the right order.

	* src/algorithms.c: Enable CAST. Bug fixes.

Tue Mar 16 03:36:20 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/publickey_crypto.c (dh_process_server_msg,
 	dh_process_client_msg): Use GROUP_MEMBER to determine if dh-values
 	are valid. Currently, this method checks the size of the number,
 	but doesn't check that is indeed a member of the cyclic subgroup
 	used.

	* src/read_packet.c (do_read_packet): Handle the case where the
	first block contains an entire ssh packet (happens with twofish).

	* src/tcpforward.c (tcpforward_foo): Use COMMAND_UNIMPLEMENTED, so
	that the expression compiles.

	* src/make_class (output-expression): Bug fix.

	* src/io.c (do_read): Warn when called with a zero length.

	* src/command.c (command_unimplemented): New command (which aborts
	if called).

Mon Mar 15 00:56:18 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/digit_table.c (main): Fixed hex digits a-f.

	* configure.in: Disabled the AM_MAINTAINER_MODE macro.

Sun Mar 14 21:04:58 1999  Niels Mller  <nisse@lysator.liu.se>

	* README (ZLIB): Added canonical location of zlib (James Young). 

Fri Mar 12 17:03:47 1999  Niels Mller  <nisse@lysator.liu.se>

	* configure.in: Added AM_MAINTAINER_MODE (Ray). Added changequote
 	calls when testing for specific utmp fields (Ray).

Tue Mar  9 06:25:11 1999    <ray@zensunni>

	* doc/TODO: Fixed typo.

Sun Mar  7 20:32:52 1999    <ray@zensunni>

	* src/cast.c: New.
	* src/Makefile.am.in, src/crypto.c, src/crypto.h, src/algorithms.c:
	Adapted for CAST-128.

	* src/symmetric/include/cast.h, src/symmetric/cast.c: Added consts.
	Added cast_selftest().

	* src/symmetric/twofish.c (twofish_selftest): Fixed.
	
	* src/io.c, src/read_line.c, src/read_packet.c, src/read_scan.c: Added
	asserts to ensure read() is called with a length > 0.

	* doc/TODO: Removed the entry about CAST's patent status. RFC 2144
	doesn't mention patents, and the abstract suggests CAST-128 is
	unencumbered.

	* doc/TODO, src/userauth.h: Fixed typos.

Fri Mar  5 20:09:09 1999    <ray@zensunni>

	* src/symmetric/twofish.c: Buglet fix by Ruud.

	* make_am: Inserted space required for latest bash. (Noted by Ruud)

Fri Mar 12 02:00:53 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/tcpforward.c (tcpforward-foo): Added a first test expression
 	for the compiler.

	* src/make_class: Changed the magic tag. Now is "/* GABA:".
 	(process-expr): New function interfacing to compiler.scm.
	(process-input, process-class): Splitted the process-class
 	function into several functions.

	* src/command.c (gaba_apply, gaba_apply_S_1, gaba_apply_S_2): New
 	functions, to be called by automatically generated code.
	(command_K, command_K_1) : Implemented the K combinator.

Thu Mar 11 18:07:25 1999    <nisse@idonex.se>

	* src/bignum.c (bignum_next_prime): Fixed off-by-one overflow.

Wed Mar 10 17:26:59 1999    <nisse@idonex.se>

	* src/command.c (do_call_simple_command): COMMAND_CALL method for
	any command_simple instances.

Thu Mar 11 03:01:00 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/server_pty.c (tty_setctty): Fixed error message.

	* src/command.c: Made the builtin commands instances of
 	command_simple, which means that they can return results directly,
 	without any continuation function.

Wed Mar 10 17:26:59 1999    <nisse@idonex.se>

	* src/command.h (command_simple): New class. Like command, but can
	return a value immediately, rather than using a continuation
	function. 
	(STATIC_COMMAND_SIMPLE): New macro to define a static command.

Tue Mar  9 22:18:40 1999    <nisse@idonex.se>

	* src/command.c (make_apply): New function.
	Implemented the S and B combinators (no idea if they will turn out
	to be useful), and a listen function.

	* src/server.c (server_initiate, make_server_callback): Use new
 	fd_listen_callback type.

	* src/io.h (fd_listen_callback): New class.

	* src/io.c (tcp_addr): Moved this function from tcpforward.c.
	(listen_callback): Pass the peer address to the listen callback.

Mon Mar  8 19:22:30 1999    <nisse@idonex.se>

	* src/publickey_crypto.c (make_zn): New argument: order.

Mon Mar  8 00:29:17 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/command.c: New file.

	* src/io.c (write_callback): Use the write_buffer_consume()
	function. 

	* src/resource.c, src/resource.h, src/write_buffer.c,
	src/write_buffer.h: Use struct lsh_queue. 

	* src/write_buffer.h (write_buffer->length): New instance
 	variable.

	* src/write_buffer.c (write_buffer_consume): New function.

	* src/queue.c, src/queue.h: New files. Generic doubly linked list.

Sun Mar  7 15:21:43 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/werror.c (werror_decimal): Bug fix.

	* src/server.c (do_open_session): Adapted to the new CHANNEL_OPEN
 	convention.
	(make_server_connection_service): Renamed (was
 	make_server_session_Service).
	(server_connection_service): New instance variable, backend.
	Needed for tcp forwarding.

	* src/io.c (io_read_write): Changed return type to struct io_fd *
	(Bazsi). 

	* src/tty.h (CFMAKERAW): Set the VMIN and VTIME attributes.

	* src/tcpforward.c, src/tcpforward.h: New files (Bazsi). 

	* src/channel.h (channel_open_callback): New class, for
	opening new channels asyncronously.
	* (channel_open): Handler method now takes a channel_open_callback
	argument.

	* src/channel.c (channel_open_response): New class.
	(format_global_success): New function.
	(do_channel_open_response): New function. 
	(make_channel_open_response): New function.
	(do_channel_open): Moved most processing into do_channel_open
	response. 

Fri Mar  5 03:23:06 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/symmetric/twofish.c, src/symmetric/twofish.h
 	(twofish_selftest): Made non static.
	(twofish_setup): Removed memory allocation. Instead, a
 	TWOFISH_pointer is given as an argument.
	(twofish_encrypt, twofish_decrypt): Use correct pointer types. No
 	void * or casts.

	* src/symmetric/Makefile.am.in (noinst_PROGRAMS): Added
	twofish_test and generate_q.
	(Makefile.am): Updated the rule for this target.

	* src/twofish.c (twofish_instance): Include the context struct
	directly in the instance, without extra indirection.

	* src/crypto.c: Marked this file as obsolete.

	* src/algorithms.c (default_crypto_algorithms): Added
	ATOM_TWOFISH_CBC and ATOM_IDEA_CBC.

Wed Mar  3 13:26:02 1999    <ray@zensunni>

	* src/symmetric/twofish.c, src/symmetric/include/twofish.h: New.
	LGPL-ed Twofish implementation by Ruud de Rooij <ruud@debian.org>.
	* src/twofish.c: New. Based on src/blowfish.c .
	* src/atoms.in, src/Makefile.am.in, src/algorithms.c, src/crypto.c,
	src/crypto.h: Updated for Twofish.

Mon Mar  1 01:36:54 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/publickey_crypto.c (init_diffie_hellman_instance): Include
 	length fields when hashing.

	* src/publickey_crypto.c: Some support for broken ssh2 signatures
	(Bazsi).
 	(generic_dsa_sign): New function.
	(do_dsa_sign_kludge): New function.
	(make_dsa_signer_kludge): New function.

	* src/client_keyexchange.c (do_init_client_dh): Renamed the
	do_init_dh function.

	* src/keyexchange.h (keypair_info): New type. 

	* src/keyexchange.c (do_handle_kexinit): Added ssh2-dss kludge
	(Bazsi). 
	(make_keypair_info): New function.

	* src/lshd.c: Deleted old code. Use a keypair_info alist for the
 	host key(s).

	* src/server_keyexchange.h, src/server_keyexchange.c: Use a
	keypair_info alist.
	
	* src/format.c (ssh_format): Added 'u' modifier, for unsigned
	bignums. 

	* src/connection.h (connection): Replaced the client_version and
	server_version fields with an array. 

	* src/atoms.in: Added ssh-dss-kludge atom (used for supporting
 	buggy ssh2 versions).

	* configure.in: Test for syslog.h.
	New --with-ssh2-dsa-kludge option.

Sun Feb 28 19:29:36 1999    <ray@zensunni>

	* configure.in: Fixed struct utmp member tests.

	* misc/Makefile.am.in: Include ctags.mk.

	* src/symmetric/twofish.c, src/symmetric/include/twofish.h: New.
	Placeholders.
	* src/symmetric/Makefile.am.in: Updated for twofish.

	* src/atoms.in: With the updated draft, 256-bit TwoFish is now
	recommended.

Sun Feb 28 20:01:32 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/cvs_headers, src/used_headers: Fixes for compatibility with
	non-GNU sed. 

Sat Feb 27 04:43:25 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/werror.c, src/werror.h (set_error_ignore): New function.

	* src/string_buffer.c (string_buffer_clear): Bug fix.

	* src/server_pty.h (pty_info): Use string type for the tty_name
	field. 

	* src/server_pty.c (pty_allocate): Save the file name of te slave
	tty. Corrected the returned values.
	(tty_setctty): Ugly "fix" in the SysV-version of this function.
	Better error messages.

	* src/server.c (do_spawn_shell): Do child's pty handling before
 	closing fd:s. Pass struct pty_info to tty_setctty(). More debug.

	* AUTHORS, src/reaper.c: Fixed typos. (Ray)
	
	* configure.in, acconfig.h: Check for ut_addr_v6 in struct utmp; check
	for utmpx.h . Fixed openpty check. Check for syslog(). (Ray)

Mon Feb 22 22:49:09 1999  Niels Mller  <nisse@lysator.liu.se>

	* src/werror.c (werror_hex): Was completely broken. Fixed.

	* configure.in: Fixed uses of AC_TRY_COMPILE.

Thu Feb 18 21:48:54 1999    <ray@zensunni>

	* (many files): Updated FSF address.

	* AUTHORS: added getopt origin.
	
	* configure.in, acconfig.h: Check for ut_addr_v6 in struct utmp; check
	for utmpx.h . Fixed openpty check. Check for syslog(). Fixed utmp
	variations detection.

	* doc/DSA.5, doc/SHA.5, doc/SPKI.5, doc/lsh.1, doc/lsh_keygen.1,
	doc/lsh_writekey.1, doc/lshd.8, doc/secsh.5: New.

	* src/server.c: Include strings.h if available (for bzero()); utmp
	support; uptmx support.

	* AUTHORS, src/reaper.c: Fixed typos.
	
Thu Feb 18 03:35:45 1999    <nisse@idonex.se>

	* src/zlib.c: Reorganized. Now uses string_buffer for allocation.

	* src/xalloc.c (debug_malloc, debug_free): Allocate memory in
	units of long. Hopefully, this should solve the alpha alignment
	problems. 

	* src/werror.c: Initial syslog support.
	(write_syslog): New function (Ray).
	(set_error_syslog): New function.

	* src/tty.c (tty_encode_term_mode): New implementation, by
	Keresztg.

	* src/string_buffer.c, src/string_buffer.h: New files. Handling of
	strings whose lengths are not known in advance. Currently used
	only by zlib.c.

	* src/server_pty.c (pty_allocate): Added Ray's UNIX98-style pty
	allocation. 
	(tty_setctty): Moved from tty.c, and adapted to SysV/UNIX98.

	* src/memcmp.c: Copied implementation from GNU textutils.

	* src/abstract_crypto.c (memxor): Moved this function into a
	separate file.

	* make_am: Use a less efficient, but appearantly more rubust
	method to generate the .dist_headers files.

	* configure.in: Added tests for syslog, utmp, unix98/sysv ptys,
	and fixed zlib configuration.

Tue Feb 16 23:32:51 1999    <nisse@idonex.se>

	* src/tty.h, src/tty.c: Fallback macro for the cfmakeraw function.

	* src/lsh.c, src/lshd.c: Make it possible to disable pty support a
 	compile time.

	* src/zlib.c: Temporarily disable zlib support, as it is a
	dysfunctional state at when I'm building the 1999-02-16 snapshot.

	* src/channel.h, optionchannel.c, optionconnection.c,
 	optionclient.c: Moved the channel table pointer to the connection
 	object, and general cleanup
	(Bazsi).

	* configure.in: New option --without-pty to disable pty support. 

	* make_am, Makefile.am.in: Use BASH variable to start scripts.

	* misc/ctags.mk: New file.

Sat Feb 13 17:21:07 1999    <nisse@idonex.se>

	* configure.in: Added test for the cfmakeraw function. 

	* src/client.c (CFMAKERAW): Define this as a macro, if there is no
	cfmakeraw function. (Rafal Maszkowski <rzm@icm.edu.pl>)

	* configure.in: Check if libutil defines openpty.

	* src/server.c (do_spawn_shell): Use STDIN_FILENO when calling
	tty_setctty, not pty->slave. The latter fd is already closed.
	(Noted by Keresztg).

	* configure.in (SHUTDOWN_WORKS_WITH_UNIX_SOCKETS): Use AF_UNIX,
	not AF_LOCAL (reported by Heinz Knutzen <heinz.knutzen@landsh.de>)

Thu Feb 11 14:43:51 1999    <nisse@idonex.se>

	* src/channel.c (do_channel_request): Delay freeing of packet
	(reported by Ray Dassen). 

Sun Jan 31 04:25:30 1999    <nisse@puck>

	* src/werror.c (werror_vformat): New function, with different
 	format specifiers than standard printf. Many more specialized
 	public functions removed.

	* src/format.c (format_size_in_decimal): Renamed and exported the
	size_in_decimal() function.

	* src/charset.c: New function.
	(low_utf8_to_local): New function.
	(utf8_to_local): New argument STRICT.

Thu Jan 28 08:51:18 1999    <nisse@puck>

	* src/tty.c (tty_encode_term_mode): New function (dummy).
	(tty_decode_term_mode): New function (moved from server_pty.c).

	* src/server.c (do_spawn_shell): pty support. Support for the
	argv0 = "-*sh" convention.
	(make_pty_handler): New function.

	* src/parse.c (parse_uint8): Use unsigned for the result.

	* src/lshd.c (main): Integrated sshd1 and pty support.

	* src/lsh.h (LSH_CHANNEL_CLOSE): New status value.

	* src/lsh.c (main): pty support.

	* src/hmac.c (make_hmac_instance): Bug fix (Joseph Galbraith
 	<galb@rt66.com>)

	* src/encrypt.c (do_encrypt): Update sequence number even if no
	mac is in use. (Reported by Joseph Galbraith <galb@rt66.com>).

	* src/client.c (make_shell_request): New function.
	(make_pty_request): New function.
	(do_open_confirm): Handle the new linked list of channel requests.
	(request_info): New class.

	* src/channel.c (channel_process_status): Handle
 	LSH_CHANNEL_CLOSE.
	(do_channel_success, do_channel_failure): Ignore messages that
 	there is no handler for
	(most likely, becase we have decided to give up and close the
 	channel).

	* src/Makefile.am.in: Removed most program_SOURCES definitions.

	* configure.in: Commented out the sshd1 related tests.
	
	* configure.in: Check for openpty(). Test for BSD style pty names.

1999-01-19  Gordon Matzigkeit  <gord@trick.fig.org>

	* server.c (do_spawn_shell): Make sure session->user->shell is not
	null before we dereference it.
	Set argv[0] to be the shell name wth a prepended hyphen.

1999-01-19  Gordon Matzigkeit  <gord@trick.fig.org>

	* src/Makefile.am: Don't clobber files unless the new one was
	correctly regenerated.
	
Tue Jan 26 06:11:47 1999    <nisse@puck>

	* client_pty.c client_pty.h server_pty.c server_pty.h tty.c tty.h:
	Added new files.

1999-01-21  Gordon Matzigkeit  <gord@trick.fig.org>

	* src/server.h: Always include ssh1_fallback.h, and fix typo.

	* src/server.c (server_initiate): If we need to delay the key
	exchange, initialize a kexinit here and save it in
	CONNECTION->KEXINITS[CONNECTION_SERVER] until DO_LINE has a chance
	to use it.

	* src/connection.c (make_ssh_connection): Use macros rather than
	magic numbers to index KEXINITS and LITERAL_KEXINITS.

	* src/server.c (do_line): Fix transposed arguments and missing
	comma in SSH1_FALLBACK call.

	* acconfig.h: Remove references to SSHD1.

	* configure.in: Get rid of all the checks for SSHD1.  The user
	should supply it at runtime.

	* src/lshd.c (main): Implement the `--ssh1-fallback' flag to allow
	people to specify an sshd1 at runtime.

	* src/version.h (SSH1_SERVER_PROTOCOL_VERSION): Only use version
	1.99 if we were told to fallback to ssh1.

	* src/ssh1_fallback.h: SSHD1 does not need the port number because
	we invoke it as if we were inetd.
	src/ssh1_fallback.c: Likewise.
	
Tue Jan 19 16:12:16 1999    <nisse@puck>

	* src/read_line.h: Changed prototype for line handlers.
	* src/read_line.c (do_read_line): Changed prototype for line handlers.
	* src/client.c (do_line): Changed prototype for line handlers.

	* src/server.c (server_initiate): Pass fd and fallback object to
	make_server_read_line.
	(server_initiate): If ssh1 fallback is enabled,delay
	initiate_keyexchange until after that the clients version string
	has been received.
	(do_line): Do the delayed initiate_keyexchange now.
	(do_line): Invoke the fallback method.

	* src/ssh1_fallback.h, src/ssh1_fallback.c: New files.

Thu Jan 14 13:48:04 1999    <ray@zensunni>

	* doc/lsh.1, doc/lsh_keygen.1, doc/lsh_writekey.1 doc/DSA.5, doc/SHA.5,
	doc/secsh.5, doc/lshd.8: new.

Thu Jan 14 09:09:06 1999    <ray@zensunni>

	* lsh_keygen.c (usage, main): The algorithm employed is called DSA, not
	DSS. DSS is the name of the standard that describes DSA.

Sat Jan  9 16:12:16 1999    <ray@zensunni>

	* server.c (do_line) Rearranged SSH1 fallback skeleton code.

	* io.c (read_callback), reaper.c: Fixed typos.

	* lib/Makefile.am.in, include/Makefile.am.in: added rule for making
	.dist_headers (via the toplevel Makefile).

Fri Jan  8 22:26:44 1999    <ray@zensunni>

	* Makefile.am.in (depend): Run "make depend" in lib too.
	  "make dist" now works out of the box.
	
	* server.c (do_line): Started SSH1 fallback code.

Thu Jan  7 20:16:10 1999    <ray@zensunni>

	* Makefile.am.in: remove .dist_classes and the various .dist_headers
	and Makefile.am's as part of maintainer-clean.
	Added rule to remake the various Makefile.am's from the toplevel dir. 

	* Makefile.am.in, lib/Makefile.am.in, include/Makefile.am.in (ctags):
	Improved the ctags generation.

Wed Jan  6 22:03:16 1999    <ray@zensunni>

	* Makefile.am.in: Added rules to generate .dist_classes and the various
	.dist_headers . Added dist-hook target which depends on these to get
	"make dist" closer to being sane.

	* make_am: Don't output the double backslash for continuation when
	./cvs_headers or ./used_headers output is empty, so no broken
	Makefile.am's are generated (due to the definition of cvs_headers
	and/or dist_x_files assimilating the text following them/it).

Tue Jan  5 19:12:36 1999    <ray@zensunni>

	* Makefile.am.in: New try at building dependency files.

Tue Jan  5 18:26:01 1999    <ray@zensunni>

	* NEWS, connection.c, keyexchange.c, zlib.c: Fixed typos.

Tue Jan 19 03:20:29 1999    <nisse@puck>

	* make_am: Recurse to find all subdirectories *before* invoking
	the used_headers script. 

Thu Jan 14 04:36:41 1999    <nisse@puck>

	* dss_keygen.c (dss_nist_gen): Fixed off-by-one bug, discovered by
	"Joseph Galbraith" <galb@rt66.com>.

	* configure.in: Check for poll.h, sys/poll.h and crypt.h.

Mon Jan 11 15:35:02 1999    <nisse@puck>

	* Makefile.am.in (EXTRA_DIST): Add jpoll.c, jpoll.h, getopt.h,
	getopt.c and getopt1.c to the distribution.

	* io.c (get_inaddr): Check HAVE_INET_ATON.

Sun Jan 10 21:56:37 1999    <nisse@puck>

	* lshd.c (usage): Improved message.
	(read_host_key): New function.
	(main): Read host key from a file.

	* sexp.c (sexp_n, sexp_un): Renamed and fixed this functiom
	(doesn't use ssh_format anymore).
	(sexp_sn): Implemented.
	(sexp_assz): New function.
	(sexp_get_un): New function.

	* io.c (blocking_read): New function.

Fri Jan  8 09:44:12 1999    <nisse@puck>

	* sexp_streamed_parser.c (base64_decode): Fixed test for leftover
	bits. 

	* configure.in (CPPFLAGS): Add -I$srcdir (needed for lsh_types.h
 	to be found, when compiling in subdirectories, with VPATH).

	* sexp.c (sexp_contents): New function.
	(sexp_display): New function.
	(do_vector_get): Use CAST_SUBTYPE.
	(sexp_eqz): New function.
	(sexp_check_type): New function.

	* read_scan.c (do_read_scan): Check if the current scanner is NULL
 	_after_ scanning each character.

	* bignum.h: Fix tests for gmp2/gmp.h (patches from Kalle Olavi
 	Niemitalo <tosi@ees2.oulu.fi>).

Thu Jan  7 16:25:50 1999    <nisse@puck>

	* sexp_streamed_parser.c: Added base 64 decoder.

	* sexp.c (encode_base64): Bug fix (don't use several ++ in an
 	expression without sequence points).

	* read_scan.h (TOKEN_NONE): New constant (used by the base64
 	decoder).

Tue Jan  5 05:54:34 1999    <nisse@puck>

	* keyexchange.c (kex_make_key): Fixed key expansion.

	* des.c (make_des_instance): Fix _odd_ parity.

	* cbc.c (do_cbc_encrypt): Bug fix.
	(do_cbc_decrypt): Handle the case src == dst correctly.

	* cascade.c (do_make_cascade): Make sure keys are applied in the
	right (i.e. reversed) order when decrypting.

	* Makefile.am.in (depend): Disabled the rule to explicitly build
 	dependency files.

Sun Jan  3 16:54:29 1999    <ray@zensunni>

	* digit_table.c: Fixed declaration of main.

	* Makefile.am.in: remove .x files as part of maintainer-clean.

	* Makefile.am.in, lib/Makefile.am.in, include/Makefile.am.in: added
	support for ctags.

	* configure.in: Remove superfluous spacing in compiler warnings.

	* version.h, client.c (client_initiate), server.c (server_initiate):
	Split PROTOCOL_VERSION in CLIENT_PROTOCOL_VERSION and
	SERVER_PROTOCOL_VERSION, so the client won't report version 1.99 .

	* configure.in: Look for SSH1 daemon as plain `sshd' too. Test that it
	is usable.

Sat Jan  2 18:25:16 1999    <ray@zensunni>

	* TODO: Added logging; Noted we can't currently use Rivest's sexp code.

	* resource.h, lsh_types.h: fixed typo.

	* Makefile.am.in, lib/Makefile.am.in: Added pattern rule for
	dependencies; added phony target `depend' to force dependencies to be
	remade; remove dependency files (.P) as part of maintainer-clean.

Fri Jan  1 18:08:03 1999    <ray@zensunni>

	* acconfig.h, configure.in, server.c, version.h: Added skeleton for
	SSH1 fallback support.

	* TASKLIST: Added SSH1 fallback support.

	* configure.in: Rewrote the comment about _GNU_SOURCE .

	* AUTHORS, HACKING, NOTES, README, TODO: spelling, grammar fixes.

	* TASKLIST: We have zlib support now.

Mon Jan  4 11:25:43 1999    <nisse@puck>

	* werror.c: Avoid using stdio functions.

	* keyexchange.c (make_test_kexinit): Commented out this function.

	* io.c (write_raw): New function.
	(write_raw_with_poll): -"-

	* alist.c (alist_addv): New function.
	(alist_add): -"-

Fri Jan  1 04:20:10 1999    <nisse@puck>

	* make_char_classes (make-char-classes): Use #ifdef to separate
	the table from the #defines.

	* lsh_types.h (LSH_PARSED_OBJECT): New status code.

	* io.c: Include lsh headers *before* system headers.
	Use jpoll.h, not poll.h.

	* io.c: (get_inaddr): Use inet_aton. How portable is that?

	* poll.h, poll.c, pollemu.h, pollemu.c: Use the names jpoll (that
 	is the names used originally by Sean Reifschneider
 	<jafo@tummy.com>).

Thu Dec 31 15:29:59 1998    <ray@penguin.wi.leidenuniv.nl>

	* PORTS: new file.

	* io.c: #include "config.h" so the #ifdef HAVE_POLL works.

	* poll.h, pollemu.h: Renamed poll.h to pollemu.h; thus it will not be
	found instead of a system poll.h whith -I. or -I$(srcdir) .
	* pollemu.c, pollemu.h: Renamed too.
	* io.c, pollemu.c: Changed #include accordingly.
	* configure.in: Changed accordingly.

	* configure.in: check for `gethostbyname' instead of `hostbyname'.

	* io.c: define INADDR_NONE if the system doesn't provide it (e.g.
	Solaris).

	* io.c: #include <netinet/in.h> for struct in_addr.

Wed Dec 30 17:38:03 1998    <ray@penguin.wi.leidenuniv.nl>

        * io.c (get_inaddr): use symbolic constant to check inet_addr
        result; fixes name resolving on Linux/Alpha.

Thu Dec 31 00:06:43 1998    <nisse@puck>

	* server.c (do_open_session): Mark arguments as UNUSED.

	* read_packet.c (do_read_packet): Signedness fixes.

	* publickey_crypto.c (make_dss_verifier): Mark closure algorithm
	as UNUSED.

	* packet_ignore.c (do_ignore): Mark arguments as UNUSED.

	* make_class (do-struct-free-function, do-struct-mark-function):
	Avoid warnings about unused parameters when the generated
	functions are empty functions.

	* keyexchange.c (kex_make_key): Signedness fix.

	* io.c (get_inaddr): Use the protocol argument.

	* disconnect.c (do_disconnect): Mark arguments as UNUSED.

	* des.c (make_des_instance): Mark arguments as UNUSED.

	* debug.c (do_rec_debug): Mark arguments as UNUSED.

	* connection.c (do_fail): Marked connection argument UNUSED.

	* configure.in (CPPFLAGS): Add more warning flags. But *not*
	-Wcast-align.

	* client_userauth.c (do_userauth_banner): Marked connection
	argument UNUSED.

	* client_password.c (read_password): Marked max_length argument
	UNUSED.

	* client.c (client_close_die): Marked closure argument UNUSED.

	* channel.c (do_window_adjust): Marked connection argument UNUSED.
	(do_channel_data): -"-
	(do_channel_extended_data): -"-
	(do_channel_eof): -"-
	(do_channel_close): -"-
	(do_channel_open_confirm): -"-
	(do_channel_open_failure): -"-
	(do_channel_success): -"-
	(do_channel_failure): -"-

	* arcfour.c (make_arcfour_instance): Mark mode argument UNUSED.

	* io.c (get_inaddr): use symbolic constant to check inet_addr
 	result; fixes name resolving on Linux/Alpha.

Wed Dec 30 11:57:28 1998    <ray@zensunni>

	* atoms.in: added algorithms names used by SSH 2.0.11 (commented
 	out).

	* configure.in: Enable a few more warnings.

	* lib/desTest.c (method, encode, decode): ANSIfied function
	declarations.

	* include/des.h, desCode.h, desKerb.c, desQuick.c, desTest.c,
 	desUtil.c, desdata.c, desinfo.h: The DES code's copyright notice
 	is distributed in descore.README rather than plain README.

	* abstract_crypto.c (gcd): Avoid unsigned underflow.

	* sexp.c, sexp.h (sexp_nullp, sexp_c, sexp_a, sexp_z, sexp_n,
 	sexp_sn, sexp_format, encode_base64): Added const.

	* TODO: removed obsolete entries; made a separate section for
 	freeness issues, and noted scsh's non-freeness.

	* TASKLIST, TODO: Fixed typos.

Wed Dec 30 01:14:28 1998    <nisse@puck>

	* lsh_types.h (LSH_SYNTAX): New error code.

	* lib/desTest.c (now): Disable use of rusage.

	* sexp.c: Started on parser. Not at all working yet.
	* sexp.h (sexp_iterator): Added iterator abstraction.

	* lsh_types.h (MAX): Bug fix (by ceder).

Mon Dec 28 14:14:57 1998    <nisse@puck>

	* keyexchange.c (kex_make_key): Expand keys, when the required key
	length is longer than tha hash output. (Bazsi).

Sun Dec 27 06:37:40 1998    <nisse@puck>

	* compress.c (packet_compressor): Removed the mode variable.

	* server.c (do_line): Compression support.

	* make_class: New type special-struct.

	* lsh.c (main): Zlib support.
	* lshd.c (main): Zlib support.

	* keyexchange.c (kex_make_deflate): New function.
	(kex_make_inflate): New function.
	(do_handle_newkeys): Compression support.
	(make_newkeys_handler): -"-
	(do_install): -"-

	* compress.h, compress.c, abstract_compress.c,
	abstract_compress.h, zlib.h, zlib.c: New files (by Bazsi).
	
	* connection.c (connection_init_io): Compression support.
	* client.c (do_line): Compression support.

	* client.c (do_exit_signal): Send CHANNEL_EOF.

	* configure.in: Fixed the configure test for shutdown. Check for
	zlib.

Sat Dec 26 02:37:18 1998    <nisse@puck>

	* keyexchange.c (do_install): Bugfix: Look at closure->is_server
	when generating MAC-keys (noted by Bazsi).

	* lsh_keygen.c (main): Added getopt support. New options for
	algorithm and output style.

Wed Dec 23 23:06:45 1998    <nisse@puck>

	* format.c (ssh_vformat_length): Added 'd' modifier, for
	sexp-style length prefixes.
	(ssh_vformat_write): -"-

Sun Dec 20 20:11:02 1998    <nisse@puck>

	* arcfour.c, blowfish.c, cascade.c, cbc.c, des.c, hmac.c, md5.c,
	sha.c: New files, extracted from crypto.c and abstract_crypto.c.
	
	* server.c (do_line): Accept client version 1.99, if
	DATAFELLOWS_SSH2_GREETING_WORKAROUND is defined.

	* randomness.c (make_poor_random): Allow NULL init string. Use pid
	for seeding.
	(make_device_random): New function.
	(make_reasonably_random): New function.

	* bignum.c (bignum_write): New function.
	(bignum_random_size): New function.
	(bignum_small_factor): New function.
	(bignum_next_prime): New function.

	* Makefile.am.in (noinst_LIBRARIES): Collect most object files
	into liblsh.a.

Fri Dec 18 01:53:22 1998    <nisse@puck>

	* server.c (do_eof): Consider closing (if CHANNEL_SENT_EOF and
	CHANNEL_CLOSE_AT_EOF are both set).

	* keyexchange.c (make_test_kexinit): Added hmac-md5 to the list of
	acepted mac algorithms.

	* io.h (CLOSE_EOF): Changed the meaning of this constant. Now used
	also for EOF on writing.
	* io.c (prepare_write): Use the close_reason CLOSE_EOF when a
 	closed write_buffer has been flushed successfully.

	* io.c (write_callback): Report EPIPE and other write failures
	differently.
	

	* crypto.c: Added md5 support by Balazs Scheidler.

	* client.c (do_exit_status): Bugfix: Changed && to &.

	* channel.c (channel_close_callback): Don't close channel when a
	connected file is closed when we expect it.

	* resource.c (do_free_resources): *Never* call lsh_object_free,
	except from the gc_sweep function!

Thu Dec 17 16:27:22 1998    <nisse@puck>

	* server.c (make_process_resource): New function.
	(server_die): Kill resources associated with the connection.
	(do_close): New callback function till kill the process if the
	channel is closed unexpectedly.

	server.c (do_exit_shell): Don't close the process's stdin, or the
 	channel, until the client asks for it.

	* server.c (make_server_close_handler): Take connection as
	argument.

Wed Dec 16 01:33:25 1998    <nisse@puck>

	* resource.h, resource.c: New files.
	
	* channel.h (CHANNEL_CLOSE_AT_EOF): This flag now means that
	the channel should be closed when EOF have been both sent and
	received.
	* channel.c (channel_eof): New meaning of CHANNEL_CLOSE_AT_EOF
	flag.

	* client.c (do_exit_status): Send eof, if we haven't done that
	already.

	* channel.c (do_channel_eof): Don't initiate close automatically
	when eof has been both sent and received.

	* list.c (make_int_listv): New function
	(make_object_listv): New function

	* keyexchange.c (do_install): Unified key installation.

	* client_keyexchange.c (do_handle_dh_reply): Better handling of
	weak keys (i.e. INSTALL_KEYS() returning NULL).
	* server_keyexchange.c (do_handle_dh_init): -"-

Tue Dec 15 00:01:33 1998    <nisse@puck>

	* xalloc.c (lsh_list_alloc): Avoid unsigned under flow when length
	is zero.

Mon Dec 14 21:58:27 1998    <nisse@puck>

	* parse.c (parse_atom_list): New limit argument; longer lists will
	return NULL.

Sat Dec 12 11:11:23 1998    <ray@zensunni>

	* configure.in: Clarified comment. Added several warnings.

	* keyexchange.c (select_algorithm): Had a terminiation condition
 	"i < LIST_LENGTH(client_list) >= 0" in a for loop, which is
 	probably nonsensical. Removed >= 0 part.

	* lsh_types.h: Introduced UNUSED annotation. Enable GNU libc
	extensions. Note: lsh_types.h must be included before any system header
	for this to work properly.

	* Makefile.am.in: Make gperf produce ANSI C output, and postprocess it
	to fully initialise wordlist.

	* lshd.c, lsh.c: Added a short usage string.

	* include/crypto_types.h: Improved error messages.

	* process_atoms: removed `.sh' from generator name in output.

	* include/idea.h, lib/idea.c: Added note about IDEA being patent
	encumbered.

	* channel.c, keyexchange.c, lib/md5.c, lib/sha.c, pad.c, parse.c,
	randomness.c, write_buffer.c: #include <string.h> for memcpy().

	* bignum.c: #include <stdlib.h> for alloca().

	* server_password.c: #include <crypt.h>

	* io.c, reaper.c: Removed obsolete use of sa_restorer field of struct
	sigaction. (This broke compilation on Linux/Alpha with glibc 2.0.high).
	Initialised struct sigaction in a more portable fashion.

	* bignum.c, charset.c, client_userauth.c, format.c, format.h, io.c,
	list.c: Signedness/type fixes.
	
	* channel.c, client.c, client.h, debug.c, debug.h, disconnect.c,
	disconnect.h, format.c, format.h, keyexchange.c, keyexchange.h,
	process_atoms, server.c, server.h, werror.c, werror.h: Constness
	improvements.

	* client_userauth.c, format.c: Added internal prototypes.
	
	* crypto.c: Added UNUSED annotations.

	* lib/util.c, lib/util.h, include/types.h: New. Bridge from GPG style
	to lsh style, for blowfish.

	* include/blowfish.h, lib/blowfish.c: Added blowfish code from GPG.

	* crypto.c, crypto.c.x, crypto.h, lib/Makefile.am.in, lshd.c, lsh.c:
	Added blowfish support.

	* lib/Makefile.am.in: added dependency of desUtil.o on the generated
	DES header files.

	* TODO: Additions.

	* Various spelling fixes.

Tue Dec  8 10:29:50 1998    <nisse@puck>

	* server_password.c (lookup_user): Integrated support for shadow
 	passwords, by Keresztg <kg230@hszk.bme.hu>.

	* server.c (do_exit_shell): Close channel, if we have already sent
	EOF.

	* xalloc.c (lsh_object_clone): New function.

	* server_keyexchange.c (do_init_dh): Copy the server key (as
	strings can't be shared).

	* crypto.c (do_sha_copy, ): Use the CLONE macro instead of memcpy to
	copy instances.
	(do_hmac_copy): -"-

Fri Dec  4 02:30:28 1998    <nisse@puck>

	* (practically every file): Adapted to new gc and object system.

	* xalloc.c (lsh_object_check_subtype): Allow NULL pointers. They
	are occasionally permissible (for instance, the NULL crypto
	algorithm), and when they aren't the error will be detected early
	anyway.
	(lsh_object_check): -"-

	* keyexchange.c (do_handle_kexinit): Use an object_list for
 	passing around the selected algorithms. The void ** that was used
 	earlier was unfriendly to the gc.

Sun Nov 22 00:57:16 1998    <nisse@puck>

	* lsh.c (main): Bug fix (pass *address* of crypto_rc4_algorithm).
 	Thanks to Keresztg <kg230@hszk.bme.hu>.

	* lshd.c (main): -"-

	* lsh_types.h: Moved definitions of UINT* to
	include/crypto_types.h.

	* io.c: Use Sean Reifschneider's poll-by-select emulation if
	poll() is unavailable.

