View source
cherrypy
  • Contributors
    1. Loading...
Author Commit Message Date Builds
250+ commits behind default.
Robert Brewer
Lots of mixedCase to lower_with_underscores.
Robert Brewer
Fix for #547 (serve_file still uses contentType instead of content_type). Thanks, michele!
Robert Brewer
Fix for #408 (SessionFilter doesn't check result of generateSessionID() against sessionStorage).
Robert Brewer
Fix for #489 (secure session key). os.urandom is used when available.
Robert Brewer
Further CP3 fix for #541; urlparse now sets wsgi.url_scheme if available.
Sylvain Hellegouarch
Fixed missing access log for global configuration
Robert Brewer
More-explicit error when illegally passing positional arguments to tool decorators. Also, a new tool test for multiple decorators with kwargs.
Robert Brewer
Changed LateParamPageHandler to use a property instead of __getattribute__ (thanks, michele!) and added a docstring.
Robert Brewer
X-Forwarded-For should overwrite remote.ip, not remote.name.
Robert Brewer
Revamped session module. Much better tests. Cleanup is now in a separate, cycling Timer thread (with an entry in on_stop_engine_list). Moved cherrypy.request._session to cherrypy.serving.session.
Robert Brewer
New deadlock monitor which sets Response.timed_out to True if Response.time < now - config.get("deadlock_timeout"). The request thread periodically checkes Response.timed_out and raises TimeoutError if it is True. Current checks are in HookMap.run, Request.respond, Body.__set__, and Response.finalize, more can be added later if needed.
Robert Brewer
Missing call to request.close() on KeyboardInterrupt, SystemExit within buffered page handler.
Robert Brewer
Moved request.handler from a function (with vpath, and request.params included in cell refs) to an instance of a callable PageHandler class (with vpath, params included as .args, .kwargs attributes). Instances of HTTPRedirect and HTTPError (including NotFound) can now also be set directly as request.handler (they raise self when called).
Robert Brewer
Removed dependency on pyconquer inside test_states.
Christian Wyglendowski
Giving NotReadyRequest a protocol attribute.
Robert Brewer
New server.socket_timeout config entry, thanks to Albert Visagie. See http://groups.google.com/group/cherrypy-devel/browse_frm/thread/ef761a8063cdc72b
Robert Brewer
Replaced request.remote_addr, remote_port, and remote_host with a single "remote" attribute, an instance of lib.http.Host, which has "ip", "port" and "name" attributes. Added a similar request.local attribute. Changed request() signature to (local, remote, scheme). This allows requests run behind multiple HTTP servers to know the address info for their particular connection.
Robert Brewer
WSGI-related changes: 1. Changed Request.run from request_line arg to deconstructed args: method, path, query_string, and protocol. 2. Moved HTTP protocol checking from _cprequest to _cpwsgiserver. What was cherrypy.response.version is now cherrypy.request.protocol (tuple form of SERVER_PROTOCOL). request.version and response.version attributes removed. _cpwsgiserver now writes out server.protocol, not SERVER_PROTOCO…
Robert Brewer
Split process_request_body into two flags instead (new request.body_read flag to signal that the request body has already been read).
Robert Brewer
Eliminated 'default_content_type' config entry by moving tools.response_headers to on_start_resource. If anyone still needs response headers to be set late, they can call tools.response_headers later, either in code or via a hook declared in config.
Robert Brewer
Removed last useless cherrypy.debug test.
Robert Brewer
Fix for #438 (autoreload.py: Server fails to start if a .pyc is imported with no corresponding .py).
Robert Brewer
Changed server.start to server.quickstart, and server.start_all to server.start.
Robert Brewer
CherryPyWSGIServer now clears its interrupt on start().
Robert Brewer
Fix for #537 (Support for listening on multiple ports). cherrypy.server now has no "httpserver" attribute; instead, it has an "httpservers" attribute, a dict of the form {server object: bind_addr} where bind_addr is usually (host, port). New start_all method. Calling stop stops all httpservers, and restart stops all then restarts all.
Robert Brewer
Better docstring for CherryPyWSGIServer.
Robert Brewer
Fix for testExpiresTool when behind Apache.
Robert Brewer
silently disable signal handlers when running behind Apache (i.e. when "import _cprequest" is not done in the main thread).
Robert Brewer
Fix for #542 (_cpwsgiserver should concatenate multiple incoming headers).
Robert Brewer
Oops. Windows doesn't have SIGHUP.
Robert Brewer
Fix for #540.
Robert Brewer
Fixes for #544 and #545 (serveFile issues) in CP 3. Fixes in CP 2 branch coming in a separate changeset.
Robert Brewer
If not cacheable, we shouldn't even set Expires.
Robert Brewer
Test and fix for bug in expires tool.
Robert Brewer
Oops. Forgot a file.
Robert Brewer
Py 2.3 doesn't do multiline imports.
Robert Brewer
Merged the reexec branch. Autoreload now uses exec instead of spawn, and therefore never runs more than one process at a time. There's a new test for autoreload in test_states.py. The state-management for the HTTP server is a mess, by the way. I only got test_states' KeyboardInterrupt test working by inlining the client threads. So wait() and interrupts, etc. only really work when there's a single master thread. This needs fixed.
Robert Brewer
More work on tools.expires: 1. Now takes 'secs' arg instead of 'e_time'. 2. The 'force' arg defaults to False now. 3. Set 'force' to True to imply ignore_indicators. 4. New cherrypy.reponse.time attribute: the time.time() which is used for the 'Date' response header.
Christian Wyglendowski
1. New "expires" tool for setting the "Expires" header. 2. Tests for the expires tool.
Robert Brewer
Various speedups, the only notable one being that environments are now always flattened as soon as possible.
Robert Brewer
Moved RFC 2047 encoding into http.HeaderMap. Changed HeaderMap.sorted_list to HeaderMap.output (which does not sort).
Robert Brewer
Precompile some regexes for a speed boost.
Robert Brewer
Caching tool invocation optimization.
Robert Brewer
If we assume all incoming request header names are uppercase, we get a big speedup. If anyone ever complains about this, it's easy enough to revert.
Robert Brewer
Some tool optimizations.
Robert Brewer
Optimized {{{_cpwsgi.translate_headers}}}.
Robert Brewer
New ProfileAggregator class.
Robert Brewer
Moved profiling into WSGI middleware.
Robert Brewer
Reverting [1165], [1182]. Turns out it wasn't necessary for encoded request headers, and only served to slow CP by about 5%.
Robert Brewer
benchmark still needed socket-error suppression.
Robert Brewer
Oops. Forgot to make default Tidy tools.
Robert Brewer
Fixed memory-leak bug when expiring cache objects.
Robert Brewer
New _cpwsgi.make_app function for creating isolated WSGI application callables. You should only need to use it if two WSGI apps share the same script_name, or if you use a WSGI tool which expects a separate callable for each app.
Robert Brewer
Fix for #538 (Caching must set Age response header). Also fixed a bad bug from using header_list instead of headers.
Robert Brewer
webtest.WebCase.assetHeader now returns the header value if found.
Robert Brewer
caching: Turned MemoryCache.expirationQueue into "expirations", a dict. This solves some corner cases where a queued object with a long delay would prevent queued objects of shorter delays from expiring on time. It also removes the (variable-period) sleep call buried in Queue, and now uses a single 0.1 sec poll rate.
Robert Brewer
Speedup of cache tool by caching the object only, not expirationTime or lastModified.
Robert Brewer
Cleanup of cherrypy and cherrypy.config namespaces. Changed 'log_config_options' to 'log_config'. Moved cherrypy.set_config to cherrypy.config.wrap.
Robert Brewer
Fix for missing FeedParser in Python 2.3.
Robert Brewer
Oops. Fix for the session time fix.
Robert Brewer
Fix for #512 (Cookie.expires should be optional).
Robert Brewer
Since request.headers converts case automatically, there's no need to transform it to lowercase to pass to FieldStorage.
Robert Brewer
Fix for #528 (Allow request body parsing for methods other than "POST" and "PUT").
Robert Brewer
CP 2.2 and 3.0 fix for #516 (Sessionfilter doesn't format properly the cookie date field "Expires" if the locale is not 'C').
Christian Wyglendowski
Fix for #533. CP3 will behave correctly and return a Fault when an XML-RPC method is not found.
Robert Brewer
Expanded baseurl tool into a new proxy tool.
Robert Brewer
Buglets.
Christian Wyglendowski
Fix for sneaky bug introduced in [1164].
Robert Brewer
encode_TEXT only for HTTP/1.1 response headers, and verify folded response headers start with linear whitespace.
Robert Brewer
Support for folded response headers in webtest.
Robert Brewer
Added support for RFC 2047 encoding and decoding of header values.
Robert Brewer
Updated WSGI server to use email package instead of mimetools. This will allow encoded header values, for example.
Robert Brewer
Replaced http.HTTPDate with its clone rfc822.formatdate.
Robert Brewer
Renamed lib.encodings to lib.encoding to avoid shadowing the builtin.
Robert Brewer
Fix for #475 (double calling acquire_lock() freezes the request).
Robert Brewer
Fake SessionTool attributes.
Christian Wyglendowski
Removing test for defunct feature.
Robert Brewer
Removed redundant test_noserver.py.
Robert Brewer
Added bare_error trap in _cpmodpy (which fixes some failing tests). Also dropped redundant cookie logic in _cpmodpy.
Robert Brewer
Finally a clean fix for #102 (Dispatch to different page handlers based on HTTP method).
Robert Brewer
Much Better Logging (see #256). Apps now have their own access and error loggers (whose config entries must be at "/"), and the global access logger has been removed (although you can make one manually if you like).
Robert Brewer
Fix for #256 (log file needs a lock). CherryPy now uses the stdlib's logging module. See the ticket for more details.
Robert Brewer
Quick and dirty trap of log file errors.
Robert Brewer
New "teardown_server" magic method support for test modules.
Robert Brewer
Updated benchmark to work with new _cpmodpy module.
Robert Brewer
Fix for mp < 3.1 which didn't have apache.mpm_query.
Robert Brewer
First inclusion of jamwt's mpcp into CP distro as _cpmodpy.py. Some tests fail, especially tutorials.
Robert Brewer
Niggly bits.
Robert Brewer
test/modpy fixes and docs.
Robert Brewer
New hooks namespace in config, for attaching arbitrary hooks to requests. See test_tools for an example.
Robert Brewer
Made cherrypy.request and .response more sef-documenting by populating their attribute dicts outside a request.
Robert Brewer
Heavily cleaned the namespace for Tool objects: 1. Privatized "name", "point", "merged_args" and "setup". 2. Renamed Tool.enable to Tool.__call__. 3. Set the docstring of each Tool instance to the docstring of the tool's callable. Combined with the above, this means calltips should pick up the calltip of the callable. 4. Tools now copy the param names of self.callable to self.attributes. This allows users to "import tools" and then get conf…
Robert Brewer
Bah. Silly iteritems.
Robert Brewer
Removed the wrap method from Tool, since the enable method should meet all cases better. Also fixed a bug where request.hooks was not being reinitialized on internalredirect. Also added code to guard against recursive internalredirects. Finally, fixed a couple of dict iterations that were missing iteritems.
Robert Brewer
Removed inspect import in cherrypy.decorate, decorateAll.
Robert Brewer
Renamed httptools to "http" to reduce confusion with new cherrypy.tools. Moved non-Tool-related code from cptools to {{{lib/__init__}}}. Added docstrings.
Robert Brewer
Fixed bad import in test_http.py
Robert Brewer
Got rid of _cperror.Error base class, and "from _cperror import *" in top level.
Robert Brewer
More Python 2.3 safety and coments.
Robert Brewer
httptools.Version was overengineered. Shame on me. Using tuples gives a 2-3% speed boost.
Robert Brewer
Sometimes I really hate .pyc's
Robert Brewer
Moved coverage out of the core.
Robert Brewer
Separated tool construction from default toolbox by renaming cherrypy.tools module to _cptools, and binding cherrypy tools to a new _cptools.default_toolbox object. Also cleaned up the top-level cherrypy namespace quite a bit, and moved some user code out of lib.cptools.
Robert Brewer
More unnecessary imports removed.
Robert Brewer
Merged _cputil into _cprequest.
Robert Brewer
Fixed (Python 2.4-style) decorator.
Robert Brewer
Fix for #490 (InternalRedirect should auto-detect params). Removed the "params" arg from InternalRedirect; set cherrypy.request.params directly (before raising InternalRedirect) instead.
Robert Brewer
Removed unused import.
Robert Brewer
Fix for #507 (InternalRedirect supports only absolute paths). Paths relative to script_name are now possible by omitting the leading slash from the path.
Robert Brewer
Fix for #509 (don't cache for POST, PUT, DELETE).
Robert Brewer
Made Engine.stop check Engine.state. This allows e.g. mod_python to call stop() once per thread on shutdown.
Robert Brewer
Removed cherrypy.NotReady. Instead, cherrypy.engine will return HTTP 503 Service Unavailable, and cherrypy.server will raise IOError.
Robert Brewer
Removed duplicate wait_for_occupied_port logic.
Robert Brewer
Fix for #524 (tests fail on python < 2.4).
Robert Brewer
Fix for #502 (log errors by default).
Robert Brewer
Reinstated default favicon (when an app is mounted at webserver root).
Robert Brewer
New cherrypy.quickstart function.
Robert Brewer
Reverting [1116] for now until tests can be made.
Robert Brewer
A little hook/tool refactoring. Moved HookMap from tools module to _cprequest, and consolidated toolmap and tool setup into a new Request.tool_up method.
Robert Brewer
Fix for #531 (Make an ETag tool). Also refactored If-Modified-Since validation.
Robert Brewer
Attempt to re-use the _cpwsgiserver listener socket on UNIX platforms. Not tested.
Robert Brewer
New Tool.enable method (compile-time decorator to set the wrapped function's _cp_config).
Robert Brewer
Removed "filter" from lots of places, including renaming of tests.
Robert Brewer
Fix for #530 (CherryPyWSGIServer does not always initalize self.socket) in 2.x and trunk.
Robert Brewer
Added the required WSGI request.close() call (thanks amix!).
Robert Brewer
tree.mount now strips trailing slash on script_name.
Sylvain Hellegouarch
All tutotials were missing an import os.path and could not run
Robert Brewer
Comment improvements.
Robert Brewer
New tree.app.guess_abs_path method.
Robert Brewer
Might as well keep track of InternalRedirects.
Robert Brewer
Made tree.Application.script_name, and it now defaults to "", not "/".
Robert Brewer
Bah. I knew I had config.merge in there for a reason.
Robert Brewer
Fixed xmlrpc tool to use InternalRedirect (only when needed!).
Robert Brewer
New tests for params with virtual_host.
Robert Brewer
Dispatch and config lookup now happens as early as possible, once per request (unless InternalRedirect is raised). Also moved the logging code out of {{{_cputil}}} and into {{{__init__}}}. xmlrpc still needs fixed so it doesn't re-write path_info.
Robert Brewer
Fix to benchmark.py for globalconf.
Robert Brewer
Moved log_access to a config entry.
Robert Brewer
Fixed a bug in TestHarness (no base conf when using --profile).
Robert Brewer
Moved the profiler setup into _cprequest (so it's all in one place now).
Robert Brewer
Renamed _cp_log_message to "_cputil.log", and moved its customization from a special attribute to a config entry ('log_function'). Since that was the last special attribute, removed _cputil.get_special_attribute entirely.
Robert Brewer
Root and config are now isolated per app: 1. object_path is now called path_info, and there's a new request.script_name attribute. This should equal the mount point of the current application. 2. cherrypy.root is gone, use cherrypy.request.app.root for now instead. Perhaps cherrypy.root will reappear and point to that. 3. cherrypy.tree.mount_points has been replaced with cherrypy.tree.apps, a dict of the form {script_name: Application(…
Robert Brewer
Moved covercp, profiler to tree.mount syntax.
Robert Brewer
Moved the following config keys out of the "server." namespace (so that "server." may mean "httpserver"): * default_content_type * log_access_file * log_config_options * log_file * log_file_not_found * log_request_headers * log_to_screen * show_tracebacks * throw_errors
Robert Brewer
New cherrypy.set_config(**kwargs) decorator for setting _cp_config on a method. Also better errors on lookup of request attrs when not in a request.
Robert Brewer
Separated cherrypy.server (HTTP) from cherrypy.engine (app): 1. Most CP apps must now make both a call to cherrypy.server.start(server=None) and a call to cherrypy.engine.start(blocking=True). 2. The on_start_server_list and on_stop_server_list are now on_start_engine_list and on_stop_engine_list. 3. "start_with_callback" is now an attribute of Engine. So is "request". 4. Server.start now takes a single "server" arg, which can be a server instance, a st…
Robert Brewer
Fix for #426 (cherrypy.expose alias problems with dots).
Robert Brewer
Partial fix for #511 (wsgi default encoding).
Robert Brewer
Fix for #508 (Content-Type for 304s).
Robert Brewer
Fixed bug in staticdir test.
Robert Brewer
Fix for #328 (encoding 'errors' argument).
Robert Brewer
Fixed bug in request_config_section.
Robert Brewer
New static.serve_download function (sugar for serve_file with application/x-download attachment).
Robert Brewer
Objects on the CP tree may now possess a _cp_config attribute, which replaces _cp_tools, _cp_on_error, and _cp_filters. The Request object now keeps its own 'config' attribute (recalculated whenever object_path changes) which mixes _cp_config settings with settings in cherrypy.config. Every tool now has a merged_args method, which is used to pass arguments to the wrapped callable.
Robert Brewer
Lots of changes to error and log handling: 1. Removed RequestHandled and InternalError. 2. Error response is now overridable by replacing request.error_response. Tools should do this in setup(). 3. New request.log_access attribute. 4. Moved response.handleError to request.handle_error. 5. Logging of tracebacks and request headers are now tools. 6. New ErrorRedirect tool class. 7. Tools may now be anonymous (not necessary to be place…
Robert Brewer
Mixins would be hard to, uh, mix. So we'll use _cp_tools for class-level tool declaration instead. My hope is that the two remaining special attributes (logging and on_error) can become tools, as well, and we can have a nice uniform API.
Robert Brewer
Moved dispatch, find_handler into _cputil.
Robert Brewer
All tests now pass with the new tool API (but xmlrpc hangs?).
Robert Brewer
Only one failing test now (sessions)!
Robert Brewer
Fixed test_custom_filters.py for the Tool API.
Robert Brewer
Tools: new Mixin attribute, and hooks.run now takes *args, **kwargs.
Robert Brewer
More tool improvements: 1. Replaced request.execute_main with request.dispatch. Setting request.dispatch to None means no dispatch call. 2. Better xmlrpc tool as a result. 3. Tools now know their own names. 4. Tools now mix config into args given to wrap() and handler().
Robert Brewer
Moved the responsibility for setting response.body into the dispatch callable.
Robert Brewer
Renamed session.load to session.init, and fixed a bug in wrap.
Robert Brewer
Removed old_name option from get_special_attribute.
Robert Brewer
New 'root' arg to get_object_trail to allow dispatch from arbitrary points in the tree.
Robert Brewer
Removed a bunch of instances of the word "filter".
Robert Brewer
test_core works again. 1. I'll look at replacing _cp_on_error with Tools some other day. 2. Moved the HookMap into tools.py. 3. New config.current_config function. 4. static.serve_file now sets body even if not modified_since.
Robert Brewer
Fixed session auth for new tool API.
Robert Brewer
Fixed session module for the new tool API.
Robert Brewer
Fixed response_headers test again.
Robert Brewer
Meh. No need to make a new Dispatcher every time. Functions are probably better.
Robert Brewer
Dispatchers shouldn't change request.object_path before calling the page handler. Moved that info into a new request.found_object_path variable.
Robert Brewer
More tool improvements: 1. New MainTool.handler method. 2. Removed superfluous "exposed" logic on decorators. 3. Tool.__call__ now returns the results of callable() 4. MainTool.wrap wasn't returning response.body.
Robert Brewer
Oops. _cphooks was transitory.
Robert Brewer
Fixed Tool.wrap methods (decorator-creators).
Robert Brewer
Fluff.
Robert Brewer
Fixed static tool and test.
Robert Brewer
Fixed xmlrpc tool and test. Plus: 1. 'path' arg is now required when calling dispatchers. 2. fixed default favicon declaration of staticfile. 3. missing import in lib/static. 4. fixed test_combinedfilters.py
Robert Brewer
Fixed the caching tool and test.
Robert Brewer
Fixed decode, encode, gzip tools and tests.
Robert Brewer
Reorganized static tools again. staticdir still needs a way to get the config section as an arg.
Robert Brewer
Added a 'force' flag to response_headers tool.
Robert Brewer
Fixed a traversal bug in HookMap.populate_from_config.
Robert Brewer
Corrected several old headerMap references. Updated test_response_headers_filter.py
Robert Brewer
Updated test_virtualhost_filter.py to "tools" namespace.
Robert Brewer
CP 3 initial checkin. Global filters have been replaced by request.hooks. Lots of renaming and reorg of modules.
Robert Brewer
Removed deprecated form modules.
Robert Brewer
Added CallFunc and NoneType to unrepr. This allows object instantiation in config files.
Robert Brewer
Removing old filter folder.
Robert Brewer
Removing old filter folder.
Robert Brewer
Fix for #505 (cherrypy.thread_data cleared on Request.close).
Remi Delon
Preparing for 2.2.0-final release
Robert Brewer
modpy test helper updated to use "wsgi.application" option (to match latest modpython_gateway).
Christian Wyglendowski
When individual tests were run with --help or -h as command line arguments a KeyboardInterrupt exception was raised and the test would hang until another KeyboardInterrupt was raised (i.e., by hitting Ctrl-C).
Robert Brewer
Fix for #501 (staticfilter test fails).
Robert Brewer
test_core updated to new log file format
Sylvain Hellegouarch
Fixed ticket #450 M _cputil.py
Remi Delon
Fixed small bug in session_filter
Remi Delon
Implemented #478
Remi Delon
Fixed #499
Remi Delon
Moving visuals up one level
Robert Brewer
Final fix for #498.
Robert Brewer
Further fixes for #498 (separation of test processes), plus fix for #495 (tutorial test failure).
Robert Brewer
Fix for the fix for #486 (hey, that rhymes!).
Robert Brewer
Fix for #486 (Error when raise an error other than cherrypy.NotFound).
Robert Brewer
Re-org of test_http to fit new separate-client-and-server design of test suite.
Robert Brewer
Bugfix in Tree if cherrypy.root is None.
Robert Brewer
Initial fix for #498 (Test suite assumes same process for client and server). All test modules now wrap the server-side code in a "setup_server" function. New test\modpy module (with several tests failing).
Robert Brewer
gzipfilter: removed unnecessary import.
Robert Brewer
Extracted CaseInsensitiveDct base class out of HeaderMap.
Robert Brewer
Minimize problems from overlapping threads in tests.
Robert Brewer
Fix for #496 (memory leak in threadlocal objects).
Robert Brewer
Test for #496 (memory leak in thread locals).
Robert Brewer
Fix for #493 (connection not being closed properly).
Christian Wyglendowski
Fix for #491. Added underscore_names for a few Request object attributes.
Christian Wyglendowski
As per [http://tinyurl.com/l7axz the discussion] on cherrypy-devel, the WSGIAppFilter is no longer configurable through the CP config system. You should either add an instance of cherrypy.filters.wsgiappfilter.WSGIAppFilter to your _cp_filters list or use the cherrypy.lib.cptools.WSGIApp convenience class. Also tweaked the test for wsgiappfilter to make sure that static content higher than a WSGI application on the tree gets served correctly.
Christian Wyglendowski
Fix for #484.
Christian Wyglendowski
Addresses #483. The wsgi_filter that I made is now incorporated into CP as cherrypy.filters.wsgiappfilter. It can be instantiated through the config file, _cp_filters, or through the included WSGIApp class and mounted to the tree. Added a test for the filter to the test suite.
Christian Wyglendowski
Addresses #480. init_only can now be set in the config (server.init_only). server.class already existed. server.instance can also be set in the config. It corresponds to the "server" parameter in the cherrypy.server.start() method. Also added "embedded" server environment to simplify running CP embedded in mod_python, FastCGI, another WSGI server, etc.
Remi Delon
PEP8ifying static filter
Remi Delon
Preparing for 2.2.0rc1 release
Robert Brewer
Fix for #427 (Use RawConfigParser instead of ConfigParser).
Robert Brewer
Fix for #476 (BaseURLFilter doesn't use socket_port).
Robert Brewer
Even more improvements to benchmark.py. New getopt options --ab=path and --apache=path. The modpython conf is now generated automatically.
Robert Brewer
server.thread_pool now defaults to 10.
Remi Delon
Fix for #477
Robert Brewer
Benchmark: changed 'chart' to 'report' throughout.
Robert Brewer
Benchmark: simpler, more inclusive detection of ab/apache not on system path.
Robert Brewer
Benchmark: fix for no ab in bash.
Robert Brewer
Fix for broken test in [990].
Robert Brewer
Speed tweak: you can now set max_header_size and max_request_size to 0 to explicitly skip using SizeWrappers.
Robert Brewer
New Engine.response_class attribute (which allows a new -null switch for benchmark.py, to show how much of the request is spent in the HTTP server as opposed to the Request object).
Robert Brewer
Improvements to benchmark.py. New "-modpython" switch which popens apache, runs the tests, then stops apache.
Robert Brewer
Set cherrypy.lowercase_api = True for benchmarks.
Robert Brewer
New test/benchmark module. Ugly, but gets the job done. Requires ab on your system path. Set log_to_screen to True if you encounter problems.
Christian Wyglendowski
Fix for #457. Custom filters placed in {{{server.input_filters}}} and {{{server.ouput_filters}}} now get checked for the presence of the old camelCase filter hooks at initialization for backward compatibility with 2.1.
Remi Delon
Added "on_renew_session" callback to sessionfilter
Remi Delon
Fix for #293: better error message if sessionfilter.storage_path is not set (and "file" backend is set)
Remi Delon
Fixed #499 (bug in gzipfilter)
Remi Delon
Improvement in nsgmlsfilter
Robert Brewer
server.stop() works now even if init_only is False.
Remi Delon
Clean-up sessions in different thread (to avoid blocking the request)
Remi Delon
Fix "last_clean_up_time" in session filter
Robert Brewer
Added meaningful prefixes to names of threads started by CP.
Robert Brewer
Another re-raise of SystemExit.
Remi Delon
Allow programs to quit and return an error code; Small fix in sessionauthenticatefilter
Robert Brewer
Fix for #458 (auto-init mimetypes module). Knownfiles only works on Unix.
Robert Brewer
Removed deprecated _cphttpserver.py.
Remi Delon
Renamed queryString into query_string
Remi Delon
Added "on_login" and "on_logout" callbacks to sessionauthenticatefilter
669 commits not shown.