root/trunk/CHANGES @ 821

Revision 821, 29.4 kB (checked in by ask, 6 months ago)

Make Content-Range replies work

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