2006-04-24 Per Cederqvist * src/isc_tcp.c (isc_listentcp): Make a single attempt to bind the port. Don't retry if we get EADDRINUSE. The old code could leak memory. * src/isc_master.c (isc_initialize): Don't set openretries. * src/intern.h (ISC_DEFAULT_MAX_OPEN_RETRIES): Removed. (struct isc_session_cfg): Removed openretries. (FOR_EACH_AF): Made the documentation slightly more readable. 2006-02-09 Per Cederqvist Fixed a memory leak. * src/isc_tcp.c (mkaddr_and_bind): New static function, extracted from isc_bindtcp(). Don't leak the isc_address if bind() fails. (isc_bindtcp): Moved some code to mkaddr_and_bind(). 2006-02-01 Per Cederqvist Fixed a typo. * src/intern.h (isc_relocate_fd): Fixed typo in a comment. 2006-01-01 Per Cederqvist Since .cvsignore no longer exist, we cannot distribute it. * Makefile.am (EXTRA_DIST): Removed .cvsignore. * demo/Makefile.am (EXTRA_DIST): Removed .cvsignore. * doc/Makefile.am (EXTRA_DIST): Removed .cvsignore. * man/Makefile.am (EXTRA_DIST): Removed .cvsignore. * src/Makefile.am (EXTRA_DIST): Removed .cvsignore. 2005-12-11 Per Cederqvist Doc improvement. * src/isc.h (isc_enable): Document that this function can fail, and that it is sometimes normal for it to fail. (isc_disable): Document that a disabled session may change state to ISC_STATE_CLOSING if a write error occurs. 2003-08-25 Per Cederqvist Don't crash if a write error occurs. * src/isc_event.c (isc_read_data): Don't crash if wr_msg_q is NULL. * src/isc_output.c (isc_oflush): Do nothing in ISC_STATE_CLOSING. Simplified the error-handling code. * src/isc_session.c (isc_check_read_callback): Don't crash if wr_msg_q is NULL. (isc_check_read_callback): Don't setup any callbacks in ISC_STATE_CLOSING. 2003-08-22 Per Cederqvist Don't crash if failing to bind a port. * src/isc_session.c (isc_destroy): Don't chanse a NULL pointer. This could be triggered if the port was already bound. 2003-08-15 Per Cederqvist Get a fresh version of depcomp. * depcomp: Removed. Regenerate this using automake to get a fresh version. 2003-08-11 Per Cederqvist Code cleanup. * src/isc_stdout.c: Fixed a typo in a comment. Don't use memcpy to move overlapping blocks. This could potentially result in the server sending garbage to clients. * src/isc_output.c (isc_oflush): Use memmove, not memcpy, to move memory areas that may overlap. 2003-08-07 Per Cederqvist Removed the useless nlinks field. (Bug 1071). * src/intern.h (struct isc_scb_internal): Removed the nlinks field. (isc_insert): Changed return type to void. * src/isc_session.c (isc_insert): Changed return type to void. Don't manipulate the useless nlinks field. (isc_remove): Don't manipulate the useless nlinks field. (isc_create): Ditto. (isc_destroy): Ditto. 2003-08-06 Per Cederqvist Use ADNS to look up IPv4 addresses. (Bug 627). * src/Makefile.am (AM_CPPFLAGS): Added -I flag for adns. * src/isc.h (enum isc_resolve_status): Added isc_resolve_adns_error. (isc_resolve_remote): Return 0 on success. * src/intern.h (struct isc_mcb): Added adns. (struct isc_scb_internal): Added adns_query. * src/isc_socket.c: Include . (isc_dns_resolve_adns_cb): New function. (isc_resolve_remote): Try to use adns to look up the address. Fall back to the old method if adns returns ENOSYS, which indicates that it doesn't support the addess family. * src/isc_session.c (isc_create): Initialize adns_query. (isc_destroy): Cancel any pending adns query. * src/isc_master.c (isc_initialize): Initialize an oop adns adapter. (isc_shutdown): Delete the oop adns adapter. * src/isc_abort.c: Include "adns.h" and "oop-adns.h". * src/isc_alloc.c: Ditto. * src/isc_compat.c: Ditto. * src/isc_event.c: Ditto. * src/isc_message.c: Ditto. * src/isc_output.c: Ditto. * src/isc_queue.c: Ditto. * src/isc_relocate.c: Ditto. * src/isc_stdout.c: Ditto. * src/isc_tcp.c: Ditto. 2003-08-05 Per Cederqvist Restructure the DNS lookup API in preparation of ADNS integration. The API is now callback-based. The current implementation still uses gethostbyname, though. * src/isc.h (enum isc_resolve_status): New enum. (isc_resolve_done_cb): New callback. (struct isc_scb): Added the field "remote". (isc_gethostname): Removed. (isc_resolve_remotem): New function. * src/intern.h (struct isc_scb_internal): Added resolve_callback. (isc_dns_resolve_cb): New function. * src/isc_socket.c (isc_dns_resolve_cb): New function. (isc_resolve_remote): New function. (isc_gethostname): Removed. * src/isc_session.c (isc_create): Initialize resolve_callback and remote. (isc_destroy): Cancel any pending dns query, and clear remote. 2003-08-04 Per Cederqvist Simplified the API of the callback functions. Pass a pointer to the isc_scb instead of a user-supplied pointer to the callback. * src/isc.h (isc_accept_callback): Removed the cb_mcb argument. (isc_write_error_cb): Removed the cb_mcb and user arguments. (isc_stale_output_cb): Ditto. (isc_set_read_callback): Removed the user argument. Use the udg field of the isc_scb instead. * src/intern.h (struct isc_scb_internal): Removed data_available_user. * src/isc_tcp.c (isc_accept_cb): Adjusted to the new API of the callback functions. * src/isc_session.c (isc_create): Don't set data_available_user, which has been removed. (stale_cb): Adjusted to the new API of the callback functions. (idle_cb): Ditto. (isc_set_read_callback): Removed the user argument. (isc_check_read_callback): Pass the isc_scb object instead of the user-supplied pointer to the on_fd. * src/isc_output.c (isc_oflush): Adjusted to the new API of the callback functions. 2003-08-03 Per Cederqvist Code cleanup. At the same time a micro-optimization was done: get rid of a call to getpeername() and getsockname() per accepted connection. (Bug 916). * src/isc_tcp.c (isc_tcp_accept): Use the address that the accept() call supplies, so that we don't have to do an extra call to getpeername(). Copy the local address from the socket we listen to, so that we don't have to do an extra call to getsockname(). * src/isc_socket.c (isc_getladdress): Function removed. (isc_getraddress): Function removed. (isc_copyaddress): Resurrected the function that was removed 2003-07-12, and changed the type names to the current ones. * src/isc.h (isc_getladdress): Removed. (isc_getraddress): Removed. * src/intern.h (isc_copyaddress): Resurrected the function that was removed 2003-07-12. Removed documentation that was misleading. * man/Makefile.am (EXTRA_DIST): Removed FUNCTIONS. * man/FUNCTIONS: Removed. Almost nothing was true any more. * doc/Makefile.am (EXTRA_DIST): Removed MANUAL.sv. * doc/MANUAL.sv: Removed. Almost nothing was true any more. Fixed an uninitialized variable. * src/isc_session.c (isc_create): Initialize idle_cb_registered. The idle and stalled timeout are now fully orthogonal. Fixes to the idle timeout implementation. * src/isc.h (isc_set_acceptable_idle): It is now acceptable to have a idle timeout that is shorter than the stale timeout. * src/isc_session.c (stale_cb): Return OOP_HALT instead of following a NULL pointer if the user hasn't registered a callback. (idle_cb): Ditto. (isc_set_acceptable_idle): Store the new value inte the proper field. (isc_check_read_callback): Simplified the logic. It is now acceptable to have a idle timeout that is shorter than the stale timeout. 2003-08-02 Per Cederqvist Added the ability to disconnect idle clients. (Bug 11). * src/isc.h (isc_cfg_stale_timeout): New argument: default_idle. (isc_set_read_callback): New argument: idle_cb. (isc_set_acceptable_idle): New function. * src/intern.h (struct isc_scb_internal): Added fields idle_cb, idle_cb_registered, idle_tv and acceptable_idle_time. (struct isc_session_cfg): Added idle_timeout. * src/isc_tcp.c (isc_accept_cb): Forward declaration using the typedef oop_call_fd added. * src/isc_session.c (isc_create): Set acceptable_idle_time to the default idle timeout. (idle_cb): New static function. (isc_cancel_idle_callback): New static function. (isc_set_read_callback): New argument: idle_cb. (isc_check_read_callback): Handle the idle timeout. (isc_destroy): Cancel the idle timeout. * src/isc_master.c (isc_cfg_stale_timeout): New argument: default_idle. Make the message size and output queue configurable again. * src/isc.h (isc_cfg_queue_size): New function. * src/isc_stdout.c (isc_putc): Handle the case when max.msgsize is set to less than ISC_DEFAULT_MAX_MSG_SIZE. (isc_write): Ditto. * src/isc_session.c (isc_check_read_callback): Check the size of the output queue in bytes as well as number of messages. * src/isc_queue.c (isc_newqueue): Initialize bytes. (isc_killqueue): Check bytes. (isc_pushqueue): Update bytes. * src/isc_output.c (isc_oflush): Update the output queue size. * src/isc_master.c (isc_initialize): Initialize queuedsize_bytes. (isc_cfg_queue_size): New function. * src/isc_event.c (isc_read_data): Check for too many bytes in output queue. * src/intern.h (struct isc_scb_internal): Make the sendbuf be ISC_DEFAULT_MAX_MSG_SIZE bytes large, not 2048. (struct isc_msgqueue): New field: bytes. (struct isc_session_cfg): Added queuedsize_bytes. 2003-08-01 Per Cederqvist Added a callback function that reports changes to the size of the output queue. * src/isc.h (isc_write_queue_change_cb): New typedef. (isc_initialize): New argument: the write_change_cb. * src/intern.h (struct isc_mcb): Added write_change_cb. (isc_killqueue): Now returns an int: the number of payload bytes in the killed queue. * src/isc_session.c (isc_destroy): Inform the write change callback function of changes in the pending output queue size. * src/isc_queue.c (isc_killqueue): Now returns an int: the number of payload bytes in the killed queue. * src/isc_output.c (isc_flush): Inform the write change callback function of changes in the pending output queue size. (isc_oflush): Ditto. * src/isc_master.c (isc_initialize): New argument: write_change_cb. Don't fail to unregister the stale timeout during shutdown. * src/isc_session.c (isc_set_read_callback): Call isc_cancel_stale_output_callback(). Removed redundant checks. (isc_destroy): Call isc_cancel_stale_output_callback(). Call a callback function if a client becomes stale. * src/isc.h (isc_stale_output_cb): New typedef. (isc_cfg_stale_timeout): New function. (isc_set_read_callback): New argument: stale_output_cb. * src/isc_session.c (isc_create): Initialize stale_output_cb_registered and stale_output_cb. (stale_cb): New static function. (isc_set_read_callback): New argument: stale_output_cb. (isc_cancel_stale_output_callback): New static function. (isc_check_read_callback): New argument: any_written. All callers updated. Handle a timer callback used to detect if a client has stalled. * src/isc_output.c (isc_oflush): Inform isc_check_read_callback() if anything was written. * src/isc_master.c (isc_initialize): Initialize stale_timeout. (isc_cfg_stale_timeout): New function. * src/intern.h (struct isc_scb_internal): Added stale_output_cb, stale_output_cb_registered and stale_output_tv. (struct isc_session_cfg): Added stale_timeout. (isc_check_read_callback): New argument: any_written. All callers updated. * configure.in: Removed -Waggregate-return, since we use timeval_ctor() from libmisc. 2003-07-31 Per Cederqvist Move struct isc_mcb and large parts of struct isc_scb from isc.h to intern.h. * src/isc.h (isc_msgqueue): Forward declaration removed. (isc_session_cfg): Ditto. (isc_scb_entry): Ditto. (struct isc_scb): Moved a lot of fields to struct isc_scb_internal in intern.h. (struct isc_mcb): Moved to intern.h. (isc_getoopsource): New function. * src/intern.h (struct isc_mcb): Moved here from isc.h. (struct isc_scb_internal): New struct, that contains all the parts of struct isc_scb that the user need not know about. (struct isc_scb_entry): Refer to the internal structure. (isc_oflush): Use the internal structure. (isc_create): Ditto. (isc_insert): Ditto. (isc_remove): Ditto. (isc_createtcp): Ditto. (isc_bindtcp): Ditto. (isc_check_read_callback): Ditto. (isc_cancel_read_callback): Ditto. (isc_cancel_write_callback): Ditto. * src/isc_tcp.c (isc_tcp_accept): Handle struct isc_scb_internal. (isc_createtcp): Handle struct isc_scb_internal. (isc_bindtcp): Handle struct isc_scb_internal. (isc_accept_cb): Handle struct isc_scb_internal. (isc_listentcp): Handle struct isc_scb_internal. * src/isc_stdout.c (isc_putc): Handle struct isc_scb_internal. (isc_write): Handle struct isc_scb_internal. * src/isc_session.c (isc_insert): Handle struct isc_scb_internal. (isc_findsession): Handle struct isc_scb_internal. (isc_remove): Handle struct isc_scb_internal. * src/isc_output.c (isc_flush): Handle struct isc_scb_internal. (write_cb): Handle struct isc_scb_internal. (isc_oflush): Handle struct isc_scb_internal. * src/isc_master.c (isc_shutdown): Handle struct isc_scb_internal. * src/isc_event.c (isc_read_data): Handle struct isc_scb_internal. 2003-07-28 Per Cederqvist Code cleanup. * src/isc_tcp.c (isc_mktcpaddress): Rewrite the code to get rid of a compiler warning and make the code easier to read. Don't use socklen_t in the exported API, since that leads to portability problems. * src/isc_tcp.c, src/isc.h (isc_addressfamily): Changed return type to int. (isc_addresssize): Ditto. Distribute isc_addr.h, which was added yesterday. * src/Makefile.am (libisc_a_SOURCES): Added isc_addr.h. Host name lookup always failed if gethostbyname2() was used. * src/isc_tcp.c (isc_mktcpaddress_internal): The logic for checking the return value from gethostbyname2() was inverted. Export functions for creating and using an isc_address from a host name and port name. * src/isc.h (isc_mktcpaddress): New function. (isc_addressfamily): New function. (isc_addresssize): New function. (isc_addresspointer): New function. * src/isc_tcp.c (isc_mktcpaddress_internal): New name for former isc_mktcpaddress. All callers updated. (isc_mktcpaddress): New function. (isc_addresssize): New function. (isc_addressfamily): New function. (isc_addresspointer): New function. (isc_bindtcp): Use isc_addresspointer() and isc_addresssize() to simplify the code. * src/isc_addr.h (UNUSED_UNLESS_INET6): New macro. (USE_GETIPNODEBYNAME): Moved from intern.h. * src/intern.h: Fixed documentation of FOR_EACH_AF. (USE_GETIPNODEBYNAME): Moved to isc_addr.h. 2003-07-27 Per Cederqvist Clean up some problems in ISC that the IPv6 support added. (Bug 563). * src/isc_addr.h: New file, that contains private structures extracted from isc.h. This file should only be included by files in the isc library. * src/isc_tcp.c: Include isc_addr.h. * src/isc_socket.c: Include isc_addr.h. * src/isc.h: Don't include and from here. The coding standard of lyskomd is to never include files from included files. (SOCKADDR_STORAGE): Moved to isc_addr.h. (union sockaddrs): Ditto. (union isc_address): Ditto, but keep a forward declaration. * src/intern.h (isc_mkipaddress): Moved to isc_addr.h. 2003-07-14 Per Cederqvist Don't read when the output queue is full. * src/isc_event.c (isc_read_data): Return ISC_READ_WOULDBLOCK if the output queue is full. 2003-07-13 Per Cederqvist Ensure that unused parameters are unused. * src/unused.h (UNUSED_H_CONCAT): New macro. (UNUSED): Mangle the name of the supposedly unused argument, so that the compiler will report errors if it actually is used. 2003-07-12 Per Cederqvist Fix new compilation errors. * src/isc_socket.c (isc_getipnum): Fixed compilation errors for IPv6 configurations, which were introduced in the previous commit. (isc_gethostname): Ditto. (isc_getportnum): Ditto. Use liboop as a backend. Only support TCP streams. Removed a lot of stuff that isn't used by lyskom-server. Move much internal stuff from isc.h to intern.h. * src/isc_wait.c: File removed. * src/isc_udp.c: File removed. * src/isc_tcp.c (isc_tcp_accept_fn): Renamed to isc_tcp_accept. Removed the unused hl and msg arguments. (isc_tcp_destroy_fn): Function removed. (isc_connecttcp): Ditto. (isc_opentcp): Ditto. (isc_tcp_funs): Function table removed. (isc_createtcp): Added mcb and initial_state arguments. Removed obsolete bogus setsockopt() calls. (isc_bindtcp): Don't check the type of the session. (isc_accept_cb): New function. (isc_listentcp): Added the cb argument. Don't set the state here; that is now done by isc_create(). Add isc_accept_cb() as a read callback. * src/isc_stdout.c (isc_putc): The ISC_STATE_CONNECTING state no longer exists. (isc_write): Ditto. * src/isc_socket.c (isc_getladdress): Don't check the type of the session. (isc_getraddress): Ditto. (isc_copyaddress): Function removed. (isc_getservice): Ditto. * src/isc_session.c (isc_default_read_fn): Function removed. (isc_default_write_fn): Ditto. (isc_default_close_fn): Ditto. (isc_close): Ditto. (isc_sessions): Ditto. (isc_openfd): Ditto. (isc_file_destroy_fn): Ditto. (isc_openfile): Ditto. (isc_default_fun): Function table removed. (isc_create): Removed the "IscHandler *fun" argument, and added mcb and initial_state arguments. Initialize the currently existing fields. (isc_set_read_callback): New function. (isc_check_read_callback): Ditto. (isc_cancel_read_callback): Ditto. (isc_cancel_write_callback): Ditto. (isc_destroy): Cancel read, write and accept callbacks. Free raddr and laddr instead of calling a destroy handler. (isc_disable): Remove the read callback. (isc_enable): Maybe add the read callback. * src/isc_relocate.c: Include "oop.h" and "s-string.h". * src/isc_queue.c (isc_pollqueue): Removed the external function. The macro is good enough. * src/isc_output.c (isc_flush): There is no longer any read queue. (write_cb): New function. (isc_oflush): Don't close the socket if the output queue is too big. Instead, isc_check_read_callback() refuses to read input from the client until it reads enough of the output queue. Assert that this isn't a listening session, but don't otherwise check the state. Call write instead of using the handler mechanism. Call the write_err_cb callback function if an error occurs. Don't update statistics that nobody uses. Set up a liboop write callback if we cannot send all output at once. Call isc_check_read_callback(). (isc_send): Function removed. (isc_sendto): Ditto. * src/isc_message.c (isc_allocmsg): Don't set the address field, which has been removed. (isc_reallocmsg): Function removed. (isc_copymsg): Ditto. (isc_mkstrmsg): Ditto. * src/isc_master.c (isc_initialize): Removed the cfg argument, and added the oop_source argument. Allocate a cfg struct. (isc_cfg_fd_relocate): New function. (isc_shutdown): Free the cfg struct. * src/isc_handler.c: File removed. * src/isc_event.c (isc_read_data): New function. (isc_getnextevent): Function removed. (isc_dispose): Ditto. * src/isc_compat.c: Include "oop.h" and "s-string.h". * src/isc_alloc.c (isc_strdup): Function removed. * src/isc_abort.c (isc_setabortfn): Place inside #if 0, since it is currently unused. * src/isc.h: Removed several defines for structs and unions. All users updated to use the real names instead: IscSessionConfig => struct isc_session_cfg IscAddress => union isc_address IscMessage => struct isc_msg IscMsgQE => struct isc_msg_q_entry IscMsgQueue => struct isc_msgqueue IscSession => struct isc_scb IscSessionList => struct isc_scb_entry IscMaster => struct isc_mcb (IscMasterConfig): Define and struct removed. (IscConfig): Ditto. (IscHandlerCache): Ditto (IscHandler): Ditto. (IscHandlerList): Ditto. (IscEvent): Ditto. (IscEventType): Define and enum removed. (IscSessionType): Ditto. (IscSessionInfo): Define and union removed. (IscSessionStats): Ditto. (enum isc_session_state): Removed the states ISC_STATE_UNKNOWN, ISC_STATE_CONNECTING and ISC_STATE_CLOSING2. (union isc_address): Don't wrap the saddr field inside a meaningless struct named ip. (isc_initialize): Removed the cfg argument, and added the oop_source argument. (struct isc_scb): Removed the following fields: type, isc_errno, rd_msg_q, info, logintime, idlesince, stats and handlers. Added the following fields: raddr, laddr, master, accept_cb, write_err_cb, data_available_callback, data_available_user, data_available_registered and write_cb_registered. (struct isc_mcb): The scfg field is now a pointer, so that we don't have to expose the struct isc_session_cfg struct in isc.h. Added the event_source field. (isc_listentcp): Added the cb argument. (isc_openfd): Function removed. (isc_openfile): Ditto. (isc_openudp): Ditto. (isc_close): Ditto. (isc_sessions): Ditto. (isc_getnextevent): Ditto. (isc_wait): Ditto. (isc_dispose): Ditto. (isc_send): Ditto. (isc_sendto): Ditto. (isc_reallocmsg): Ditto. (isc_copymsg): Ditto. (isc_mkstrmsg): Ditto. (isc_createudp): Ditto. (isc_bindudp): Ditto. (isc_connecttcp): Ditto. (isc_connectudp): Ditto. (isc_listenudp): Ditto. (isc_copyaddress): Ditto. (isc_getservice): Ditto. (isc_newhandler): Ditto. (isc_freehandler): Ditto. (isc_copyhandler): Ditto. (isc_pushhandler): Ditto. (isc_pophandler): Ditto. (ISC_HCALLFUN1): Macro removed. (ISC_HCALLFUN2): Ditto. (ISC_HCALLFUN3): Ditto. (enum isc_read_result): New enum. (isc_read_data): New function. (isc_cfg_fd_relocate): Ditto. (isc_set_read_callback): Ditto. (isc_accept_callback): New callback function. (isc_write_error_cb): Ditto Moved some constants to intern.h: (ISC_DEFAULT_MAX_MSG_SIZE): Moved. (ISC_DEFAULT_MAX_QUEUED_SIZE): Moved. (ISC_DEFAULT_MAX_DEQUEUE_LEN): Moved. (ISC_DEFAULT_MAX_OPEN_RETRIES): Moved. (ISC_DEFAULT_MAX_BACKLOG): Moved. Moved some structs to intern.h: (struct isc_msg): Was: IscMessage. (struct isc_msg_q_entry): Was: IscMsgQE. (struct isc_msgqueue): Was: IscMsgQueue. (struct isc_session_cfg): Was: IscSessionConfig. (struct isc_scb_entry): Was: IscSessionList. Moved some functions to intern.h: (isc_freemsg): Moved. (isc_create): Moved. (isc_insert): Moved. (isc_remove): Moved. (isc_createtcp): Moved. (isc_bindtcp): Moved. (isc_allocmsg): Moved. Moved some functions from intern.h: (isc_setallocfn): Moved. * src/intern.h: Moved some constants from isc.h and changed their values: ISC_DEFAULT_MAX_MSG_SIZE: 2048 => 8176 ISC_DEFAULT_MAX_QUEUED_SIZE: 600 => 50 ISC_DEFAULT_MAX_DEQUEUE_LEN: 10 => 30 ISC_DEFAULT_MAX_OPEN_RETRIES: 10 => 10 ISC_DEFAULT_MAX_BACKLOG: 5 => 50 Moved some structs from isc.h and stopped using a defined name: (struct isc_msg): Was: IscMessage. (struct isc_msg_q_entry): Was: IscMsgQE. (struct isc_msgqueue): Was: IscMsgQueue. (struct isc_session_cfg): Was: IscSessionConfig. (struct isc_scb_entry): Was: IscSessionList. Moved some functions from isc.h: (isc_freemsg): Moved. (isc_create): Moved. (isc_insert): Moved. (isc_remove): Moved. (isc_createtcp): Moved. (isc_bindtcp): Moved. (isc_allocmsg): Moved. Moved some functions to isc.h: (isc_setallocfn): Moved. Other changes: (struct isc_msg): Removed the address field. (struct isc_session_cfg): Removed the version field. (isc_log): Function removed. (isc_create): Removed the "IscHandler *fun" argument, and added mcb and initial_state arguments. (isc_createtcp): Added mcb and initial_state arguments. (isc_strdup): Function removed. (isc_default_read_fn): Function removed. (isc_default_write_fn): Function removed. (isc_default_close_fn): Function removed. (isc_pollqueue): Removed the external function. Retain the macro. (isc_setabortfn): Place inside #if 0, since it is currently unused. (isc_check_read_callback): New function. (isc_cancel_read_callback): New function. (isc_cancel_write_callback): New function. (ISC_SCALLFUN1): Macro removed. (ISC_SCALLFUN2): Macro removed. (ISC_SCALLFUN3): Macro removed. * src/Makefile.am (libisc_a_SOURCES): Removed isc_handler.c, isc_udp.c and isc_wait.c. (AM_CPPFLAGS): Added -I flags for libmisc (to get the string class), liboop, and the main include library (needed by s-string.h). 2003-01-07 Per Cederqvist Port to IRIX64, where "unsigned long" isn't large enough to avoid alignment problems. * configure.in: Handle --disable-malloc-guards. Check for intptr_t, intmax_t and size_t. * src/isc_alloc.c: Include inttypes.h and stdint.h. Check USE_MALLOC_GUARDS. (union overhead): New union, to fix alignmentproblems. (OVERHEAD): New macro. (isc_malloc): Use union overhead instead of unsigned long. Removed unneeded casts. Handle USE_MALLOC_GUARDS. (isc_realloc): Ditto. (isc_free): Ditto. 2003-01-06 Per Cederqvist Fix IPv4 under Solaris 2.8. (Patch by Thorild Selén.) * src/isc_tcp.c (isc_bindtcp): Pass the proper size to bind() for IPv4 and IPv6. * src/isc_udp.c (isc_bindudp): Pass the proper size to bind() for IPv4 and IPv6. 2002-12-30 Per Cederqvist Autoconf: better check for "attribute unused" support. * configure.in: Use CMOD_C_WORKING_ATTRIBUTE_UNUSED instead of CMOD_C_ATTRIBUTE_UNUSED. * acinclude.m4 (CMOD_C_ATTRIBUTE_UNUSED): Removed. (CMOD_C_WORKING_ATTRIBUTE_UNUSED): New defun. 2002-11-29 Per Cederqvist Fixed more IPv6 portability problems. * configure.in: Check for freehostent. * src/intern.h: Require HAVE_FREEHOSTENT to be defined if we are to use getipnodebyname. * src/isc_udp.c (isc_mkudpaddress): Don't call freehostent() unless hp has been allocated by getipnodebyname(). * src/isc_tcp.c (isc_mktcpaddress): Don't call freehostent() unless hp has been allocated by getipnodebyname(). * src/isc_socket.c (isc_getipnum): Fixed typo: strncpy was spelled "strncopy". 2002-11-28 Per Cederqvist Give credits to Thorild for the IPv6 porting. * AUTHORS: Added Thorild Selén. Fix IPv6 portability problems to various versions of AIX, HP-UX and Solaris. * src/intern.h: Define USE_GETIPNODEBYNAME if both HAVE_GETIPNODEBYNAME and AI_ADDRCONFIG are defined. AIX 4.2 lacks AI_ADDRCONFIG. * src/isc_udp.c (isc_mkudpaddress): Declare error_num if USE_GETIPNODEBYNAME is defined. Test USE_GETIPNODEBYNAME instead of HAVE_GETIPNODEBYNAME to determine if it should be used. Don't access AF_INET6 unless USE_INET6 is true. * src/isc_tcp.c (isc_mktcpaddress): Declare error_num if USE_GETIPNODEBYNAME is defined. Test USE_GETIPNODEBYNAME instead of HAVE_GETIPNODEBYNAME to determine if it should be used. 2002-11-28 Thorild Selén Added IPv6 support with IPv4 compatibility. (ChangeLog entry written by ceder. Some minor coding standard changes by ceder. Three minor problems noted by FIXME comments by ceder.) * configure.in: Added --enable-ipv6 switch. Check for inet_ntop, inet_pton, getipnodebyname, gethostbyname2, and struct sockaddr_storage. * src/isc.h: This commit includes three broken things; see FIXMEs in the code. Include and . (SOCKADDR_STORAGE): Define it to struct sockaddr_storage or struct sockaddr, depending on HAVE_STRUCT_SOCKADDR_STORAGE. (union sockaddrs): New union. (IscAddress): Use union sockaddrs instead of struct sockaddr. * src/intern.h (isc_mkipaddress): Use SOCKADDR_STORAGE as argument, not struct sockaddr. (CHOOSE_IP4OR6): New macro. (FOR_EACH_AF): New macro. (FOR_EACH_PF): New macro. (STORE_ADDR): New macro. * src/isc_udp.c (isc_udp_read_fn): Handle IPv6. (isc_udp_write_fn): Handle IPv6. (isc_mkudpaddress): New argument: address_family. All callers updated. Handle IPv6. Broadcast addresses are not supported. (isc_createudp): Handle IPv6. The first argument of socket() should be PF_INET for IPv4, not AF_INET. (isc_bindudp): Handle IPv6. (isc_connectudp): Handle IPv6. * src/isc_tcp.c (isc_mktcpaddress): New argument: address_family. All callers updated. Handle IPv6. (isc_createtcp): Handle IPv6. The first argument of socket() should be PF_INET for IPv4, not AF_INET. (isc_bindtcp): Handle IPv6. (isc_connecttcp): Handle IPv6. * src/isc_socket.c (cast_to_sockaddr_in): Removed. (isc_mkipaddress): Changed struct sockaddr to SOCKADDR_STORAGE. (isc_getladdress): Ditto. Cast argument of getsockname from SOCKADDR_STORAGE* to struct sockaddr*. (isc_getraddress): Ditto (but for getpeername instead of getsockname). (isc_getipnum): Handle IPv6. (isc_gethostname): Ditto. (isc_getportnum): Ditto. (isc_getservice): Use isc_getportnum to simplify code. 2002-11-25 Per Cederqvist Port to Autoconf 2.56 and Automake 1.7.1. * configure.in: Use autoconf-2.56 and automake-1.7.1: Use AC_COMPILE_IFELSE and AC_LANG_PROGRAM instead of AC_TRY_COMPILE. Fixed broken quoting. 2002-10-09 Per Cederqvist Fixed socklen_t fallback code. * configure.in: The fallback for socklen_t when no compilation worked without a warning was broken. Fix. 2002-10-02 Per Cederqvist Port to the ecc compiler. * acinclude.m4 (CMOD_C_ATTRIBUTE_UNUSED): Improve the test, by checking that __attribute__((unused)) is accepted in a function declaration. The ecc compiler on Linux/ia64 seems to accept it and give a warning when used on a local variable, but chokes on it when used in a function declaration. 2002-09-21 Per Cederqvist Get rid of AIX 4.2 compiler warnings. * src/isc_wait.c: Include strings.h. * src/isc_event.c: Include strings.h. * src/intern.h (socklen_t): Use the type that the configure script has found, instead of always using unsigned int. AIX 4.2 wants an size_t, which is an unsigned long. * configure.in: Check for strings.h. Check for a socklen_t type that produces no warnings. 2002-09-10 Per Cederqvist As expected, uint32_t is not universally available. SunOS 4.1.1_U1 lacks it. * configure.in: Check for uint32_t, and sizeof int and long. * src/intern.h: Typedef uint32_t when needed. 2002-09-10 Per Cederqvist Get rid of more warnings. (This will probably break on several platforms that don't have uint32_t.) * configure.in: Cast INADDR_NONE to uint32_t. 2002-09-09 Per Cederqvist Port to SunOS 5.4. * src/isc_compat.c: Include , needed by SunOS 5.4. 2002-09-08 Per Cederqvist Fix more socklen_t and inet_aton problems. * src/intern.h [!HAVE_INET_ATON]: Declare struct in_addr. [!HAVE_SOCKLEN_T]: Add typedef for socklen_t. * configure.in: Check for socklen_t. Fix include problems with isc_compat.c. * src/isc_compat.c: Include and . Avoid a warning about memset. * src/isc_wait.c: Include if available, to get rid of a warning generated from FD_ZERO on some platforms. Use socklen_t and inet_aton to reduce warnings and increase stability. * src/isc_udp.c (isc_udp_read_fn): Changed type of len from int to socklen_t. (isc_mkudpaddress): Use inet_aton instead of inet_addr. * src/isc_tcp.c (isc_tcp_accept_fn): The third argument of accept() should be pointer to socklen_t, not pointer to int. (isc_mktcpaddress): Use inet_aton instead of inet_addr. * src/isc_socket.c (isc_getladdress): Changed type of len from int to socklen_t. (isc_getraddress): Ditto. Provide a replacement for inet_aton for systems that only have inet_addr. * src/isc_compat.c: New file. (inet_aton): New compatibility function. * src/intern.h (inet_aton): Added a declaration if HAVE_INET_ATON is false. * src/Makefile.am (libisc_a_SOURCES): Added isc_compat.c. * configure.in: Check for -lsockt and -lnsl if needed. Check for inet_aton. Check for INADDR_NONE only if inet_aton isn't available. 2002-09-07 Per Cederqvist Get rid of warnings from casting a struct sockaddr* to a struct sockaddr_in*. * src/isc_socket.c (cast_to_sockaddr_in): New static inline function. (isc_getipnum): Use it, to get rid of a warning. (isc_gethostname): Ditto. (isc_getportnum): Ditto. (isc_getservice): Ditto. * configure.in: Check for inline support. Use INADDR_NONE to get rid of a compiler warning. * src/isc_udp.c (isc_mkudpaddress): Use INADDR_NONE instead of -1. * src/isc_tcp.c (isc_mktcpaddress): Use INADDR_NONE instead of -1. * configure.in: Check for INADDR_NONE. 2002-08-23 Per Cederqvist Waste less bytes. * src/isc_socket.c (isc_getipnum): Use the entire hostname buffer. 2002-08-20 Per Cederqvist Don't include when it isn't available. * configure.in: Check for . * src/isc_event.c: Fix include guards for and . * src/isc_socket.c: Ditto. * src/isc_wait.c: Ditto. 2002-08-10 Per Cederqvist Check for ar. (Bug 523). * configure.in: Check for ar. Look in $PATH:/usr/ccs/bin, and stop with an error if no ar can be found. 2002-04-11 David Byers * configure.in: Added AC_PREREQ(2.53). 2001-09-23 Per Cederqvist * Re-applied a couple of lyskomd modifications. 1999-07-05 Per Cederqvist Delay problems with sessions that are deconnected until we can do a proper fix. * src/isc.h (ISC_DEFAULT_MAX_QUEUED_SIZE): Double to 600. 1999-05-21 Per Cederqvist Remove all gcov files in "make mostlyclean". * src/Makefile.am (MOSTLYCLEANFILES): Added "*.da", "*.bb", "*.gcov" and "*.bbg". 1999-05-17 Per Cederqvist Don't needlessly call time(). * src/isc.h (IscSession): Comment out idlesince. * src/isc_event.c (isc_getnextevent): Don't waste time setting idlesince, which lyskomd doesn't use. 1999-05-01 Per Cederqvist The LysKOM server should not install isc thingies. * src/Makefile.am (noinst_LIBRARIES, noinst_HEADERS): Use instead of lib_LIBRARIES and include_HEADERS so that nothing from isc gets installed by lyskomd. * man/Makefile.am (noinst_MANS): Use noinst_MANS instead of man_MANS so that nothing from isc gets installed by lyskomd. 2001-09-23 Per Cederqvist * Version 1.01 released. Release preparations. * configure.in: Release 1.01. * NEWS: Entry for 1.01 written. Port to Autoconf 2.52 and Automake 1.5. * RELEASING: Updated for automake 1.5. * configure.in: Adjusted to autoconf 2.52: AC_INIT Now takes package name and version as arguments. Use AC_CONFIG_SRCDIR. Use AC_HELP_STRING to format help strings. Use CMOD_CHECK_CC_OPT instead of CMOD_COMPILER_CC_ACCEPTS. Don't use -Wpointer-arith. Use AC_CONFIG_FILES. * acinclude.m4 (CMOD_COMPILER_CC_ACCEPTS): Removed. (CMOD_CHECK_CC_OPT): New macro. * README.DEVO: Updated for autoconf 2.52 and automake 1.5. Removed an unused attribute in IscSession. Handle isc_getraddress() failures properly. * src/isc_tcp.c (isc_tcp_accept_fn): Don't set scb->mode. Fail properly if isc_getraddress() fails. * src/isc.h (IscSession): Delete the "mode" attribute, which was only set in some cases and never used. * src/isc_session.c (isc_openfile): Don't set scb->mode. 1999-05-01 Per Cederqvist * Version 1.00 released. Release preparations. * configure.in: Release 1.00. * TODO: Updated. * README: Updated. * NEWS: Entry for 1.00 written. "make maintainer-clean" shoudl remove everything that can be recreated. * Makefile.am (MAINTAINERCLEANFILES): Added Makefile.in, aclocal.m4, configure, install-sh, mkinstalldirs, missing, INSTALL and COPYING. * src/Makefile.am (MAINTAINERCLEANFILES): Added Makefile.in. * man/Makefile.am (MAINTAINERCLEANFILES): Added Makefile.in. * doc/Makefile.am (MAINTAINERCLEANFILES): Added Makefile.in. * demo/Makefile.am (MAINTAINERCLEANFILES): Added Makefile.in. Removed support for isc_printf and isc_vprintf for license, performance and portability reasons. * configure.in: Removed --enable-isc-printf. * src/isc_stdout.c (isc_printf): Removed. (isc_vprintf): Removed. (send_scb): Removed. (send_putc): Removed. * src/isc.h (isc_printf): Removed. (isc_vprintf): Removed. * src/Makefile.am (libisc_a_LIBADD): Removed. (isc_stdout.o): No longer depend on ../config.status. * src/printf.c: Removed. Merged in all changes made to ISC in the lyskomd code from the isc_merge_1999_04_21 tag to the isc_merge_1999_05_01 tag. Details follows: 1999-04-28 Per Cederqvist Added some output functions. * src/isc_stdout.c (isc_puts): New function. (isc_putul): New function. * src/isc.h (isc_puts): New function. (isc_putul): New function. 1999-04-24 Per Cederqvist Make it easier to compile ISC out-of-the-repository. * README.DEVO: Mention bootstrap.sh. * bootstrap.sh: New file. Fix file inclusions. * src/isc_relocate.c: and must be included before "isc.h". * src/isc_alloc.c: must be included before "isc.h". * src/isc_master.c: Likewise. * src/isc_output.c: Likewise. * src/isc_tcp.c: Likewise. * src/isc_udp.c: Likewise. Update at least one of the man pages. * man/isc_close.3x: Updated. Distribute ISC under LGPL. * README: Changed license to LGPL. * COPYING.LIB: New file, containing LGPL, the license this library is distributed under. * COPYING: No longer under version control. This file is still included in the distribution, even though ISC is licensed under LGPL instead of GPL, for two reasons: LGPL allows you to change the license to GPL, and automake requires the file COPYING. * Makefile.am: Changed license to LGPL. * configure.in: Changed license to LGPL. * demo/Makefile.am: Changed license to LGPL. * man/Makefile.am: Changed license to LGPL. * man/TEMPLATE: Changed license to LGPL. * man/isc.3x: Changed license to LGPL. * man/isc_close.3x: Changed license to LGPL. * man/isc_createtcp.3x: Changed license to LGPL. * man/isc_destroy.3x: Changed license to LGPL. * man/isc_initialize.3x: Changed license to LGPL. * man/isc_listentcp.3x: Changed license to LGPL. * man/isc_openfd.3x: Changed license to LGPL. * man/isc_openfile.3x: Changed license to LGPL. * man/isc_opentcp.3x: Changed license to LGPL. * man/isc_shutdown.3x: Changed license to LGPL. * man/isc_unlisten.3x: Changed license to LGPL. * src/Makefile.am: Changed license to LGPL. * src/intern.h: Changed license to LGPL. * src/isc.h: Changed license to LGPL. * src/isc_abort.c: Changed license to LGPL. * src/isc_alloc.c: Changed license to LGPL. * src/isc_event.c: Changed license to LGPL. * src/isc_handler.c: Changed license to LGPL. * src/isc_master.c: Changed license to LGPL. * src/isc_message.c: Changed license to LGPL. * src/isc_output.c: Changed license to LGPL. * src/isc_queue.c: Changed license to LGPL. * src/isc_relocate.c: Changed license to LGPL. * src/isc_session.c: Changed license to LGPL. * src/isc_socket.c: Changed license to LGPL. * src/isc_stdout.c: Changed license to LGPL. * src/isc_tcp.c: Changed license to LGPL. * src/isc_udp.c: Changed license to LGPL. * src/isc_wait.c: Changed license to LGPL. * src/unused.h: Changed license to LGPL. 1999-04-22 Per Cederqvist Distribute administrative files. * Makefile.am (EXTRA_DIST): Added README.DEVO and RELEASING. Merged in all changes made to ISC in the lyskomd code from ISC 0.99 to the isc_merge_1999_04_21 tag. Details follows: 1999-04-17 Per Cederqvist Added full support for fd relocation. * src/isc_relocate.c (isc_relocate_fd): Implemented for real. * src/isc_event.c (isc_getnextevent): Return ISC_EVENT_LOGIN_UNRELOCATED instead of ISC_EVENT_LOGIN if a file descriptor relocation failed. * src/isc.h (IscEventType): New event: ISC_EVENT_LOGIN_UNRELOCATED. 1999-04-17 Per Cederqvist Added limited support for fd relocation. Error handling still needed. * src/isc_udp.c (isc_createudp): Relocate the fd. * src/isc_tcp.c (isc_tcp_accept_fn): isc_createtcp will close the file descriptor if it fails, so don't re-close it here. isc_createtcp will also set the fd attribute of the session; don't set it again. (isc_createtcp): Relocate the fd. Be careful to always close it if an error occurs. * src/isc_relocate.c (isc_relocate_fd): New file and function. This is still a dummy implementation. * src/isc_master.c (isc_initialize): Expect master config version 1006 and session config 1002. Handle fd_relocate. * src/isc.h (IscSessionConfig): Added fd_relocate. * src/intern.h (isc_relocate_fd): New function. * src/Makefile.am (libisc_a_SOURCES): Added isc_relocate.c. 1999-04-16 Per Cederqvist Simplify the use of IscHandlerList. (This needs more documentation.) * src/isc.h (IscSession): Removed the "IscHandlerCache fun" member. (IscHandlerList): Renamed the "old" member to "current". (ISC_HCALLFUN1): Adapted to IscHandlerList changes. (ISC_HCALLFUN2): Adapted to IscHandlerList changes. (ISC_HCALLFUN3): Adapted to IscHandlerList changes. * src/intern.h (ISC_SCALLFUN1): Use ISC_HCALLFUN1 to simplify code. Adapted to IscHandlerList changes. (ISC_SCALLFUN2): Analogous. (ISC_SCALLFUN3): Analogous. * src/isc_handler.c (isc_pushhandler): Modified so that the members of the member "current" of IscHandlerList objects points to the IscHandler object where the callbacks that should be used exist. Once that changes was done, there is no need for the "scb->fun" member, so it was removed. (isc_pophandler): Adjusted accordingly. * src/isc_session.c (isc_create): Removed the code that initialized scb->fun. (isc_destroy): Use scb->handlers->current instead of scb->fun. * src/isc_event.c (isc_getnextevent): Use scb->handlers->current instead of scb->fun. 1999-04-15 Per Cederqvist Allow disabled sessions to emit data. It is input from the sessions that is disabled. * src/isc_stdout.c (isc_putc): Allow output to sessions that are in state ISC_STATE_DISABLED. (isc_write): Likewise. * src/isc_output.c (isc_flush): Flush pending output even when the session is in ISC_STATE_DISABLED. (isc_oflush): Likewise. * src/isc_event.c (isc_getnextevent): Flush pending output even when the session is in ISC_STATE_DISABLED. 1999-04-11 Per Cederqvist Rebuild more often. * src/Makefile.am (isc_stdout.o): Depend on ../config.status. 1999-04-05 Per Cederqvist Get rid of useless compiler warnings. * configure.in: Don't use -Wtraditional. 1999-02-05 Per Cederqvist Get rid of a compiler warning. * src/isc_alloc.c (ISC_MAGIC_ALLOC): This is an unsigned constant. (ISC_MAGIC_FREE): Likewise. 1999-01-18 David Byers * src/.cvsignore: Added .bbg, .bb, .da and .gcov files. 1999-01-15 David Byers * configure.in: Added --with-checker, --with-gcov and --with-optimization. 1998-10-06 Per Cederqvist Port to glibc2. * src/isc_session.c: Include . 1998-07-09 Per Cederqvist --enable-isc-printf was broken. * src/isc_wait.c: Include . 1999-04-21 Per Cederqvist * demo/Makefile.am: Insert copyright header. Clean up the configure script. * configure.in (AC_PROG_MAKE_SET, AC_PROG_INSTALL): Removed. This is automatically done by AM_INIT_AUTOMAKE. (AM_PROG_CC_STDC): Use it instead of AM_C_PROTOTYPES. 1998-07-06 Per Cederqvist * Version 0.99 released. Release preparations. * NEWS: Updated. * README: Updated. * RELEASING: New file. * README.DEVO: New file. Include isc_wait.o in the built library. * src/Makefile.am (libisc_a_SOURCES): Added isc_wait.c. Improved portability. * src/isc_wait.c: Check TIME_WITH_SYS_TIME. * src/isc_socket.c: Check TIME_WITH_SYS_TIME. * src/isc_event.c: Check TIME_WITH_SYS_TIME. Ported to Solaris 2.7 Beta/gcc 2.8.1. * src/isc_udp.c: Include . (isc_udp_read_fn): Now static. Flag unused arguments. (isc_udp_destroy_fn): Likewise. (isc_udp_write_fn): Now static. (isc_mkudpaddress): Likewise. Don't pass potentially negative characters to isdigit. * src/isc_tcp.c: Include . (isc_tcp_accept_fn): Now static. Flag unused arguments. (isc_tcp_destroy_fn): Likewise. (isc_mktcpaddress): Now static. Don't pass potentially negative characters to isdigit. * src/isc_session.c: Include . (isc_default_read_fn): Flag unused arguments. (isc_default_write_fn): Flag unused arguments. (isc_default_close_fn): Flag unused arguments. (isc_file_destroy_fn): Flag unused arguments. * src/isc_alloc.c (isc_realloc): Code simplified. (isc_free): Code simplified. * src/unused.h: New file (taken from cmod). Added automake/autoconf support. * AUTHORS: New file. * Makefile.am: New file. * NEWS: New file. * acinclude.m4: New file. * configure.in: New file. * demo/Makefile.am: New file. * demo/README: New file. * doc/Makefile.am: New file. * man/Makefile.am: New file. * src/Makefile.am: New file. * man/Makefile: This file is now generated by configure. Don't store it under version control. * src/Makefile: Likewise. * demo/Makefile: Likewise. * build/stddef.h: File removed. * build/gmkdep: File removed. 1998-06-21 Per Cederqvist Incorporated all relevant improvements made to ISC in the committed sources of lyskomd as of 1998-06-21. Edited details follows. Include file improvements. * src/isc_event.c: Include , and for increased portability. * src/printf.c: Check HAVE_STRING_H and HAVE_STDLIB_H before including those files. Don't forward-declare memchr. Ignore attempts to look up the NULL host name. * src/isc_socket.c (isc_gethostname): Return NULL if given a NULL IscAddress. 1998-05-07 Per Cederqvist Incorporated all relevant improvements made to ISC in kom++-0.7.post.2. Edited details follows. Avoid including more files than necessary. * src/isc.h: Don't include any include files. * src/isc_abort.c: Don't declare system functions. Fixed include statements. * src/isc_alloc.c: Likewise. * src/isc_event.c: Likewise. * src/isc_message.c: Likewise. * src/isc_output.c: Likewise. * src/isc_session.c: Likewise. * src/isc_socket.c: Likewise. * src/isc_stdout.c: Likewise. * src/isc_tcp.c: Likewise. * src/isc_udp.c: Likewise. * src/isc_handler.c: Fixed include statements. * src/isc_master: Likewise. * src/isc_queue.c: Likewise. Added the ability to wait until a connection attempt (initiated by this process) either fails or succeeds. * src/isc.h: (isc_wait): Prototype added. * src/isc_wait.c: New file, containing isc_wait. Only support isc_printf and isc_vprintf if ISC_PRINTF_SUPPORT if defined. These functions may lead to bad use of the buffers. * src/isc.h: (isc_vprintf, isc_printf): Only declare if ISC_PRINTF_SUPPORT is defined. Fail to compile if ISC_PRINTF_SUPPORT is defined but HAVE_STDARG_H isn't. * src/isc_stdout.c (send_scb, send_putc, isc_vprintf, isc_printf): Only defined if ISC_PRINTF_SUPPORT is defined. Make sure that isc_getnextevent only returns a single ISC_EVENT_LOGOUT message when a session logs out. * src/isc.h: (IscSessionState): New state: ISC_STATE_CLOSING2. * src/isc_event.c (isc_getnextevent): There is now only one ISC_EVENT_LOGOUT message per session. Set the state to ISC_STATE_CLOSING2 when generating an ISC_EVENT_LOGOUT message. * src/isc_output.c (isc_flush): Treat ISC_STATE_CLOSING2 as ISC_STATE_CLOSING. (isc_oflush): Likewise. Portability fixes. * src/isc_alloc.c (isc_mallocfn, isc_reallocfn, isc_freefn): Removed lame casts. Make sure that isc_malloc returns a block that is aligned on a "long" boundary. * src/isc_alloc.c (isc_malloc, isc_free, isc_realloc): Portablilty fix: Align data on a "long" boundary, not only an "int" boundary. Typo fix. * src/isc_event.c (isc_getnextevent): Fixed a spelling error in a comment. Make sure that errors are reported to the proper session. * src/isc_event.c (isc_getnextevent): event->session was sometimes set erronously if an error occured in select() or if a timeout occured. Use O_NONBLOCK instead of the now obsolete name FNDELAY. * src/isc_session.c (isc_openfd): Use O_NONBLOCK instead of FNDELAY. * src/isc_tcp.c (isc_createtcp): Use O_NONBLOCK instead of FNDELAY. * src/isc_udp.c (isc_createudp): Use O_NONBLOCK instead of FNDELAY. Avoid warnings by adding a dubious cast. * src/isc_socket.c (isc_gethostname): Cast argument to gethostbyaddr to a char* to avoid a warning. Portability fix: Renamed _printf to UCB_printf. * src/isc_stdout.c (isc_printf, isc_vprintf): Call UCB_printf instead of _printf. * src/printf.c (UCB_printf): Renamed _printf to UCB_printf (to avoid conflicts on HPUX). Don't use obsolete setsockopt interfaces. * src/isc_tcp.c (isc_createtcp): Fixed calls to setsockopt with SO_LINGER and SO_REUSEADDR arguments. The old-style style previously used should no longer be necessary on modern operating systems, and in fact it no longer works everywere. * src/isc_udp.c (isc_createudp): Fixed calls to setsockopt with SO_LINGER and SO_REUSEADDR arguments. The old-style style previously used should no longer be necessary on modern operating systems, and in fact it no longer works everywere. If an attempt to bind failed with EADDRINUSE all the retries would automatically fail. * src/isc_tcp.c (isc_listentcp): Clear errno on each loop in the retry loop. Include the licensing conditions used by this package. * COPYING: New file. 1998-04-03 Per Cederqvist Port to glibc 2, where errno is a macro. * isc.h (IscSession::isc_errno): New name for former struct member errno. All users updated. 1996-07-24 Per Cederqvist ISC_EVENT_LOGIN events now return the listening session in the event, so that it can be used to easily determine which kind of connection that was made. 66.7 % of the code was contributed by . * src/isc.h (IscEvent): New field: listen_session. * src/isc_event.c (isc_getnextevent): Fill in listen_session when an ISC_EVENT_LOGIN event is created. Set it to NULL in all other cases. 1996-07-23 Per Cederqvist * Imported ISC version 0.98.3.