root/trunk/CHANGES

Revision 827, 29.8 kB (checked in by dormando, 8 weeks ago)

Checking in changes prior to tagging of version 1.73. Changelog diff is:

Index: CHANGES
===================================================================
--- CHANGES (revision 826)
+++ CHANGES (working copy)
@@ -1,3 +1,5 @@
+1.73: 2009-10-05
+

-- Add 'dumpconfig' command and related framework.

*** BETA FEATURE STATUS ***


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