root/trunk/CHANGES @ 822

Revision 822, 29.6 kB (checked in by bradfitz, 5 months ago)

make Perlbal::Test be more robust and only use free ports.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1    -- make Perlbal::Test be more robust and only use free ports.
2       (Bart van der Schans <herengracht@gmail.com>)
3       
4    -- Make Content-Range replies work (Ask BjÞrn Hansen)
5
6    -- Make Redirect plugin more standards compliant (Ask BjÞrn Hansen)
7
8    -- Fix X-REPROXY-FILE to work with SSL connections (Greg Denton)
9
10    -- Syslog as 'crit' rather than 'critical' (noticed by Richard Bronosky)
11
12    -- Allow zero byte PUT requests (in normal PUT situations)
13
14    -- Fix for serving files from the filesystem over SSL (Greg Denton)
15
16    -- Beginnings of IPv6 support.  You can now set 'listen' to just a port
17       number and if you have IPv6 setup, have IO::Socket::INET6, and have
18       Danga::Socket 1.61, it'll listen on both IPv6 and IPv4 on that port.
19       (the equivalent to 0.0.0.0).  By default, with the old required syntax
20       of 'listen' being n.n.n.n:port, that'll force IPv4 mode and there are
21       no changes.  Even without IPv6 support, you can now listen on a port
22       without specifying e.g. 0.0.0.0:80.  Currently unimplemented: listening
23       on specific IPv6 addresses, connecting to IPv6 backends, etc.
24       (Brad Fitzpatrick <brad@danga.com>)
25
26    -- support filenames with +'s in webserver mode (Jordi Funollet).
27
28    -- change the VHost plugin to treat 'www.example.com.' and
29       'www.example.com' the same. (Ask)
30
31    -- silence warnings when things that look like variables on comment lines
32       in config input.
33
34    -- silence warnings from mgmt system when showing an object that doesn't
35       have a listening socket.
36
37    -- don't fail on t/90-accesscontrol.t if Net::Netmask isn't
38       installed. (Boris Zentner <bzm@2bz.de>)
39
401.72: 2008-09-21
41
42    -- Removed version check in Plugin/Include.pm
43
44    -- No other changes; fixing CPAN upload.
45
461.71: 2008-09-13
47
48    -- SECURITY: Remote crash reported by Dan Conlon, patched perlbal to send
49       error on negative content length to prevent this.
50
51    -- Move manage_multi() from test script into Perlbal::Test class.
52
53    -- Add documentation to Perlbal::Test.
54
55    -- Fix building the package on debian.
56
57    -- Lots of typo corrections in documentation and comments from Nick Andrew
58
59    -- Add SERVER crash_backtrace= setting, to make a crash of perlbal report
60       a backtrace along with the error message.
61
62    -- Add backend_send_verify and backend_read_verify hooks to make custom
63       verification methods possible.
64
65    -- Add BackendHTTP method 'verify_success' and adjust code to follow
66       this. Intended for use with the above hooks.
67
68    -- Add a 'scratch' field to BackendHTTP objects so plugins can store
69       per-backend scratch data.
70
711.70: 2008-03-08
72
73    -- SECURITY: patch from Jeremey James <jbj@forbidden.co.uk> to not crash
74       on zero byte chunked upload when buffered uploads are enabled.
75
76    -- on successful write, update Perlbal::Socket's alive_time, so slowly
77       reproxied writes don't timeout the connection and kill it.  Patch
78       from Jonty <jonty@last.fm>.  r765
79
80    -- Perl 5.10 support.  Patch from Andy Armstrong <andy@hexten.net>.
81       Disclaimer: at least the tests all pass now, but no real-world use yet.
82       Should be fine, though.  Please report your success to the mailing list
83       and/or brad@danga.com.
84
85    -- Add Include plugin by Eamon Daly <edaly@nextwavemedia.com>; plugin
86       allows you to use "INCLUDE = /etc/conf.d/*" or "INCLUDE = /foo.conf"
87       to bring in more config; can be nested.
88
89    -- SECURITY: Previously a single upward directory traversal was possible
90       when concat get was enabled. This behavior has been fixed in code to
91       match with standard file serving.
92
93    -- Fix 'No such pseudo-hash field "high_priority"' issue in Stats plugin
94       (Eamon Daly and Jonty Wareing)
95
96    -- Support for "anonymous services", for API callers that really don't
97       care what their service is called but just want to get hold of a
98       Service object. These aren't really anonymous, but they have suitably
99       ugly names that no sane human should ever conflict with them.
100
101    -- add some new methods that make it a little nicer to embed Perlbal
102       in another application that uses Danga::Socket. Some refactoring
103       was done to avoid duplicate code between the "end-user" way and the
104       API way.
105
106    -- Chained selectors.  from Jeremy James <jbj@forbidden.co.uk>.
107
108    -- add "cgilike" plugin which offers a simple API very loosely based on
109       mod_perl for handling responses
110
111    -- add HTTPHeaders method set_request_uri so plugins can modify the uri
112       being requested
113
114    -- access control test
115
116    -- add option to AccessControl plugin to use observed_ip_string instead
117
118    -- add observed_ip_string method to perlbal sockets, allowing http
119       connections to set an observed ip string when an upstream proxy is
120       trusted.
121
122    -- add blind_proxy option, which disables appending to the end of the
123       X-Forwarded-For header when connections arrive from a trusted proxy.
124
125    -- make socket closing more verbose when Perlbal::DEBUG is set
126
127    -- verify_backend_path configuration option
128
129    -- don't overwrite $^P, allows use of perl debugger on perlbal.
130
1311.60: 2007-10-23
132
133    -- accept LFLF to end HTTP request headers, instead of just
134       CRLFCRLF.  easier monitoring with netcat & other popular
135       webservers accept LFLF anyway.  (Paul Baker)
136
137    -- SHUTDOWN GRACEFUL [timeout] - now accepts optional timeout
138       parameter to force shutdown after that period in seconds
139
140    -- make SSL non-blocking
141
142    -- make persist_client_timeout service tunable apply to the max_idle_time
143       value used to kill sockets that are idle
144
145    -- add Vpath plugin for selectors; can select on URI regex now
146
147    -- add ability to set default_service on selector services; any
148       request that is not caught by a selector plugin instead gets
149       routed to the defined default service
150
151    -- add MIME [ LIST | REMOVE <ext> | SET <ext> <mime> ] command for
152       managing the internal list of mime-types
153
154    -- return an error when trying to use HEADER command on a
155       service that isn't of role reverse_proxy
156
157    -- add hook to attach when a service selector is getting a client
158       returned to it.
159
160    -- fixed huge memory leak in Stats plugin
161
162    -- Fix t/15-webserver.t to not fail once in a while (timing glitch)
163
164    -- Fix handling of a proxy response that doesn't have a Reason-Phrase
165       on the HTTP status line.
166
167    -- Update 'queues' management command to output information about low
168       priority queue, now that we use it.
169
170    -- the buffered upload rate test should pass more reliably now.  some
171       people reported it sporadically (or often) failing before
172
173    -- new per-service configuration value: persist_client_timeout -
174       timeout in seconds for HTTP keep-alives to the end user
175       (defaults to 30 seconds)
176
177    -- new server configuration value: pidfile - for managing an internal
178       pidfile.
179
1801.59: 2007-05-22
181
182    -- only call die_gracefully on a socket if it CAN die_graceully.  fixes
183       shutdown graceful on mogstored, which has things betsides subclasses
184       of Perlbal::Socket in its Danga::Socket event loop
185
186    -- WARNING:  removed Linux::AIO support.  go get IO::AIO 1.6 at least if
187       you use webserver mode or reproxy files or do buffered uploads.
188
1891.58: 2007-05-11
190
191    -- plugin reload support, if plugin supports it.  plugin must implement
192           sub can_reload { 1 }
193       and optionally:
194           sub pre_reload_unload { ... }
195       (which is called before the ->unload, module reload, and ->load)
196       new management command is:
197           reload <plugin_name>
198
1991.57: 2007-04-26
200
201    -- make ClientHTTP (webserver mode) support transfer-encoding
202       "chunked" PUTs, when PUTs are already enabled.  useful
203       for things like MogileFS, where writing clients may not
204       know the final length ahead of time to predeclare in the
205       Content-Length request header.
206
207    -- Add the client_ip to the X-Forwarded-For header when the
208       upstream is "trusted" (Ask Bjoern Hansen).
209
2101.56: 2007-04-16
211
212    -- make HTML proper in ClientManage interface Jacques Marneweck
213       <jacques@powertrip.co.za>
214
215    -- fix "make test" on OS X.  Radu Greab <radu@yx.ro> and
216       Chuck Remes <cremes.devlist@mac.com> fixed & confirmed.
217
218    -- let accesscontrol plugin have a new match action, "queue_low",
219       to make a match force a request onto the low-priotity queue.
220       this match action is in addition to the two previous ones
221       (allow and deny).
222
223    -- start of work on making BackendHTTPs be abstract, dispatching
224       to a child process over a socketpair which speaks HTTP on
225       stdin/stdout.  Unfinished.  To be polished in future.
226
227    -- new hook "make_low_priority", like "make_high_priority"
228
2291.55: 2007-03-21
230
231    -- add plugin that returns 304 automatically on incoming requests
232       with If-Modified-Since header and matching a regular expression
233       on the Host header. (for hostnames serving immutable resources,
234       where if client has ANY version, it's the correct one.)  see:
235       example conf at conf/not-modified-plugin.conf
236
237    -- do HEAD to reproxied hosts, if client did a HEAD (Radu Greab
238       <radu@yx.ro>)
239
240    -- fix race+crash in buffered upload writing/purging
241
2421.54: 2007-02-05
243
244    -- supported for "Transfer-Encoding: chunked" requests (HTTP/1.1 feature)
245       as well as the "Expect: 100-continue", which generally accompany
246       chunked requests.  requires "buffered_uploads" be enabled.  see
247       doc/http-versions.txt for details.
248
2491.53: 2006-12-05
250
251    -- fix a crash as reported on mailing lists, with backends not
252       releasing references to clientproxies when coming through
253       service selectors, and backends then timing out, crashing
254       the server.
255
256    -- if backend sends x-reproxy-url and HTTP 204 No Content, upgrade
257       that to a 200 when sending to the client.
258
259    -- let non-Perlbal::Socket Danga::Socket objects exist without
260       crashing in cleanup handler (allows use of Gearman::Client::Async
261       in plugins)
262
2631.52: 2006-11-13
264
265    -- fix crash in buffered uploads when *::AIO doesn't write everything
266       to disk that's requested of it.  we were unshifting back onto the
267       write queue a scalar, not a scalarref.
268
269    -- AIO channels.  from the code:
270
271       "prevents all AIO threads from being consumed by requests for same
272        failing/overloaded disk by isolating them into separate 'channels' in
273        parent process and not dispatching more than the max in-flight count
274        allows.  think of a channel as a named queue.  or in reality, a disk."
275
276    -- allow setting of SO_SNDBUF on a per-service level
277
2781.51: 2006-10-04
279
280    -- set alive_time during slow PUTs.  was causing problems
281       replicating large files in mogile, hitting fake idle timeout.
282
283    -- pipelining HTTP injection fix.
284
285    -- include Host header to reproxy backends
286           patch by Jonty Wareing <jonty.wareing@gmail.com>
287
2881.50: 2006-09-08
289
290    -- add in optional Devel::Gladiator usage for memory tracking
291
292    -- fix memory leaks in concatenanted GETs on error cases
293
294    -- fixes to run / run better on OS X (Artur Bergman)
295
2961.49: 2006-08-30
297
298    -- Very basic help hints command, simply dumps all possible commands.
299
300    -- Add another statistic for reproxy caches, the current size of a particular
301       service's cache, maximum size, and fill percentage.
302
3031.48: 2006-08-18
304
305    -- optionally cache in-process the results of X-Reproxy-URL reponses
306
3071.47: 2006-08-15
308
309    -- concatenanted GETs sent 304 Not Modified w/ content-lengths.  should
310       be without.  fixed.  also including t/17-webserver-concat which forgot
311       to be checked into svn/MANIFEST earlier
312
3131.46: 2006-08-10
314
315    -- fix Mart's broken win32 support that broke Unix, part 2:  syslog when
316       daemonized.  TODO: test case should test daemonization mode.
317
3181.45: 2006-08-10
319
320    -- fix Mart's broken win32 support that broke Unix.  TODO:  test to raise/check
321       fd limit so this doesn't happen again on unix.
322
3231.44: 2006-08-10
324
325    -- allow a no-op ?foo at the end of concatenated-get URLs, so they'd be of
326       the form:  http://host/dir??file1,file2,file3?noopsection.  the no-op
327       section is good for cache-busting, putting in, say, the modtime of the
328       newest file, forcing browsers like safari (who over-cache) to reload.
329
330    -- set a mime-type other than text/plain on concatenated-get requests,
331       only falling back to text/plain if none of files have a known mime type.
332       in practice a request is all css or all js, so match is found by looking
333       at 1st file.  this is required since mozilla won't show CSS if not text/css.
334
335    -- actually be able to start up using 'perlbal' command.  test
336       suite passed before, but moving $VERSION into Perlbal.pm
337       had quitely broke it all.
338
3391.43: 2006-08-09
340
341    -- there's a case where offset gets past end of file in static file
342       code, but very rarely.  sendfile handles this w/ an error that
343       we dealt with, but the new readahead code didn't and crashed.
344       working around for now, until root cause is found for offset
345       going past.
346
347    -- eliminate some warnings in error cases.  only really affects noise
348       in test suite
349
350    -- work better on win32
351
352    -- added the ability for plugins to create custom service roles and
353       add custom configuration options to services, demo is available
354       as conf/echoservice.conf and lib/Perlbal/Plugin/EchoService.pm
355
3561.42: 2006-08-03
357
358    -- debug management command 'varsize' to track size of internal
359       data structures, to make sure none get out of control.
360       there's a report that CPU/mem grow slowly over time, and after
361       a month or so of uptime, a restart is needed.  this might help
362       diagnose that.
363
364    -- allow expansion/interoplation of stuff in config files/commands.
365       for now just mapping network device names to IP addresses:
366          SET listen = ${ip:eth0}:80
367
368    -- more hooks as requested by community
369
370    -- concatenated get feature.  where a client have use a
371       comma-separated list of files to return, always in text/plain.
372       Useful for webapps which have dozens/hundreds of tiny css/js
373       files, and don't trust browsers/etc to do pipelining.
374       Decreases overall roundtrip latency a bunch, but requires app
375       to be modified to support it.  See t/17-concat.t test for
376       details.
377
378    -- do AIO readahead before sendfile to reduce blocking caused
379       by disk reads from sendfile.  increases throughput.  see:
380       http://brad.livejournal.com/2228488.html
381
382    -- add 'latency' configuration on selector roles
383
3841.41: 2006-02-06
385
386    -- IE sends a request header like "If-Modified-Since: <DATE>;
387       length=<length>" so we have to remove the length bit before
388       comparing it with our date then we save the length to compare
389       later.
390
391    -- support for reproxying to a named service.  if backend returns
392       "X-Reproxy-Service: <name>" and no content, the entire original
393       client GET/HEAD request is re-sent to the new named service.
394       the "enable_reproxy" option has to be enabled for the original
395       service.
396
3971.40: 2006-01-17
398
399    -- support for optional retrying of requests after a 500 error,
400       so user won't see the 500 error.  boolean option, as well
401       as configurable schedule of how often to retry backends.
402
403    -- clean up directory indexing HTML: Mark Smith and Fred Moyer
404       (fred@redhotpenguin.com)
405
4061.39: (beta for 1.40) 2005-10-26
407
408    -- new feature for virtual host plugin:  the Host header can be trumped
409       by a magical URL form, if allowed in config.  for instance, you can
410       make an HTTP request to host "foo.com" but actually get "bar.com"
411       if you do this:
412
413          VHOST foo.com;using:bar.com  = bar
414
415       and request /__using/bar.com/IDENT from foo.com, where IDENT is
416       just \w+.  perlbal then updates the Host record to bar.com and
417       sends request URI (unaltered) to the "bar" service.
418
419       this is useful for circumventing browser host restrictions (java,
420       javascript, flash, etc...) when you actually control both
421       domains.
422
4231.38: (beta for 1.40) 2005-10-19
424
425    -- some paranoia evals around some parts of buffered uploads that
426       SAPO reported crashes in occasionally.  added FIXMEs to investigate
427       too.  for now, though, evals around closing files is safer.
428
429    -- new feature: inter-perlbal upload tracking.  for fancy upload
430       bars driven by XmlHttpRequest when clients are upload large files
431
432    -- WARNING: reproxying (files or URLs) is now disabled by default,
433       and must be enabled per-service with "enable_reproxy = true"
434
435    -- do a final little read before closing an HTTP connection
436       to make sure we have no unread data in kernel (notably
437       an extra "\r\n" from an IE post), so when we do close, we
438       don't send a RST packet to the end user.  Thanks to Kevin
439       Lewandowski from discogs.com for the bug report.
440
441    -- use Danga::Socket's AddTimer interface to disconnect
442       stale persistent connections every 5 seconds, driven by
443       a timer, rather than every 15 seconds, driven by
444       socket creation.
445
446    -- there was a bug where 304 Not Modified responses would
447       cause a connection close (and thus RST packets) even
448       though keep-alive was negotiated and would've worked
449
450    -- ignore URL arguments when doing directory indexing
451
452    -- work a little better under "trickle".  (but still not perfect...
453       trickle doesn't quite work on Perlbal, unfortunately. it's useful,
454       or would've been useful, for testing some parts...)
455
456    -- avoid an occasional warning with dirindexing on unreadable directories
457
4581.37 (beta for 1.40) 2005-08-29
459
460    -- "use <name>" command to set the direct object for future commands
461
462    -- AccessControl plugin to allow/deny by default or on IPs or
463       netmasks.
464
465    -- ClientManage could spin in its inherited event_write, causing
466       99.9% cpu usage.  Bug is arguably Danga::Socket's, but also
467       ours because it's documented what we should do and we didn't.
468       The fix is to shut down watching writability when we're done
469       writing.
470
471    -- make accept_client and its callers deal with the possibility
472       that accept_client fails not because the backend is bogus, but
473       because the client is.  so now accept_client can close the
474       client and callers have to be aware of that.
475
476    -- after running this version on production on LiveJournal.com for
477       a bit, we discovered some cases that we'd flag as should never happen,
478       but actually do, so updated the comments and behavior to
479       do the right thing and not just crash with an assertion.
480
481    -- fix misspellings of trusted_upstream_proxies that didn't
482       come along for the renaming ride earlier
483
484    -- webserver mode now ignores URL arguments when looking up
485       filename
486
487    -- remove warnings accessing undefs in ranges and vhosts
488
489    -- new --version and --help flags.  also a usage message on bogus
490       options (or when --help).  props to Jacques Marneweck
491       <jacques@powertrip.co.za> for the help and motivation.
492
4931.36 (beta for 1.40) 2005-08-19
494
495    -- fix bug in ClientProxy when user disconnects after POST/PUTing
496       a content body, but before a response comes back.
497
498    -- now checks correctly for Danga::Socket version 1.44 or above.
499       (required version was in quotes, confusing perl.)
500
501    -- vhost plugin: strip off port specification from the Host header
502       before trying to match with configured patterns.
503
5041.35: (beta of 1.40) 2005-08-16
505
506    -- beta SSL support in a few lines of code.  maybe it's completely
507       done.  maybe it's barely done.  But it seems to work?  I'm no
508       SSL master... IO::Socket::SSL just made it so easy.
509
510    -- lots more tests
511
512    -- lots more cleanup
513
514    -- fix potential crashing bugs in the PUT path.  luckily ones we
515       never hit.
516
517    -- lots and lots of code cleanup
518
519    -- load plugins by either the exact case specified, all lowercase,
520       or all lowercase with first letter uppercase.  then remember
521       the case for unloading (which was never implemented?)
522
523    -- reorganize/cleanup code related to stalling the backend due to
524       client's buffer size exceeding one of the two limits.
525       introduce "backend_stalled"
526
527    -- buffer uploads to disk
528
5291.3: (2005-06-26)
530
531    -- introduce CommandContext, so management commands can be less
532       verbose when in config files (service/pool names can be left off
533       when you just created them a couple lines before)
534
535    -- remove sendstats support
536
537    -- exit with 0 vs non-zero when/if Perlbal crashes.  new command
538       "crash" to fake a crash, for testing.
539
540    -- entirely redone management command parsing/dispatching (major
541       code cleanup)
542
543    -- virtual host plugin on service selector framework
544
545    -- service selector framework
546
547    -- make Net::Netmask optional
548
549    -- byte range support for both webserver mode and reproxy-file mode
550       Giao Phan <giao@guba.com>.  so clients can resume large transfers.
551
552    -- test suite
553
554    -- IO::AIO support (brad)
555
556    -- change response code to client to 200 on reproxy-file from backend
557
558    -- 'nodes' command now takes as an optional argument a specific ip:port to
559       dump the node stats for
560
561    -- AIO abstraction layer (Perlbal::AIO) which can currently do either
562       Linux::AIO or "none" (doing everything sync).  also in future File::FDpasser
563       and other OS-specific modes [brad]
564
565    -- add buffer_backend_connect to do in memory buffering of data before we
566       request a backend; assists slow clients without tying up a mod_perl
567
568    -- fix spinning issue when webnodes unavailable; should now not consume 100%
569       CPU in those cases
570
571    -- revamp verbose functionality; by default it's still of, but if you specify
572       VERBOSE ON in the config file, it turns it on for management connections
573       by default.  management connections, when specifying VERBOSE ON/OFF, will
574       now set the flag only for that connection.
575
576    -- new command for config file; VERBOSE ON/OFF; can be used to enable or
577       disable confirmation of all commands such as SET, SERVER, CREATE, etc.
578       by default, it's off for config files, but on for management connections.
579
580    -- add generation count to services that increments every time a pool is
581       switched.  this data is now stored on backends when they're spawned as
582       well, and when we allocate a backend we verify the generation so old ones
583       are thrown away.
584
585    -- allow setting of nodefile on pools to 'none' or 'null' or 'undef' or just
586       an empty set of quotes ("", '') in order to stop using node files
587
588    -- automatically set use count to 0 on new nodes coming in from nodefile
589
590    -- made auto-vivification of pulls throw warnings, and made Perlbal die if it
591       tries to vivify a pool and the user has previously manually declared a pool
592
593    -- updated pool commands to be more flexible (POOL pool ADD node, etc)
594
595    -- add pools; a way of having different sets of nodes and instantly switching
596       between them, so traffic stops going to old nodes; see the example config
597       file for usage
598
599    -- work partially without Linux::AIO (does sync stat of node file in reverse
600       proxy mode, and webserver mode doesn't work) --brad
601
6021.2 (2005-03-07)
603    -- add new stats command 'nodes' that shows information on each node that we've
604       been connecting to -- last connect time, last attempt time, a breakdown of
605       the last 500 status codes returned, etc
606
607    -- add ability to use new Danga::Socket profiling; 'profile on', 'profile data'
608       to see the info so far, and 'profile off' to disable it
609
610    -- graceful shutdown now flags sockets that are busy to die so they die when
611       they're done with their current connection
612
613    -- sockets in persist_wait now get closed immediately during a graceful shutdown
614
615    -- fix handling of OPTIONS responses; used to do its own state clearing but
616       it now uses the next_request method as it should
617
618    -- fix bug with determination of keep-alive in http 1.1 case specifying
619       a connection: close header
620
621    -- added 'uptime' management command to track how long Perlbal has been up
622
623    -- new config commands: HEADER INSERT <svc> <header>: <value> and HEADER
624       REMOVE <svc> <header> which will insert and remove headers from user
625       requests before they're sent to backend proxy nodes.
626
627    -- add dependency to Net::Netmask; now you can specify trusted_upstream_proxies
628       on a service (SET service.trusted_upstream_proxies = 10.0.0.0/8, etc)
629       which will allow requests from that range to set X-Forwarded-For, X-Host,
630       and X-Forwarded-Host headers.
631
632    -- fixed a bug that caused connections to hang when the backend responded
633       before the user was done sending data
634
635    -- reset some variables that weren't being reset: read_buf, read_ahead, read_size
636
637    -- "proc" management command shows user and system CPU usage for Perlbal
638       this run, as well as a delta since the last time you ran "proc"
639
640    -- added Perlbal::XS interface for modules to use; also 'xs' management
641       command to see the status of XS modules
642
643    -- bug in PalImg caused crash on files with no length (or when another
644       error occurs that causes no data to be sent to new_gif_palette function)
645
646    -- ReproxyManager would sometimes let closed backends back into the pool
647       and hand them off to clients, fixed to check for that
648
649    -- new policy: you don't muck around with the internals of other classes.
650       notably, clients don't change the internals of a backend and backends
651       don't change the internals of a client.  this was causing all sorts of
652       problems because nobody was cleaning up properly.  (especially with regard
653       to "who is my backend's client" type questions.)
654
655    -- fixed up code that did its own keep-alive checks to use the HTTPHeaders
656       functions so that in the future every part of the code stays up to date
657
658    -- Perlbal::Socket now has the option to keep track of all objects that
659       are created.  new command to management interface 'leaks' will show
660       all objects currently in memory.  turn this functionality on by enabling
661       the TRACK_OBJECTS constant in Perlbal::Socket.
662
663    -- split keep-alive logic into request and response methods and cleared
664       up how that works
665
666    -- rewrote reproxy URI support.  new class Perlbal::ReproxyManager does all
667       of the work relating to reproxies.  it's basically a service class but
668       stripped down and dealing with single endpoints instead of pools.  much
669       much much more robust under heavy load.  (Junior, Brad)
670
671    -- now that we support persistent connections, the 'queues' command didn't
672       have an accurate time; added ClientProxy member last_request_time so
673       we can accurately tell how long requests have been waiting for
674
675    -- Danga::Socket got an overhaul; close and steal_socket now share a lot
676       of code by calling _cleanup.  some more paranoia on making sure the
677       object isn't already closed when we try to do things.
678
679    -- lots more paranoia in close events and event_err handling for backends
680
681    -- added tracking mode for helping look for leaked objects; records a
682       backtrace of every object created.  "server track_obj = 0/1" to enable
683       or disable it, and then "tracking" in a management interface to see.
684
685    -- made Perlbal::objctor/objdtor take an object as their first parameter.
686       much faster than using caller().
687
688    -- fix Highpri plugin to not check hosts for high priority values when
689       the host isn't defined
690
691    -- made Palimg plugin far more paranoid about errors, and also uses new
692       ClientHTTPBase scratch area for keeping track of data instead of using
693       headers (which are generally slower)
694
695    -- fixed bug in HTTPHeaders that set_version would inadvertently
696       run into when used on a header created through new_response
697
698    -- ClientProxy class now supports persistence; set persist_client on
699       the proxy service in order to enable it.
700
701    -- Palimg plugin now supports fallback to web server mode if the
702       requested URI doesn't fit our desired pattern
703
704    -- did some cleanup; made a bunch of HTTPHeaders accesses use the
705       accessor methods instead of referencing into the object's private
706       store of data
707
708    -- fixed a crash caused by calling getsockname/getpeername on sockets
709       that have been undefined after having been stolen during an internal
710       redirect to another webserver
711
712    -- fixed _simple_response to not return a body if we're serving
713       to a HEAD request
714
715    -- bug fix: don't send Not-Modified responses to requests for dynamic
716       directory listings.  it was messing up persistent connections
717       since the directory serving code didn't get passed down whether we
718       were sending a body or not.  and not modifies on directories are hard:
719       modify time isn't altogether useful.  (file sizes could change)
720
721       this still does not-modifieds on indirect index.html directory
722       requests, because _serve_request ends up eventually calling
723       _serve_request on a different URI.  (brad)
724
725    -- added BSD::Resource as dependency to Makefile.PL (brad)
726
727    -- fixed 304 Not Modified responses to not send Content-Length
728       and Content-Type headers.  (jr)
729
7301.01 (2004-10-22)
731    -- when internally redirecting a URL, perlbal advertises
732       that it supports persisent HTTP connections now,
733       and caches those sockets for 5 seconds.  (not configurable)
734       useful under load, otherwise you waste all local ports
735       on a machine
736
737    -- ditch dependence on IO::SendFile.  do it ourselves (1 line)
738       with perl's syscall function
739
740    -- add doc/* and conf/* to MANIFEST file
741
7421.00
743    -- initial packaged release
Note: See TracBrowser for help on using the browser.