| 1 | 1.53: 2006-12-05 |
|---|
| 2 | |
|---|
| 3 | -- fix a crash as reported on mailing lists, with backends not |
|---|
| 4 | releasing references to clientproxies when coming through |
|---|
| 5 | service selectors, and backends then timing out, crashing |
|---|
| 6 | the server. |
|---|
| 7 | |
|---|
| 8 | -- if backend sends x-reproxy-url and HTTP 204 No Content, upgrade |
|---|
| 9 | that to a 200 when sending to the client. |
|---|
| 10 | |
|---|
| 11 | -- let non-Perlbal::Socket Danga::Socket objects exist without |
|---|
| 12 | crashing in cleanup handler (allows use of Gearman::Client::Async |
|---|
| 13 | in plugins) |
|---|
| 14 | |
|---|
| 15 | 1.52: 2006-11-13 |
|---|
| 16 | |
|---|
| 17 | -- fix crash in buffered uploads when *::AIO doesn't write everything |
|---|
| 18 | to disk that's requested of it. we were unshifting back onto the |
|---|
| 19 | write queue a scalar, not a scalarref. |
|---|
| 20 | |
|---|
| 21 | -- AIO channels. from the code: |
|---|
| 22 | |
|---|
| 23 | "prevents all AIO threads from being consumed by requests for same |
|---|
| 24 | failing/overloaded disk by isolating them into separate 'channels' in |
|---|
| 25 | parent process and not dispatching more than the max in-flight count |
|---|
| 26 | allows. think of a channel as a named queue. or in reality, a disk." |
|---|
| 27 | |
|---|
| 28 | -- allow setting of SO_SNDBUF on a per-service level |
|---|
| 29 | |
|---|
| 30 | 1.51: 2006-10-04 |
|---|
| 31 | |
|---|
| 32 | -- set alive_time during slow PUTs. was causing problems |
|---|
| 33 | replicating large files in mogile, hitting fake idle timeout. |
|---|
| 34 | |
|---|
| 35 | -- pipelining HTTP injection fix. |
|---|
| 36 | |
|---|
| 37 | -- include Host header to reproxy backends |
|---|
| 38 | patch by Jonty Wareing <jonty.wareing@gmail.com> |
|---|
| 39 | |
|---|
| 40 | 1.50: 2006-09-08 |
|---|
| 41 | |
|---|
| 42 | -- add in optional Devel::Gladiator usage for memory tracking |
|---|
| 43 | |
|---|
| 44 | -- fix memory leaks in concatenanted GETs on error cases |
|---|
| 45 | |
|---|
| 46 | -- fixes to run / run better on OS X (Artur Bergman) |
|---|
| 47 | |
|---|
| 48 | 1.49: 2006-08-30 |
|---|
| 49 | |
|---|
| 50 | -- Very basic help hints command, simply dumps all possible commands. |
|---|
| 51 | |
|---|
| 52 | -- Add another statistic for reproxy caches, the current size of a particular |
|---|
| 53 | service's cache, maximum size, and fill percentage. |
|---|
| 54 | |
|---|
| 55 | 1.48: 2006-08-18 |
|---|
| 56 | |
|---|
| 57 | -- optionally cache in-process the results of X-Reproxy-URL reponses |
|---|
| 58 | |
|---|
| 59 | 1.47: 2006-08-15 |
|---|
| 60 | |
|---|
| 61 | -- concatenanted GETs sent 304 Not Modified w/ content-lengths. should |
|---|
| 62 | be without. fixed. also including t/17-webserver-concat which forgot |
|---|
| 63 | to be checked into svn/MANIFEST earlier |
|---|
| 64 | |
|---|
| 65 | 1.46: 2006-08-10 |
|---|
| 66 | |
|---|
| 67 | -- fix Mart's broken win32 support that broke Unix, part 2: syslog when |
|---|
| 68 | daemonized. TODO: test case should test daemonization mode. |
|---|
| 69 | |
|---|
| 70 | 1.45: 2006-08-10 |
|---|
| 71 | |
|---|
| 72 | -- fix Mart's broken win32 support that broke Unix. TODO: test to raise/check |
|---|
| 73 | fd limit so this doesn't happen again on unix. |
|---|
| 74 | |
|---|
| 75 | 1.44: 2006-08-10 |
|---|
| 76 | |
|---|
| 77 | -- allow a no-op ?foo at the end of concatenated-get URLs, so they'd be of |
|---|
| 78 | the form: http://host/dir??file1,file2,file3?noopsection. the no-op |
|---|
| 79 | section is good for cache-busting, putting in, say, the modtime of the |
|---|
| 80 | newest file, forcing browsers like safari (who over-cache) to reload. |
|---|
| 81 | |
|---|
| 82 | -- set a mime-type other than text/plain on concatenated-get requests, |
|---|
| 83 | only falling back to text/plain if none of files have a known mime type. |
|---|
| 84 | in practice a request is all css or all js, so match is found by looking |
|---|
| 85 | at 1st file. this is required since mozilla won't show CSS if not text/css. |
|---|
| 86 | |
|---|
| 87 | -- actually be able to start up using 'perlbal' command. test |
|---|
| 88 | suite passed before, but moving $VERSION into Perlbal.pm |
|---|
| 89 | had quitely broke it all. |
|---|
| 90 | |
|---|
| 91 | 1.43: 2006-08-09 |
|---|
| 92 | |
|---|
| 93 | -- there's a case where offset gets past end of file in static file |
|---|
| 94 | code, but very rarely. sendfile handles this w/ an error that |
|---|
| 95 | we dealt with, but the new readahead code didn't and crashed. |
|---|
| 96 | working around for now, until root cause is found for offset |
|---|
| 97 | going past. |
|---|
| 98 | |
|---|
| 99 | -- eliminate some warnings in error cases. only really affects noise |
|---|
| 100 | in test suite |
|---|
| 101 | |
|---|
| 102 | -- work better on win32 |
|---|
| 103 | |
|---|
| 104 | -- added the ability for plugins to create custom service roles and |
|---|
| 105 | add custom configuration options to services, demo is available |
|---|
| 106 | as conf/echoservice.conf and lib/Perlbal/Plugin/EchoService.pm |
|---|
| 107 | |
|---|
| 108 | 1.42: 2006-08-03 |
|---|
| 109 | |
|---|
| 110 | -- debug management command 'varsize' to track size of internal |
|---|
| 111 | data structures, to make sure none get out of control. |
|---|
| 112 | there's a report that CPU/mem grow slowly over time, and after |
|---|
| 113 | a month or so of uptime, a restart is needed. this might help |
|---|
| 114 | diagnose that. |
|---|
| 115 | |
|---|
| 116 | -- allow expansion/interoplation of stuff in config files/commands. |
|---|
| 117 | for now just mapping network device names to IP addresses: |
|---|
| 118 | SET listen = ${ip:eth0}:80 |
|---|
| 119 | |
|---|
| 120 | -- more hooks as requested by community |
|---|
| 121 | |
|---|
| 122 | -- concatenated get feature. where a client have use a |
|---|
| 123 | comma-separated list of files to return, always in text/plain. |
|---|
| 124 | Useful for webapps which have dozens/hundreds of tiny css/js |
|---|
| 125 | files, and don't trust browsers/etc to do pipelining. |
|---|
| 126 | Decreases overall roundtrip latency a bunch, but requires app |
|---|
| 127 | to be modified to support it. See t/17-concat.t test for |
|---|
| 128 | details. |
|---|
| 129 | |
|---|
| 130 | -- do AIO readahead before sendfile to reduce blocking caused |
|---|
| 131 | by disk reads from sendfile. increases throughput. see: |
|---|
| 132 | http://brad.livejournal.com/2228488.html |
|---|
| 133 | |
|---|
| 134 | -- add 'latency' configuration on selector roles |
|---|
| 135 | |
|---|
| 136 | 1.41: 2006-02-06 |
|---|
| 137 | |
|---|
| 138 | -- IE sends a request header like "If-Modified-Since: <DATE>; |
|---|
| 139 | length=<length>" so we have to remove the length bit before |
|---|
| 140 | comparing it with our date then we save the length to compare |
|---|
| 141 | later. |
|---|
| 142 | |
|---|
| 143 | -- support for reproxying to a named service. if backend returns |
|---|
| 144 | "X-Reproxy-Service: <name>" and no content, the entire original |
|---|
| 145 | client GET/HEAD request is re-sent to the new named service. |
|---|
| 146 | the "enable_reproxy" option has to be enabled for the original |
|---|
| 147 | service. |
|---|
| 148 | |
|---|
| 149 | 1.40: 2006-01-17 |
|---|
| 150 | |
|---|
| 151 | -- support for optional retrying of requests after a 500 error, |
|---|
| 152 | so user won't see the 500 error. boolean option, as well |
|---|
| 153 | as configurable schedule of how often to retry backends. |
|---|
| 154 | |
|---|
| 155 | -- clean up directory indexing HTML: Mark Smith and Fred Moyer |
|---|
| 156 | (fred@redhotpenguin.com) |
|---|
| 157 | |
|---|
| 158 | 1.39: (beta for 1.40) 2005-10-26 |
|---|
| 159 | |
|---|
| 160 | -- new feature for virtual host plugin: the Host header can be trumped |
|---|
| 161 | by a magical URL form, if allowed in config. for instance, you can |
|---|
| 162 | make an HTTP request to host "foo.com" but actually get "bar.com" |
|---|
| 163 | if you do this: |
|---|
| 164 | |
|---|
| 165 | VHOST foo.com;using:bar.com = bar |
|---|
| 166 | |
|---|
| 167 | and request /__using/bar.com/IDENT from foo.com, where IDENT is |
|---|
| 168 | just \w+. perlbal then updates the Host record to bar.com and |
|---|
| 169 | sends request URI (unaltered) to the "bar" service. |
|---|
| 170 | |
|---|
| 171 | this is useful for circumventing browser host restrictions (java, |
|---|
| 172 | javascript, flash, etc...) when you actually control both |
|---|
| 173 | domains. |
|---|
| 174 | |
|---|
| 175 | 1.38: (beta for 1.40) 2005-10-19 |
|---|
| 176 | |
|---|
| 177 | -- some paranoia evals around some parts of buffered uploads that |
|---|
| 178 | SAPO reported crashes in occasionally. added FIXMEs to investigate |
|---|
| 179 | too. for now, though, evals around closing files is safer. |
|---|
| 180 | |
|---|
| 181 | -- new feature: inter-perlbal upload tracking. for fancy upload |
|---|
| 182 | bars driven by XmlHttpRequest when clients are upload large files |
|---|
| 183 | |
|---|
| 184 | -- WARNING: reproxying (files or URLs) is now disabled by default, |
|---|
| 185 | and must be enabled per-service with "enable_reproxy = true" |
|---|
| 186 | |
|---|
| 187 | -- do a final little read before closing an HTTP connection |
|---|
| 188 | to make sure we have no unread data in kernel (notably |
|---|
| 189 | an extra "\r\n" from an IE post), so when we do close, we |
|---|
| 190 | don't send a RST packet to the end user. Thanks to Kevin |
|---|
| 191 | Lewandowski from discogs.com for the bug report. |
|---|
| 192 | |
|---|
| 193 | -- use Danga::Socket's AddTimer interface to disconnect |
|---|
| 194 | stale persistent connections every 5 seconds, driven by |
|---|
| 195 | a timer, rather than every 15 seconds, driven by |
|---|
| 196 | socket creation. |
|---|
| 197 | |
|---|
| 198 | -- there was a bug where 304 Not Modified responses would |
|---|
| 199 | cause a connection close (and thus RST packets) even |
|---|
| 200 | though keep-alive was negotiated and would've worked |
|---|
| 201 | |
|---|
| 202 | -- ignore URL arguments when doing directory indexing |
|---|
| 203 | |
|---|
| 204 | -- work a little better under "trickle". (but still not perfect... |
|---|
| 205 | trickle doesn't quite work on Perlbal, unfortunately. it's useful, |
|---|
| 206 | or would've been useful, for testing some parts...) |
|---|
| 207 | |
|---|
| 208 | -- avoid an occasional warning with dirindexing on unreadable directories |
|---|
| 209 | |
|---|
| 210 | 1.37 (beta for 1.40) 2005-08-29 |
|---|
| 211 | |
|---|
| 212 | -- "use <name>" command to set the direct object for future commands |
|---|
| 213 | |
|---|
| 214 | -- AccessControl plugin to allow/deny by default or on IPs or |
|---|
| 215 | netmasks. |
|---|
| 216 | |
|---|
| 217 | -- ClientManage could spin in its inherited event_write, causing |
|---|
| 218 | 99.9% cpu usage. Bug is arguably Danga::Socket's, but also |
|---|
| 219 | ours because it's documented what we should do and we didn't. |
|---|
| 220 | The fix is to shut down watching writability when we're done |
|---|
| 221 | writing. |
|---|
| 222 | |
|---|
| 223 | -- make accept_client and its callers deal with the possibility |
|---|
| 224 | that accept_client fails not because the backend is bogus, but |
|---|
| 225 | because the client is. so now accept_client can close the |
|---|
| 226 | client and callers have to be aware of that. |
|---|
| 227 | |
|---|
| 228 | -- after running this version on production on LiveJournal.com for |
|---|
| 229 | a bit, we discovered some cases that we'd flag as should never happen, |
|---|
| 230 | but actually do, so updated the comments and behavior to |
|---|
| 231 | do the right thing and not just crash with an assertion. |
|---|
| 232 | |
|---|
| 233 | -- fix misspellings of trusted_upstream_proxies that didn't |
|---|
| 234 | come along for the renaming ride earlier |
|---|
| 235 | |
|---|
| 236 | -- webserver mode now ignores URL arguments when looking up |
|---|
| 237 | filename |
|---|
| 238 | |
|---|
| 239 | -- remove warnings accessing undefs in ranges and vhosts |
|---|
| 240 | |
|---|
| 241 | -- new --version and --help flags. also a usage message on bogus |
|---|
| 242 | options (or when --help). props to Jacques Marneweck |
|---|
| 243 | <jacques@powertrip.co.za> for the help and motivation. |
|---|
| 244 | |
|---|
| 245 | 1.36 (beta for 1.40) 2005-08-19 |
|---|
| 246 | |
|---|
| 247 | -- fix bug in ClientProxy when user disconnects after POST/PUTing |
|---|
| 248 | a content body, but before a response comes back. |
|---|
| 249 | |
|---|
| 250 | -- now checks correctly for Danga::Socket version 1.44 or above. |
|---|
| 251 | (required version was in quotes, confusing perl.) |
|---|
| 252 | |
|---|
| 253 | -- vhost plugin: strip off port specification from the Host header |
|---|
| 254 | before trying to match with configured patterns. |
|---|
| 255 | |
|---|
| 256 | 1.35: (beta of 1.40) 2005-08-16 |
|---|
| 257 | |
|---|
| 258 | -- beta SSL support in a few lines of code. maybe it's completely |
|---|
| 259 | done. maybe it's barely done. But it seems to work? I'm no |
|---|
| 260 | SSL master... IO::Socket::SSL just made it so easy. |
|---|
| 261 | |
|---|
| 262 | -- lots more tests |
|---|
| 263 | |
|---|
| 264 | -- lots more cleanup |
|---|
| 265 | |
|---|
| 266 | -- fix potential crashing bugs in the PUT path. luckily ones we |
|---|
| 267 | never hit. |
|---|
| 268 | |
|---|
| 269 | -- lots and lots of code cleanup |
|---|
| 270 | |
|---|
| 271 | -- load plugins by either the exact case specified, all lowercase, |
|---|
| 272 | or all lowercase with first letter uppercase. then remember |
|---|
| 273 | the case for unloading (which was never implemented?) |
|---|
| 274 | |
|---|
| 275 | -- reorganize/cleanup code related to stalling the backend due to |
|---|
| 276 | client's buffer size exceeding one of the two limits. |
|---|
| 277 | introduce "backend_stalled" |
|---|
| 278 | |
|---|
| 279 | -- buffer uploads to disk |
|---|
| 280 | |
|---|
| 281 | 1.3: (2005-06-26) |
|---|
| 282 | |
|---|
| 283 | -- introduce CommandContext, so management commands can be less |
|---|
| 284 | verbose when in config files (service/pool names can be left off |
|---|
| 285 | when you just created them a couple lines before) |
|---|
| 286 | |
|---|
| 287 | -- remove sendstats support |
|---|
| 288 | |
|---|
| 289 | -- exit with 0 vs non-zero when/if Perlbal crashes. new command |
|---|
| 290 | "crash" to fake a crash, for testing. |
|---|
| 291 | |
|---|
| 292 | -- entirely redone management command parsing/dispatching (major |
|---|
| 293 | code cleanup) |
|---|
| 294 | |
|---|
| 295 | -- virtual host plugin on service selector framework |
|---|
| 296 | |
|---|
| 297 | -- service selector framework |
|---|
| 298 | |
|---|
| 299 | -- make Net::Netmask optional |
|---|
| 300 | |
|---|
| 301 | -- byte range support for both webserver mode and reproxy-file mode |
|---|
| 302 | Giao Phan <giao@guba.com>. so clients can resume large transfers. |
|---|
| 303 | |
|---|
| 304 | -- test suite |
|---|
| 305 | |
|---|
| 306 | -- IO::AIO support (brad) |
|---|
| 307 | |
|---|
| 308 | -- change response code to client to 200 on reproxy-file from backend |
|---|
| 309 | |
|---|
| 310 | -- 'nodes' command now takes as an optional argument a specific ip:port to |
|---|
| 311 | dump the node stats for |
|---|
| 312 | |
|---|
| 313 | -- AIO abstraction layer (Perlbal::AIO) which can currently do either |
|---|
| 314 | Linux::AIO or "none" (doing everything sync). also in future File::FDpasser |
|---|
| 315 | and other OS-specific modes [brad] |
|---|
| 316 | |
|---|
| 317 | -- add buffer_backend_connect to do in memory buffering of data before we |
|---|
| 318 | request a backend; assists slow clients without tying up a mod_perl |
|---|
| 319 | |
|---|
| 320 | -- fix spinning issue when webnodes unavailable; should now not consume 100% |
|---|
| 321 | CPU in those cases |
|---|
| 322 | |
|---|
| 323 | -- revamp verbose functionality; by default it's still of, but if you specify |
|---|
| 324 | VERBOSE ON in the config file, it turns it on for management connections |
|---|
| 325 | by default. management connections, when specifying VERBOSE ON/OFF, will |
|---|
| 326 | now set the flag only for that connection. |
|---|
| 327 | |
|---|
| 328 | -- new command for config file; VERBOSE ON/OFF; can be used to enable or |
|---|
| 329 | disable confirmation of all commands such as SET, SERVER, CREATE, etc. |
|---|
| 330 | by default, it's off for config files, but on for management connections. |
|---|
| 331 | |
|---|
| 332 | -- add generation count to services that increments every time a pool is |
|---|
| 333 | switched. this data is now stored on backends when they're spawned as |
|---|
| 334 | well, and when we allocate a backend we verify the generation so old ones |
|---|
| 335 | are thrown away. |
|---|
| 336 | |
|---|
| 337 | -- allow setting of nodefile on pools to 'none' or 'null' or 'undef' or just |
|---|
| 338 | an empty set of quotes ("", '') in order to stop using node files |
|---|
| 339 | |
|---|
| 340 | -- automatically set use count to 0 on new nodes coming in from nodefile |
|---|
| 341 | |
|---|
| 342 | -- made auto-vivification of pulls throw warnings, and made Perlbal die if it |
|---|
| 343 | tries to vivify a pool and the user has previously manually declared a pool |
|---|
| 344 | |
|---|
| 345 | -- updated pool commands to be more flexible (POOL pool ADD node, etc) |
|---|
| 346 | |
|---|
| 347 | -- add pools; a way of having different sets of nodes and instantly switching |
|---|
| 348 | between them, so traffic stops going to old nodes; see the example config |
|---|
| 349 | file for usage |
|---|
| 350 | |
|---|
| 351 | -- work partially without Linux::AIO (does sync stat of node file in reverse |
|---|
| 352 | proxy mode, and webserver mode doesn't work) --brad |
|---|
| 353 | |
|---|
| 354 | 1.2 (2005-03-07) |
|---|
| 355 | -- add new stats command 'nodes' that shows information on each node that we've |
|---|
| 356 | been connecting to -- last connect time, last attempt time, a breakdown of |
|---|
| 357 | the last 500 status codes returned, etc |
|---|
| 358 | |
|---|
| 359 | -- add ability to use new Danga::Socket profiling; 'profile on', 'profile data' |
|---|
| 360 | to see the info so far, and 'profile off' to disable it |
|---|
| 361 | |
|---|
| 362 | -- graceful shutdown now flags sockets that are busy to die so they die when |
|---|
| 363 | they're done with their current connection |
|---|
| 364 | |
|---|
| 365 | -- sockets in persist_wait now get closed immediately during a graceful shutdown |
|---|
| 366 | |
|---|
| 367 | -- fix handling of OPTIONS responses; used to do its own state clearing but |
|---|
| 368 | it now uses the next_request method as it should |
|---|
| 369 | |
|---|
| 370 | -- fix bug with determination of keep-alive in http 1.1 case specifying |
|---|
| 371 | a connection: close header |
|---|
| 372 | |
|---|
| 373 | -- added 'uptime' management command to track how long Perlbal has been up |
|---|
| 374 | |
|---|
| 375 | -- new config commands: HEADER INSERT <svc> <header>: <value> and HEADER |
|---|
| 376 | REMOVE <svc> <header> which will insert and remove headers from user |
|---|
| 377 | requests before they're sent to backend proxy nodes. |
|---|
| 378 | |
|---|
| 379 | -- add dependency to Net::Netmask; now you can specify trusted_upstream_proxies |
|---|
| 380 | on a service (SET service.trusted_upstream_proxies = 10.0.0.0/8, etc) |
|---|
| 381 | which will allow requests from that range to set X-Forwarded-For, X-Host, |
|---|
| 382 | and X-Forwarded-Host headers. |
|---|
| 383 | |
|---|
| 384 | -- fixed a bug that caused connections to hang when the backend responded |
|---|
| 385 | before the user was done sending data |
|---|
| 386 | |
|---|
| 387 | -- reset some variables that weren't being reset: read_buf, read_ahead, read_size |
|---|
| 388 | |
|---|
| 389 | -- "proc" management command shows user and system CPU usage for Perlbal |
|---|
| 390 | this run, as well as a delta since the last time you ran "proc" |
|---|
| 391 | |
|---|
| 392 | -- added Perlbal::XS interface for modules to use; also 'xs' management |
|---|
| 393 | command to see the status of XS modules |
|---|
| 394 | |
|---|
| 395 | -- bug in PalImg caused crash on files with no length (or when another |
|---|
| 396 | error occurs that causes no data to be sent to new_gif_palette function) |
|---|
| 397 | |
|---|
| 398 | -- ReproxyManager would sometimes let closed backends back into the pool |
|---|
| 399 | and hand them off to clients, fixed to check for that |
|---|
| 400 | |
|---|
| 401 | -- new policy: you don't muck around with the internals of other classes. |
|---|
| 402 | notably, clients don't change the internals of a backend and backends |
|---|
| 403 | don't change the internals of a client. this was causing all sorts of |
|---|
| 404 | problems because nobody was cleaning up properly. (especially with regard |
|---|
| 405 | to "who is my backend's client" type questions.) |
|---|
| 406 | |
|---|
| 407 | -- fixed up code that did its own keep-alive checks to use the HTTPHeaders |
|---|
| 408 | functions so that in the future every part of the code stays up to date |
|---|
| 409 | |
|---|
| 410 | -- Perlbal::Socket now has the option to keep track of all objects that |
|---|
| 411 | are created. new command to management interface 'leaks' will show |
|---|
| 412 | all objects currently in memory. turn this functionality on by enabling |
|---|
| 413 | the TRACK_OBJECTS constant in Perlbal::Socket. |
|---|
| 414 | |
|---|
| 415 | -- split keep-alive logic into request and response methods and cleared |
|---|
| 416 | up how that works |
|---|
| 417 | |
|---|
| 418 | -- rewrote reproxy URI support. new class Perlbal::ReproxyManager does all |
|---|
| 419 | of the work relating to reproxies. it's basically a service class but |
|---|
| 420 | stripped down and dealing with single endpoints instead of pools. much |
|---|
| 421 | much much more robust under heavy load. (Junior, Brad) |
|---|
| 422 | |
|---|
| 423 | -- now that we support persistent connections, the 'queues' command didn't |
|---|
| 424 | have an accurate time; added ClientProxy member last_request_time so |
|---|
| 425 | we can accurately tell how long requests have been waiting for |
|---|
| 426 | |
|---|
| 427 | -- Danga::Socket got an overhaul; close and steal_socket now share a lot |
|---|
| 428 | of code by calling _cleanup. some more paranoia on making sure the |
|---|
| 429 | object isn't already closed when we try to do things. |
|---|
| 430 | |
|---|
| 431 | -- lots more paranoia in close events and event_err handling for backends |
|---|
| 432 | |
|---|
| 433 | -- added tracking mode for helping look for leaked objects; records a |
|---|
| 434 | backtrace of every object created. "server track_obj = 0/1" to enable |
|---|
| 435 | or disable it, and then "tracking" in a management interface to see. |
|---|
| 436 | |
|---|
| 437 | -- made Perlbal::objctor/objdtor take an object as their first parameter. |
|---|
| 438 | much faster than using caller(). |
|---|
| 439 | |
|---|
| 440 | -- fix Highpri plugin to not check hosts for high priority values when |
|---|
| 441 | the host isn't defined |
|---|
| 442 | |
|---|
| 443 | -- made Palimg plugin far more paranoid about errors, and also uses new |
|---|
| 444 | ClientHTTPBase scratch area for keeping track of data instead of using |
|---|
| 445 | headers (which are generally slower) |
|---|
| 446 | |
|---|
| 447 | -- fixed bug in HTTPHeaders that set_version would inadvertently |
|---|
| 448 | run into when used on a header created through new_response |
|---|
| 449 | |
|---|
| 450 | -- ClientProxy class now supports persistence; set persist_client on |
|---|
| 451 | the proxy service in order to enable it. |
|---|
| 452 | |
|---|
| 453 | -- Palimg plugin now supports fallback to web server mode if the |
|---|
| 454 | requested URI doesn't fit our desired pattern |
|---|
| 455 | |
|---|
| 456 | -- did some cleanup; made a bunch of HTTPHeaders accesses use the |
|---|
| 457 | accessor methods instead of referencing into the object's private |
|---|
| 458 | store of data |
|---|
| 459 | |
|---|
| 460 | -- fixed a crash caused by calling getsockname/getpeername on sockets |
|---|
| 461 | that have been undefined after having been stolen during an internal |
|---|
| 462 | redirect to another webserver |
|---|
| 463 | |
|---|
| 464 | -- fixed _simple_response to not return a body if we're serving |
|---|
| 465 | to a HEAD request |
|---|
| 466 | |
|---|
| 467 | -- bug fix: don't send Not-Modified responses to requests for dynamic |
|---|
| 468 | directory listings. it was messing up persistent connections |
|---|
| 469 | since the directory serving code didn't get passed down whether we |
|---|
| 470 | were sending a body or not. and not modifies on directories are hard: |
|---|
| 471 | modify time isn't altogether useful. (file sizes could change) |
|---|
| 472 | |
|---|
| 473 | this still does not-modifieds on indirect index.html directory |
|---|
| 474 | requests, because _serve_request ends up eventually calling |
|---|
| 475 | _serve_request on a different URI. (brad) |
|---|
| 476 | |
|---|
| 477 | -- added BSD::Resource as dependency to Makefile.PL (brad) |
|---|
| 478 | |
|---|
| 479 | -- fixed 304 Not Modified responses to not send Content-Length |
|---|
| 480 | and Content-Type headers. (jr) |
|---|
| 481 | |
|---|
| 482 | 1.01 (2004-10-22) |
|---|
| 483 | -- when internally redirecting a URL, perlbal advertises |
|---|
| 484 | that it supports persisent HTTP connections now, |
|---|
| 485 | and caches those sockets for 5 seconds. (not configurable) |
|---|
| 486 | useful under load, otherwise you waste all local ports |
|---|
| 487 | on a machine |
|---|
| 488 | |
|---|
| 489 | -- ditch dependence on IO::SendFile. do it ourselves (1 line) |
|---|
| 490 | with perl's syscall function |
|---|
| 491 | |
|---|
| 492 | -- add doc/* and conf/* to MANIFEST file |
|---|
| 493 | |
|---|
| 494 | 1.00 |
|---|
| 495 | -- initial packaged release |
|---|