1gsk (1.0.63): 2 * dns memory leak (it would leak up to 2^16 hash-table entries before 3 reusing them) 4 * memory leak in local socket-addresses. 5 * add gsk-analyze-successive-memdumps 6 * fix gsk_escape functions properly handle situations 7 like "\0000", which should be two characters: 8 a NUL followed by a digit '0'. 9 * use g_slice for foreign buffer fragments 10 * fix to gsk_rm_rf() with symlinks 11 12gsk (1.0.62) 13 * bug fix in blocking of POST data. 14 15gsk (1.0.61) 16 * gsk_http_server_set_idle_timeout(), 17 gsk_http_content_set_idle_timeout(): adjust the keepalive timeout 18 19gsk (1.0.60) 20 * bug in gsk_log_rotate_stdio_logs(): 21 implement '%s' ourselves instead of using strftime. 22 23gsk (1.0.59) 24 * add gsk_log_rotate_stdio_logs() 25 26gsk (1.0.58) 27 * add gsk_http_client_propagate_content_read_shutdown(); 28 use it from gskurltransferhttp. 29 30gsk (1.0.57) 31 * gskstreamconnection: use read_buffer on input stream if available. 32 * BUG: gsk_http_request_parse_cgi_string() (and friends). 33 Skip past multiple '&' characters as intended. 34 * obey "mask" in gsk_log_trap() 35 36gsk (1.0.56) 37 * fix bug parsing content-charset (remove quotes if necessary) 38 39gsk (1.0.55) 40 * add gsk_lock_dir() 41 42gsk (1.0.54) 43 * add gsk_http_content_type_parse() function 44 * permit gsk_io_set_gerror to specific a non-GSK domain (remove assertion) 45 46 47gsk (1.0.53) 48 * gsk_date_parse_timet() assert failed on some bad dates. 49 50gsk (1.0.52) 51 * bug fix: gsk_date_parse_timet() had a sign-error in its timezone 52 handling. 53 * add gsk_buffer_append_repeated_char(). 54 * http server fix 55 56gsk (1.0.51) 57 * bug fix: gskstreamlistenersocket: do not crash if remote or local addr 58 is unavailable. 59 * bug fix: GSK_QSELECT macro was broken 60 * bug fix: stream-fd was sometimes notifying after shutdown. 61 * minimal support for "100 Continue" messages in gskhttpclient 62 63gsk (1.0.50) NOT YET RELEASED 64 65gsk (1.0.49) 66 * avoid using gettimeofday() if a suitable CPU timer is available. 67 * gskpassfd: mechanism for passing file-descriptors between processes. 68 69gsk (1.0.48) 70 * gsk_zlib_inflator_new2() and 71 gsk_zlib_deflator_new2() allow you to use gzip compression 72 and decompression. These require zlib >= 1.2.0 to work right. 73 74gsk (1.0.47) 75 * GskStreamWatchdog: a stream that closes automatically after 76 a certain amount of inactivity. 77 * gsk_hook_set_poll(), etc: call the set_poll function even 78 if idle notification is enabled. 79 80gsk (1.0.46) 81 * micro bug fix. 82 83gsk (1.0.45) 84 * major fix in HttpServer if not enough data comes in. 85 * GskIO::print_errors. Setting this flag in a GskIO 86 should print all errors that occur. The default 87 is FALSE, but if GSK_PRINT_ERRORS=1 in the environment, 88 then the default will become TRUE. 89 90gsk (1.0.44) 91 * minor possibly bug in HttpClient. 92 93gsk (1.0.43) 94 * gsk-throttle-proxy: --{half,full}-shutdowns options 95 * http-client bug fixes: was forgetting to clear a write 96 block in several key places. 97 98gsk (1.0.42) 99 * gsk-throttle-proxy: useful for testing. 100 * suppress warnings on http-server "X-Whatever" headers. 101 102gsk (1.0.41) 103 * gsk_main_loop_add_timer(), gsk_source_adjust_timer() 104 take 64-bit arguments for the time in milliseconds, 105 so that we can handle really long timeouts. 106 (the old limit was 2^32 ms == 48.5 days) 107 (Additionally hacks were added for binary compatibility) 108 * gsk_socket_address_new_local() is deprecated in favor of 109 gsk_socket_address_local_new(). Likewise, 110 gsk_socket_address_new_ethernet() is deprecated by 111 gsk_socket_address_ethernet_new(). 112 * GskSocketAddressSymbolic, a symbolic address 113 which can be used with gsk_stream_fd_new_from_symbolic_address() 114 or gsk_stream_new_connecting(), which will handle a 115 native or symbolic address without burdening the user. 116 * GskPersistentConnection is implemented in terms 117 of GskSocketAddressSymbolic, and its DOING_NAME_RESOLUTION state 118 is now unused. 119 120gsk (1.0.40) 121 * minor bug fix (in rbtreemacros) 122 123gsk (1.0.39) 124 * minor bug fix. 125 126gsk (1.0.38) 127 * keep-alive improvements 128 129gsk (1.0.37) 130 * randomize DNS results to support roundrobin DNS; 131 enabled by default. 132 Implement gsk_dns_rr_cache_roundrobin() 133 and gsk_name_resolver_set_dns_roundrobin(). 134 * bugs in redirect handling for HTTP Url transfers. 135 136gsk (1.0.36) 137 * bug fix: gsk_stream_write() on GskStreamExternal 138 was not handling contention properly. 139 140gsk (1.0.35) 141 * bug fix: try the nameservers in the order listed in resolv.conf, 142 instead of the reverse of that order. 143 * Provide GSK_QSELECT() 144 145gsk (1.0.34) 146 * Provide GSK_QSORT(), a macro-based quicksort. (in gskqsortmacro.h) 147 * Provide stack, deque and list macro-based implementations. 148 (in gsklistmacros.h) 149 * Add gsk_g_error_add_prefix(). 150 151gsk (1.0.33) 152 * GskMemPoolFixed bug fix. 153 * expose gsk/zlib/gskzlib.h for its helper functions. 154 155gsk (1.0.32) 156 * DNS bug fix. 157 158gsk (1.0.30) 159 * BUG: bogus assertions in gskdnsrrcache wrt to the is_deprecated flag. 160 * Make DNS warning/debugging messages go to their own log-domain. (Gsk-Dns) 161 162gsk (1.0.10) 163 164 * BUILD BUG: sometimes -lreadline requires -ltermcap; 165 in any event, test linkage. 166 * MAJOR BUG: fixes in GskDnsClient list manipulation. 167 The bug caused (under duress) 168 "useless DNS message" warnings and segfaults. 169 * add gsk_memory_source_new_vprintf() 170 * automatically delete stale unix-domain sockets if a server tries 171 to reuse the path. 172 * Change gsk_name_resolve() to be deprecated, 173 in favor of more correctly named gsk_name_resolver_task_new(); 174 casual, non-cancelling users may use gsk_name_resolver_lookup(). 175 * minor SSL issues 176 * Add gsk-netcat program, for debugging and as useful example code. 177 178gsk (1.0.9) 179 * BUG: gskhttpserver was creating 0-length chunks which looked 180 like EOF chunks. 181 * BUG: gskmemory was shutting down while returning nonzero. 182 i think we decided that that wasn't allowed. 183 * add a line-based ring-buffer: GskLogRingBuffer. 184 * add generic logging traps (gsk_log_trap_generic) 185 * add ring-buffer logging traps (gsk_log_trap_ring_buffer) 186 * API change: change gsk_log_trap_domain_to_file() to take 187 the set of log-levels trapped. 188 * BUG: gskmimemultipart{decoder,encoder} both had serious bugs 189 * BUG: zlibdeflator didn't properly "finish" its data. 190 zlibinflator wasn't always giving shutdown notification, nor syncing. 191 192gsk (1.0.8) 193 * allow user to set the DNS cache size 194 * build fixes 195 * BUG: GskStreamExternal was busy-looping. 196 197gsk (1.0.7) 198 * include GskControlServer/GskControlClient 199 which provide a simple to implement generic control 200 interface. We also provide the gsk-control-client 201 program which can talk to such a server, in general. 202 Therefore, must programs will only need to implement the 203 server. An example server has been added in src/programs. 204 * include GskHttpContent, a content database for implementing 205 normal HTTP servers, which usually want to provide different handlers 206 for various portions of the path/user-agent/virtual-host space. 207 * BUG: GskStreamExternal: re-fix bug that caused 208 stdin and stdout to be nonblocking. 209 * gskdaemonize provides --foreground and --background options, 210 as well as restart-on-segv or assertion failure support. 211 212gsk (1.0.6) 213 * compiler bug fix 214 * bug fixes to gsklog. 215 * this version was botched. do not use it. 216 217gsk (1.0.5) 218 * API change: GskPacket now has two addresses: a source and a destination 219 instead of a single multi-use address. 220 * change GskNetworkInterfaceSet::num_interfaces to an unsigned. 221 * gsklog.h: gmessage-based logging to files, using many domains. (daveb) 222 * SHA-256 support in gskhash. (daveb) 223 * GskStreamListenerSocket has a parameter to remove the entry 224 from the file-system when done. 225 226gsk (1.0.4) 227 * memory leak in gskhttpclient and gskhttpserver finalize routines 228 229gsk (1.0.1) 230 * gsk_socket_address_localhost() becomes a macro, 231 and more properly named gsk_socket_address_loopback() 232 is added. gsk_ipv4_ip_address_{any,loopback} globals 233 are added, basically fixed as 0.0.0.0 and 127.0.0.1. (mrad) 234 * Force absolute URLs to have a slash (/) after the host. (daveb) 235 * Partial shutdown problem in HTTP client, noticed by Ted Witkamp. (daveb) 236 * HTTP Download include query string (twitkamp) 237 * shutdown-in-shutdown loop noticed by mrad. (daveb) 238 * gsk_url_encode and gsk_url_encode_http weren't escaping some 239 whitespace and other "non-unreserved" characters. (mrad) 240 * various solaris fixes reported by Jeremy Leader (at Overture). 241 * add gsk_timegm() which does the opposite of gmtime() portably. (daveb) 242 * better handling of POLLHUP and POLLERR in GskMainLoop{Poll,Epoll}. 243 Now the POLLHUP flag is propagated to G_IO_IN and POLLERR 244 is propagated to G_IO_IN|G_IO_OUT. This is roughly what 245 BSD and select(2) do, so it seems right for linux/poll,epoll as well. 246 * gsk_tree_remove wasn't removing newly inserted keys when a node 247 with the same key was already being visited. (mrad) 248 * Allow hooks to be safely untrapped/retrapped during notification. (mrad) 249 * Allow hooks to defer shutdown notification when the hook is initialized 250 with gsk_hook_mark_can_defer_shutdown, and the class's shutdown method 251 returns false. (mrad) 252 253 -- Dave Benson <daveb@ffem.org> ??? 254 255 256gsk (1.0.0) 257 258 * Completely rewritten to use 'streams' and 'hooks' instead 259 of 'actors'. 260 261 -- Dave Benson <daveb@ffem.org> Tues Jan 13, 2004 262