gsk (1.0.53) * gsk_date_parse_timet() assert failed on some bad dates. gsk (1.0.52) * bug fix: gsk_date_parse_timet() had a sign-error in its timezone handling. * add gsk_buffer_append_repeated_char(). * http server fix gsk (1.0.51) * bug fix: gskstreamlistenersocket: do not crash if remote or local addr is unavailable. * bug fix: GSK_QSELECT macro was broken * bug fix: stream-fd was sometimes notifying after shutdown. * minimal support for "100 Continue" messages in gskhttpclient gsk (1.0.50) NOT YET RELEASED gsk (1.0.49) * avoid using gettimeofday() if a suitable CPU timer is available. * gskpassfd: mechanism for passing file-descriptors between processes. gsk (1.0.48) * gsk_zlib_inflator_new2() and gsk_zlib_deflator_new2() allow you to use gzip compression and decompression. These require zlib >= 1.2.0 to work right. gsk (1.0.47) * GskStreamWatchdog: a stream that closes automatically after a certain amount of inactivity. * gsk_hook_set_poll(), etc: call the set_poll function even if idle notification is enabled. gsk (1.0.46) * micro bug fix. gsk (1.0.45) * major fix in HttpServer if not enough data comes in. * GskIO::print_errors. Setting this flag in a GskIO should print all errors that occur. The default is FALSE, but if GSK_PRINT_ERRORS=1 in the environment, then the default will become TRUE. gsk (1.0.44) * minor possibly bug in HttpClient. gsk (1.0.43) * gsk-throttle-proxy: --{half,full}-shutdowns options * http-client bug fixes: was forgetting to clear a write block in several key places. gsk (1.0.42) * gsk-throttle-proxy: useful for testing. * suppress warnings on http-server "X-Whatever" headers. gsk (1.0.41) * gsk_main_loop_add_timer(), gsk_source_adjust_timer() take 64-bit arguments for the time in milliseconds, so that we can handle really long timeouts. (the old limit was 2^32 ms == 48.5 days) (Additionally hacks were added for binary compatibility) * gsk_socket_address_new_local() is deprecated in favor of gsk_socket_address_local_new(). Likewise, gsk_socket_address_new_ethernet() is deprecated by gsk_socket_address_ethernet_new(). * GskSocketAddressSymbolic, a symbolic address which can be used with gsk_stream_fd_new_from_symbolic_address() or gsk_stream_new_connecting(), which will handle a native or symbolic address without burdening the user. * GskPersistentConnection is implemented in terms of GskSocketAddressSymbolic, and its DOING_NAME_RESOLUTION state is now unused. gsk (1.0.40) * minor bug fix (in rbtreemacros) gsk (1.0.39) * minor bug fix. gsk (1.0.38) * keep-alive improvements gsk (1.0.37) * randomize DNS results to support roundrobin DNS; enabled by default. Implement gsk_dns_rr_cache_roundrobin() and gsk_name_resolver_set_dns_roundrobin(). * bugs in redirect handling for HTTP Url transfers. gsk (1.0.36) * bug fix: gsk_stream_write() on GskStreamExternal was not handling contention properly. gsk (1.0.35) * bug fix: try the nameservers in the order listed in resolv.conf, instead of the reverse of that order. * Provide GSK_QSELECT() gsk (1.0.34) * Provide GSK_QSORT(), a macro-based quicksort. (in gskqsortmacro.h) * Provide stack, deque and list macro-based implementations. (in gsklistmacros.h) * Add gsk_g_error_add_prefix(). gsk (1.0.33) * GskMemPoolFixed bug fix. * expose gsk/zlib/gskzlib.h for its helper functions. gsk (1.0.32) * DNS bug fix. gsk (1.0.30) * BUG: bogus assertions in gskdnsrrcache wrt to the is_deprecated flag. * Make DNS warning/debugging messages go to their own log-domain. (Gsk-Dns) gsk (1.0.10) * BUILD BUG: sometimes -lreadline requires -ltermcap; in any event, test linkage. * MAJOR BUG: fixes in GskDnsClient list manipulation. The bug caused (under duress) "useless DNS message" warnings and segfaults. * add gsk_memory_source_new_vprintf() * automatically delete stale unix-domain sockets if a server tries to reuse the path. * Change gsk_name_resolve() to be deprecated, in favor of more correctly named gsk_name_resolver_task_new(); casual, non-cancelling users may use gsk_name_resolver_lookup(). * minor SSL issues * Add gsk-netcat program, for debugging and as useful example code. gsk (1.0.9) * BUG: gskhttpserver was creating 0-length chunks which looked like EOF chunks. * BUG: gskmemory was shutting down while returning nonzero. i think we decided that that wasn't allowed. * add a line-based ring-buffer: GskLogRingBuffer. * add generic logging traps (gsk_log_trap_generic) * add ring-buffer logging traps (gsk_log_trap_ring_buffer) * API change: change gsk_log_trap_domain_to_file() to take the set of log-levels trapped. * BUG: gskmimemultipart{decoder,encoder} both had serious bugs * BUG: zlibdeflator didn't properly "finish" its data. zlibinflator wasn't always giving shutdown notification, nor syncing. gsk (1.0.8) * allow user to set the DNS cache size * build fixes * BUG: GskStreamExternal was busy-looping. gsk (1.0.7) * include GskControlServer/GskControlClient which provide a simple to implement generic control interface. We also provide the gsk-control-client program which can talk to such a server, in general. Therefore, must programs will only need to implement the server. An example server has been added in src/programs. * include GskHttpContent, a content database for implementing normal HTTP servers, which usually want to provide different handlers for various portions of the path/user-agent/virtual-host space. * BUG: GskStreamExternal: re-fix bug that caused stdin and stdout to be nonblocking. * gskdaemonize provides --foreground and --background options, as well as restart-on-segv or assertion failure support. gsk (1.0.6) * compiler bug fix * bug fixes to gsklog. * this version was botched. do not use it. gsk (1.0.5) * API change: GskPacket now has two addresses: a source and a destination instead of a single multi-use address. * change GskNetworkInterfaceSet::num_interfaces to an unsigned. * gsklog.h: gmessage-based logging to files, using many domains. (daveb) * SHA-256 support in gskhash. (daveb) * GskStreamListenerSocket has a parameter to remove the entry from the file-system when done. gsk (1.0.4) * memory leak in gskhttpclient and gskhttpserver finalize routines gsk (1.0.1) * gsk_socket_address_localhost() becomes a macro, and more properly named gsk_socket_address_loopback() is added. gsk_ipv4_ip_address_{any,loopback} globals are added, basically fixed as 0.0.0.0 and 127.0.0.1. (mrad) * Force absolute URLs to have a slash (/) after the host. (daveb) * Partial shutdown problem in HTTP client, noticed by Ted Witkamp. (daveb) * HTTP Download include query string (twitkamp) * shutdown-in-shutdown loop noticed by mrad. (daveb) * gsk_url_encode and gsk_url_encode_http weren't escaping some whitespace and other "non-unreserved" characters. (mrad) * various solaris fixes reported by Jeremy Leader (at Overture). * add gsk_timegm() which does the opposite of gmtime() portably. (daveb) * better handling of POLLHUP and POLLERR in GskMainLoop{Poll,Epoll}. Now the POLLHUP flag is propagated to G_IO_IN and POLLERR is propagated to G_IO_IN|G_IO_OUT. This is roughly what BSD and select(2) do, so it seems right for linux/poll,epoll as well. * gsk_tree_remove wasn't removing newly inserted keys when a node with the same key was already being visited. (mrad) * Allow hooks to be safely untrapped/retrapped during notification. (mrad) * Allow hooks to defer shutdown notification when the hook is initialized with gsk_hook_mark_can_defer_shutdown, and the class's shutdown method returns false. (mrad) -- Dave Benson ??? gsk (1.0.0) * Completely rewritten to use 'streams' and 'hooks' instead of 'actors'. -- Dave Benson Tues Jan 13, 2004