Tue Jul 23 19:44:29 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* sock.c (sock_create): Remove NEXT_SOCK_ID.

Sat Jul 13 20:20:55 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* io.c (S_io_reauthenticate): Repeat sock_create_port and
 	auth_server_authenticate for as long as we get EINTR.

Sun Jul  7 21:30:33 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* io.c (S_io_reauthenticate): Don't use unsafe MOVE_SEND in call
 	to auth_server_authenticate.

Mon Jul  1 18:45:35 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* sock.c (sock_create): Initialize ID field to MACH_PORT_NULL.

Thu Jun 27 17:58:09 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makefile (LCLHDRS): Add sserver.h.

Thu Jun 20 16:33:06 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makefile (pflocal): Depend on ../libfshelp/libfshelp.a.

Wed May 15 20:27:38 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* sock.c (sock_free): Destroy SOCK's id port if necessary.

Tue May 14 14:05:33 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* io.c (S_io_identity): New function.
	* sock.h (struct sock): Make the id field a receive right, not an int.

Thu May  9 20:20:20 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* io.c (S_io_reauthenticate): Use new auth_server_authenticate
 	protocol.

Thu May  9 12:14:37 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* io.c (S_io_select): Remove TAG arg.

Mon Apr 15 12:52:32 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makefile (MIGSFLAGS): Look for mig-mutate.h in $(srcdir).

Fri Jan 26 16:46:37 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* socket.c (S_socket_recv): Test for MSG_OOB in IN_FLAGS, not FLAGS.
	Return EINVAL if we get MSG_OOB, not EOPNOTSUPP.

Thu Jan 25 17:34:50 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* sock.c (sock_create_port, addr_create): Use ports_create_port
	instead of ports_allocate_port.
	* pflocal.c (trivfs_goaway): Handle errors from
	ports_inhibit_bucket_rpcs.
	(thread_cancel): Function deleted.

Tue Jan 23 21:31:40 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* socket.c (S_socket_connect): Handle connectionless protocols
	correctly.
	
	* socket.c (S_socket_send): Allow DEST_ADDR to be null if the
 	socket is connected.

	* sock.c (sock_bind): Don't change SOCK's ref count if we're
	returning an error.

Thu Jan  4 15:44:13 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* io.c (S_io_select): Reworked to avoid calling
	ports_interrupt_self_on_port_death() if there's data immediately
	available.  Also, don't block if we can return EOF/EPIPE.

Thu Dec 28 13:46:32 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* io.c (S_io_select): Use handy macro to avoid unthinkable line break.

Tue Dec 26 17:30:18 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* io.c (S_io_select): Add reply port parameter, and request
	notification if it dies.
	* mig-mutate.h (IO_SELECT_REPLY_PORT): New def.

Mon Nov 13 14:03:03 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* socket.c (S_socket_bind, S_socket_connect): Drop ADDR's send right.

Thu Nov  9 13:18:44 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* socket.c (S_socket_connect): Drop our reference to ADDR.

Sun Nov  5 10:01:15 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* pf.c (S_socket_create_address): Removing BINDING argument.

	* pflocal.c (main): Add FLAGS argument to trivfs_startup call.

Tue Sep 19 14:07:24 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* io.c (S_io_pathconf): New function.
	(S_io_set_all_openmodes, S_io_set_some_openmodes,
	S_io_clear_some_openmodes): The user specifies O_NONBLOCK, not
	SOCK_NONBLOCK.
	(S_io_get_openmodes): Always return O_APPEND.

Wed Sep  6 11:53:48 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* sserver.c (sock_demuxer): Use ports_interrupt_server and
	ports_notify_server instead of our own version.
	(do_mach_notify_no_senders, do_mach_notify_port_deleted,
	do_mach_notify_msg_accepted, do_mach_notify_port_destroyed,
	do_mach_notify_port_deleted, do_mach_notify_send_once,
	do_mach_notify_dead_name): Functions deleted.
	* io.c (S_interrupt_operation): Function deleted.
	* Makefile (MIGSTUBS): Remove notifyServer.o and interruptServer.o.

	* io.c (S_io_read, S_io_readable): Don't return EPIPE on EOF.

Tue Sep  5 14:22:18 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* io.c (S_io_stat): Only attempt to use the read pipe if it exists.
	
Thu Aug 31 16:31:18 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* io.c (S_io_select): Change the way selects are done, now that
	writes can block.
	(S_io_write): Pass in the new NOBLOCK parameter to pipe_write.
	* socket.c (S_socket_send): Pass in the new NOBLOCK parameter to
	pipe_send.

Tue Aug 29 14:33:14 1995  Miles Bader  <miles@geech.gnu.ai.mit.edu>

	* io.c (S_io_select): Use pipe_select instead of pipe_wait.

	* connq.c (struct connq): Remove interrupt_seq_num field.
	(connq_listen): Use hurd_condition_wait to detect interrupts
	instead of previous ad-hoc mechanism.
	(connq_interrupt, connq_interrupt_sock): Functions deleted.
	* connq.h (connq_interrupt, connq_interrupt_sock): Decls deleted.
	* io.c (S_interrupt_operation): Use ports_interrupt_rpc to
	interrupt waiting threads.

	* sock.c (sock_acquire_read_pipe, sock_acquire_write_pipe):
	`aquire' -> `acquire'.
	* socket.c (S_socket_send, S_socket_recv): Ditto.
	* sock.h: Ditto.
	
Tue Aug 29 14:30:59 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* io.c (S_io_select): Fix typo in masking off SELECT_URG.
	Don't check open modes and return EBADF.

Thu Aug 24 10:35:58 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makefile (pflocal): Put all dependencies here.
	(OBJS): Remove error.o.
	(HURDLIBS): Removed.
	Removed all rules dealing with error.o.

Mon Aug 21 16:37:32 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* pflocal.c (trivfs_goaway, trivfs_modify_stat): Update arguments.

Fri Aug 11 15:33:28 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* sock.h (struct sock): Store the pipe class in a separate field,
 	as READ_PIPE is no longer always defined.
	* sock.c (sock_create, sock_connect): Set/use the PIPE_CLASS field.
	(sock_connect, sock_aquire_write_pipe): Use pipe_aquire_writer
	instead of pipe_aquire.
	(sock_aquire_read_pipe): Use pipe_aquire_reader instead of
 	pipe_aquire.  Handle the case where there is no read pipe (in
 	which case return EPIPE).
	(sock_shutdown): Make shutting down the read half just like the
	write half -- the pipe goes away...
	(sock_create): Don't bump the read pipe ref count ourself.
	(sock_free): Use sock_shutdown to trash the read pipe too.

	* socket.c
	(S_socket_recv): Use pipe_release_reader instead of pipe_release.
	(S_socket_send): Use pipe_release_writer instead of pipe_release.
	(S_socket_recv): Reflect EPIPE as EOF.

	* io.c (S_io_read, S_interrupt_operation, S_io_readable, S_io_select): 
	Use pipe_release_reader instead of pipe_release.
	(S_io_write): Use pipe_release_writer instead of pipe_release.
	(S_io_readable, S_io_read): Reflect EPIPE as EOF.

Mon Jul 31 13:59:15 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* connq.c (connq_compress): New function.
	(connq_interrupt_sock): Use connq_compress to compress the queue.

Sun Jul 30 10:30:24 1995  Miles Bader  <miles@duality.gnu.ai.mit.edu>

	* connq.c (connq_interrupt_sock): Reset CQ's tail to the end of
	the compressed queue.

Sat Jul 29 00:00:57 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* socket.c (S_socket_send): Only free SOURCE_ADDR if the send
	fails, as otherwise it's consumed; also free all the ports in
	PORTS if the send fails.

	* io.c (S_interrupt_operation): Allow socket trying to connect to
	be interrupted.
	* connq.c (connq_interrupt_sock): New function.
	* socket.c (S_socket_connect): Use the CONNECT_QUEUE field to
	allow only a single connection attempt at once.
	Check for already-connected sockets here instead of waiting for
	the final rendezvous.
	* connq.h (connq_interrupt_sock): New declaration.

	* connq.c (connq_listen, connq_connect, connq_interrupt,
 	connq_set_length): Reverse the roles of the HEAD and TAIL fields,
 	and make sure they're used correctly.
	(qprev): Deleted function.
	
	* sock.h (struct sock, all uses changed): Add the CONNECT_QUEUE
 	field, and rename the CONNQ field to LISTEN_QUEUE.
	* sock.c (sock_create): Initialize the CONNECT_QUEUE field and
	rename CONNQ to LISTEN_QUEUE. 

	* connq.c (connq_set_length): When shrinking the queue, actually
	do so, and don't leak memory.

	* socket.c (S_socket_connect): Return ECONNREFUSED when trying to
	connect to a non-existant address, instead of EADDRNOTAVAIL.

	* connq.c (struct connq): Add the INTERRUPT_SEQ_NUM field, used to
	detect interupts.
	(connq_listen): Detect when we get interrupted, and return EINTR.
	(connq_interrupt): New function.
	* connq.h (connq_interrupt): New declaration.
	* io.c (S_interrupt_operation): Call connq_interrupt when appropiate.

	* connq.c (connq_connect): Initialize REQ before using it.
	(connq_request_init): Swap the arguments.
	(connq_listen): Don't lock the accepted request just to get its sock.

	* socket.c (S_socket_connect): Actually use the connq operations
	to connect, like the listening socket is expecting, instead of
	connecting directly to it.
