~helmut/wsgitools.git
7 months agoscgi.forkpool: fix SIGTERM handler in the presence of PEP475 master
Helmut Grohne [Sun, 10 Mar 2019 16:49:00 +0000 (17:49 +0100)]
scgi.forkpool: fix SIGTERM handler in the presence of PEP475

Since PEP475 or Python 3.5, select retries an interrupted system call.
However, we were relying on the previous behaviour. Thus we must
interrupt select using some other measure. Another socketpair is created
and the signal handler transfers a byte on shutdown.

7 months agowsgitools.scgi.forkpool: improve debugging broken wsgi apps
Helmut Grohne [Sun, 10 Mar 2019 15:52:46 +0000 (16:52 +0100)]
wsgitools.scgi.forkpool: improve debugging broken wsgi apps

8 months agoContentLengthMiddleware: don't duplicate the header
Helmut Grohne [Thu, 17 Jan 2019 19:57:53 +0000 (20:57 +0100)]
ContentLengthMiddleware: don't duplicate the header

When an iterable is returned and a Content-Length header is already
present, don't add a second one.

9 months agofix ContentLengthMiddleware(..., maxstore=()) on Py3k
Helmut Grohne [Thu, 27 Dec 2018 16:58:29 +0000 (17:58 +0100)]
fix ContentLengthMiddleware(..., maxstore=()) on Py3k

On Python 2.x, any integer sorts below the empty tuple. That was
exploited in the maxstore parameter, but fails on Python 3 with a
TypeError.

Also add a regression test.

Reported-by: Dominik Brodowski <mail@dominikbrodowski.net>
19 months agoupdate WSGI 2.0 reference
Helmut Grohne [Sun, 25 Feb 2018 20:55:14 +0000 (21:55 +0100)]
update WSGI 2.0 reference

2 years agoscgi.asynchronous: fix wrong assertion on py3k
Helmut Grohne [Sun, 26 Mar 2017 12:44:30 +0000 (14:44 +0200)]
scgi.asynchronous: fix wrong assertion on py3k

2 years agouse secrets.compare_digest when available
Helmut Grohne [Sun, 26 Mar 2017 12:43:38 +0000 (14:43 +0200)]
use secrets.compare_digest when available

2 years agoport wsgitools.digest to use the new secrets module
Helmut Grohne [Sun, 26 Mar 2017 12:39:11 +0000 (14:39 +0200)]
port wsgitools.digest to use the new secrets module

4 years agorelease version 0.3 wsgitools-0.3
Helmut Grohne [Sat, 18 Apr 2015 18:47:32 +0000 (20:47 +0200)]
release version 0.3

4 years agoMerge branch py3k
Helmut Grohne [Sat, 18 Apr 2015 18:38:13 +0000 (20:38 +0200)]
Merge branch py3k

5 years agoswitch to new-style classes entirely
Helmut Grohne [Mon, 6 Jan 2014 17:38:58 +0000 (18:38 +0100)]
switch to new-style classes entirely

There is no reason to use old-style classes beyond laziness.

5 years agofix possible uncaught ValueError from scgi servers py3k
Helmut Grohne [Mon, 9 Dec 2013 06:38:18 +0000 (07:38 +0100)]
fix possible uncaught ValueError from scgi servers

With unicode strings it no longer holds that if s.isdigit() then you can
safely int(s), because there are more digits (such as ^3 \xb3) accepted
by isdigit. This can cause an uncaught ValueError in certain places if
the remote scgi server presents bogus data. Thanks to Klaus Aehlig for
pointing out what isdigit accepts.

6 years agofix RequestLogWSGIFilterTest
Helmut Grohne [Thu, 6 Jun 2013 09:06:26 +0000 (11:06 +0200)]
fix RequestLogWSGIFilterTest

Clarify the type of the log file-like passed to RequestLogWSGIFilter.

6 years agofix the py3k part of RequestLogWSGIFilterTest
Helmut Grohne [Thu, 6 Jun 2013 09:02:33 +0000 (11:02 +0200)]
fix the py3k part of RequestLogWSGIFilterTest

6 years agoport CachingMiddlewareTest to py3k
Helmut Grohne [Thu, 6 Jun 2013 08:36:49 +0000 (10:36 +0200)]
port CachingMiddlewareTest to py3k

6 years agoMerge tag 'wsgitools-0.2.4' into py3k
Helmut Grohne [Thu, 6 Jun 2013 08:31:29 +0000 (10:31 +0200)]
Merge tag 'wsgitools-0.2.4' into py3k

The intent is to port the changes from 0.2.4 to py3k.

Conflicts:
README
test.py
wsgitools/scgi/forkpool.py

All conflicts were resolved in a minimal way. The test suite now fails
for all python versions.

6 years agorelease version 0.2.4 wsgitools-0.2.4
Helmut Grohne [Thu, 14 Mar 2013 12:44:24 +0000 (13:44 +0100)]
release version 0.2.4

6 years agoextend copyright
Helmut Grohne [Tue, 12 Mar 2013 20:38:07 +0000 (21:38 +0100)]
extend copyright

6 years agoupdate Python versions in README
Helmut Grohne [Tue, 12 Mar 2013 20:37:31 +0000 (21:37 +0100)]
update Python versions in README

6 years agoMANIFEST.in: include the test suite
Helmut Grohne [Mon, 11 Mar 2013 15:23:07 +0000 (16:23 +0100)]
MANIFEST.in: include the test suite

6 years agoforkpool: add a per-request timelimit
Helmut Grohne [Sun, 10 Mar 2013 13:20:25 +0000 (14:20 +0100)]
forkpool: add a per-request timelimit

6 years agoadded test for CachingMiddleware
Helmut Grohne [Wed, 28 Nov 2012 15:08:20 +0000 (16:08 +0100)]
added test for CachingMiddleware

6 years agoscgi.forkpool: implement RLIMIT_CPU
Helmut Grohne [Thu, 1 Nov 2012 10:35:49 +0000 (11:35 +0100)]
scgi.forkpool: implement RLIMIT_CPU

The limit is only set on workers does not apply to the master. Upon
reaching the soft limit the worker terminates after finished the current
request.

6 years agoscgi.forkpool: fixed wrong assertion
Helmut Grohne [Thu, 1 Nov 2012 10:33:34 +0000 (11:33 +0100)]
scgi.forkpool: fixed wrong assertion

The forkpool server was incompatible with dumb generators. They only
call start_response when being asked for the first output element, but
the forkpool server was wrongly requiring start_response to be called
before returning the iterator.

6 years agoscgi.forkpool: similarly drop the error attribute
Helmut Grohne [Thu, 1 Nov 2012 10:04:53 +0000 (11:04 +0100)]
scgi.forkpool: similarly drop the error attribute

It can be stored inside the config attribute.

6 years agoscgi.forkpool: reduce instance attributes
Helmut Grohne [Thu, 1 Nov 2012 09:41:59 +0000 (10:41 +0100)]
scgi.forkpool: reduce instance attributes

The interface and port attributes are always used together. Combine them
in order to reduce complexity.

7 years agoadded RequestLogWSGIFilterTest
Helmut Grohne [Mon, 2 Jul 2012 06:17:20 +0000 (08:17 +0200)]
added RequestLogWSGIFilterTest

7 years agomake HtdigestTokenGenerator work with py3k
Helmut Grohne [Sun, 1 Jul 2012 09:38:29 +0000 (11:38 +0200)]
make HtdigestTokenGenerator work with py3k

Define a textopen function that returns "native strings" (in the sense
of pep3333). Therefore textopen needs to decode using iso-8859-1 iff
running on py3k. Additionally use a with construct to close the file
being read in all circumstances.

7 years agomake StaticFile work with py3k
Helmut Grohne [Sun, 1 Jul 2012 09:30:22 +0000 (11:30 +0200)]
make StaticFile work with py3k

There is no file builtin, and binary mode gives bytes instead of str.

7 years agofix more bytes related issues not covered by test.py
Helmut Grohne [Fri, 29 Jun 2012 07:26:09 +0000 (09:26 +0200)]
fix more bytes related issues not covered by test.py

 * applications returned errors as str instead of bytes
 * filters documentation updated with bytes
 * various filters expecting str where bytes are passed
 * escape_string also needs to use bytes.isalnum instead of str.isalnum
 * middlewares injecting str where bytes are expected

7 years agofix hashlib, base64 and other bytes issues
Helmut Grohne [Fri, 29 Jun 2012 06:47:51 +0000 (08:47 +0200)]
fix hashlib, base64 and other bytes issues

 * hashlib.md5 wants bytes now.
 * string.decode("base64") is now base64.b64decode and works on bytes
 * binascii.unhexlify is now base64.b16decode and also works on bytes
 * str.isalnum accepts umlauts, use bytes.isalnum instead

7 years agomake scgi.forkpool work with py3k
Helmut Grohne [Fri, 29 Jun 2012 05:41:56 +0000 (07:41 +0200)]
make scgi.forkpool work with py3k

Note that the construction of the header moved from our internal
sendheaders function to the start_response function. This way users
supplying unicode characters no representable in iso-8859-1 will get a
UnicodeEncodeError back from start_response, which is more useful than
failing later while yielding bytes.

7 years agoscgi.asynchronous: move {en,de}coding to internal module
Helmut Grohne [Fri, 29 Jun 2012 05:38:57 +0000 (07:38 +0200)]
scgi.asynchronous: move {en,de}coding to internal module

7 years agomake scgi.asynchronous work with py3
Helmut Grohne [Thu, 28 Jun 2012 21:40:17 +0000 (23:40 +0200)]
make scgi.asynchronous work with py3

7 years agofirst part of bytes conversion
Helmut Grohne [Thu, 28 Jun 2012 20:38:28 +0000 (22:38 +0200)]
first part of bytes conversion

Convert the request body data from str to bytes. This replaces all
StringIOs with BytesIOs (removing backwards one more backwards
compatibility). Also all character sequences involved in request bodies
get a b"" prefix. The StaticContent application takes bytes instead of
str (no difference for py2x). The GzipWSGIFilter needs a fixed as a
truncate of a BytesIO does not rewind the stream position.

7 years agoupdate python versions in README
Helmut Grohne [Thu, 28 Jun 2012 15:55:49 +0000 (17:55 +0200)]
update python versions in README

7 years agoprovide py3 style __next__ methods
Helmut Grohne [Thu, 28 Jun 2012 15:23:06 +0000 (17:23 +0200)]
provide py3 style __next__ methods

7 years agoremove workarounds for missing next() and hashlib
Helmut Grohne [Thu, 28 Jun 2012 14:38:03 +0000 (16:38 +0200)]
remove workarounds for missing next() and hashlib

7 years agodrop support for python2.5, use except ... as ...
Helmut Grohne [Thu, 28 Jun 2012 14:12:52 +0000 (16:12 +0200)]
drop support for python2.5, use except ... as ...

7 years agofix comment in wsgitools.digest
Helmut Grohne [Sun, 24 Jun 2012 18:03:07 +0000 (20:03 +0200)]
fix comment in wsgitools.digest

7 years agosendfile support
Helmut Grohne [Sat, 17 Mar 2012 21:14:47 +0000 (22:14 +0100)]
sendfile support

When a sendfile library is available, expose it via wsgi.file_wrapper.
This support spans both asynchronous and forkpool.

7 years agoset __all__ in scgi.forkpool
Helmut Grohne [Sat, 17 Mar 2012 19:18:09 +0000 (20:18 +0100)]
set __all__ in scgi.forkpool

7 years agodeduplicate scgi.{asynchronous,forkpool}
Helmut Grohne [Sat, 17 Mar 2012 19:16:12 +0000 (20:16 +0100)]
deduplicate scgi.{asynchronous,forkpool}

7 years agoadded a test for GzipWSGIFilter
Helmut Grohne [Thu, 15 Mar 2012 14:57:53 +0000 (15:57 +0100)]
added a test for GzipWSGIFilter

7 years agoraise exc_info stuff properly
Helmut Grohne [Thu, 15 Mar 2012 14:30:13 +0000 (15:30 +0100)]
raise exc_info stuff properly

7 years agomiddlewares: support multiple start_response calls
Helmut Grohne [Thu, 15 Mar 2012 14:13:28 +0000 (15:13 +0100)]
middlewares: support multiple start_response calls

Previously middlewares mostly gave up and acted as pass through when a
second start_response call occurred. Now they try to handle this
situation.

7 years agoadded another NoWriteCallableMiddleware test
Helmut Grohne [Thu, 15 Mar 2012 13:37:13 +0000 (14:37 +0100)]
added another NoWriteCallableMiddleware test

Not failing. :-)

7 years agofix failing NoWriteCallableMiddleware test
Helmut Grohne [Thu, 15 Mar 2012 13:35:49 +0000 (14:35 +0100)]
fix failing NoWriteCallableMiddleware test

This was basically a rewrite of the NoWriteCallableMiddleware, because
the wrong assumption of start_response not being called twice was used
in too many places.

7 years agoadded failing test for NoWriteCallableMiddleware
Helmut Grohne [Thu, 15 Mar 2012 13:13:22 +0000 (14:13 +0100)]
added failing test for NoWriteCallableMiddleware

Also set the returneddata attribute of the response object instead of
the request object.

7 years agobumped version to 0.2.3 wsgitools-0.2.3
Helmut Grohne [Tue, 6 Dec 2011 10:00:23 +0000 (11:00 +0100)]
bumped version to 0.2.3

7 years agodrop useless tail recursion param from parse_digest_response
Helmut Grohne [Tue, 6 Dec 2011 09:57:12 +0000 (10:57 +0100)]
drop useless tail recursion param from parse_digest_response

7 years agorespect RFC2617 in terms of what is quoted
Helmut Grohne [Thu, 1 Dec 2011 14:07:19 +0000 (15:07 +0100)]
respect RFC2617 in terms of what is quoted

Said RFC is quite precise on which values of a challenge are to be
quoted. I didn't honour those parts and many applications do not enforce
these requirements, so I didn't notice. Now I explain which values are
to be quoted in the hopes that it works with "Wget/1.10.2 (Red Hat
modified)".

7 years agodocumentation update
Helmut Grohne [Wed, 30 Nov 2011 19:28:22 +0000 (20:28 +0100)]
documentation update

 * added a number of internal links (L{...})
 * some fixes
 * some additions

7 years agoMerge branch 'authrefactor'
Helmut Grohne [Wed, 30 Nov 2011 17:54:39 +0000 (18:54 +0100)]
Merge branch 'authrefactor'

Conflicts:
wsgitools/digest.py

7 years agoshrink AuthenticationMiddleware.authenticate interface
Helmut Grohne [Wed, 30 Nov 2011 17:48:33 +0000 (18:48 +0100)]
shrink AuthenticationMiddleware.authenticate interface

The method no longer receives a start_response and is no longer
responsible for calling self.app. Instead it returns a dictionary with
the result of the authentication.

7 years agoadded format_digest
Helmut Grohne [Mon, 28 Nov 2011 21:30:46 +0000 (22:30 +0100)]
added format_digest

This is the inverse of parse_digest_response and also supports escaping
of backslashes and quotes.

7 years agorewrite parse_digest_response for escapes
Helmut Grohne [Mon, 28 Nov 2011 18:49:00 +0000 (19:49 +0100)]
rewrite parse_digest_response for escapes

The previous version did not handle escapes at all. Now I added two test
cases for escaping and rewrote the function to meet all test cases.

7 years agodigest: generate Authentication-Info before invoking app
Helmut Grohne [Mon, 28 Nov 2011 18:16:10 +0000 (19:16 +0100)]
digest: generate Authentication-Info before invoking app

This shrinks the possibility of raising something from start_response
and maybe enables to factor out this start_response modification later.

7 years agoadded new base class AuthenticationMiddleware
Helmut Grohne [Sun, 27 Nov 2011 12:24:14 +0000 (13:24 +0100)]
added new base class AuthenticationMiddleware

The BasicAuthMiddleware and AuthDigestMiddleware now derive from
AuthenticationMiddleware which provides common functionality.

7 years agobroaden AuthDigestMiddleware.authorization_required
Helmut Grohne [Sat, 26 Nov 2011 17:38:35 +0000 (18:38 +0100)]
broaden AuthDigestMiddleware.authorization_required

The interface of this internal function has changed in a backwards
incompatible way. The last parameter is no longer the bool stale, but an
exception now, which encodes more information than the previous bool.
This was made possible by the previous commit. This exception can then
be used by the new method www_authenticate to generate a suitable
WWW-Authenticate header. The idea behind this change is that at some
point it should be possible to override authorization_required (still
internal now) to evaluate what condition lead to the failure and to
generate custom error pages.

7 years agoimproved extensibility of error handling in digest.py
Helmut Grohne [Wed, 2 Nov 2011 18:29:21 +0000 (19:29 +0100)]
improved extensibility of error handling in digest.py

Instead of randomly raising KeyErrors or ValueErrors we can now see more
meaningful ProtocolViolations and StaleNonces. Note that this change
should be invisible to users who do not mess with internals.

7 years agoadded digest auth test with qop=auth
Helmut Grohne [Wed, 2 Nov 2011 18:24:44 +0000 (19:24 +0100)]
added digest auth test with qop=auth

7 years agodigest: support gentoken without algo
Helmut Grohne [Tue, 1 Nov 2011 22:40:59 +0000 (23:40 +0100)]
digest: support gentoken without algo

8 years agoscgi: support reusing a listen socket
Helmut Grohne [Fri, 19 Aug 2011 19:01:52 +0000 (21:01 +0200)]
scgi: support reusing a listen socket

This is useful when used in combination with e.g. systemd.

8 years agofixed epydoc markup errors in digest module
Helmut Grohne [Sun, 24 Jul 2011 22:25:16 +0000 (00:25 +0200)]
fixed epydoc markup errors in digest module

8 years agoadded more nonce store test cases to digest module
Helmut Grohne [Sun, 24 Jul 2011 22:16:36 +0000 (00:16 +0200)]
added more nonce store test cases to digest module

8 years agoadd more assertions for types of passed parameters
Helmut Grohne [Sun, 24 Jul 2011 20:43:26 +0000 (22:43 +0200)]
add more assertions for types of passed parameters

8 years agofilters.escape_string: do not consider \ printable
Helmut Grohne [Sun, 24 Jul 2011 20:07:17 +0000 (22:07 +0200)]
filters.escape_string: do not consider \ printable

Otherwise escape_string is not reversible.

8 years agoremoved execute bit from wsgitools/digest.py
Helmut Grohne [Sun, 24 Jul 2011 19:56:51 +0000 (21:56 +0200)]
removed execute bit from wsgitools/digest.py

It probably gained this bit later than shown in history due to darcs not
tracking execute bits. The bit was probably added for doc tests which
moved to a designated file later.

8 years agoBasicAuthMiddleware docstring: mention REMOTE_USER
Helmut Grohne [Fri, 22 Jul 2011 18:47:46 +0000 (20:47 +0200)]
BasicAuthMiddleware docstring: mention REMOTE_USER

8 years agoadapt exc_info handling for python 3
Helmut Grohne [Mon, 18 Jul 2011 13:19:39 +0000 (15:19 +0200)]
adapt exc_info handling for python 3

8 years agomore testcases
Helmut Grohne [Wed, 8 Jun 2011 08:20:02 +0000 (10:20 +0200)]
more testcases

8 years agoadded test cases for BasicAuthMiddleware
Helmut Grohne [Wed, 8 Jun 2011 07:59:50 +0000 (09:59 +0200)]
added test cases for BasicAuthMiddleware

8 years agotest.py: exit non-zero on failure
Helmut Grohne [Thu, 2 Jun 2011 11:24:46 +0000 (13:24 +0200)]
test.py: exit non-zero on failure

The exit status is now the number of failures.

8 years agoreworked digest.AuthTokenGenerator
Helmut Grohne [Wed, 1 Jun 2011 13:21:38 +0000 (15:21 +0200)]
reworked digest.AuthTokenGenerator

AuthTokenGenerator gained a base class AbstractTokenGenerator. This
class provides an additional method check_password implementing the
interface required by BasicAuthMiddleware. In addition
AbstractTokenGenerator gained two subclasses HtdigestTokenGenerator and
UpdatingHtdigestTokenGenerator. They both read authentication
information from a apache htdigest file. The latter also checks the file
for updates.

8 years agoimproved doc string for middlewares.ContentLengthMiddleware
Helmut Grohne [Wed, 1 Jun 2011 13:18:07 +0000 (15:18 +0200)]
improved doc string for middlewares.ContentLengthMiddleware

8 years agoadded test case for middlewares.ContentLengthMiddleware
Helmut Grohne [Wed, 1 Jun 2011 13:14:28 +0000 (15:14 +0200)]
added test case for middlewares.ContentLengthMiddleware

8 years agoadded a test case for applications.StaticFile
Helmut Grohne [Wed, 1 Jun 2011 13:13:55 +0000 (15:13 +0200)]
added a test case for applications.StaticFile

8 years agotest.py: improved header check
Helmut Grohne [Wed, 1 Jun 2011 13:12:21 +0000 (15:12 +0200)]
test.py: improved header check

It previously only checked for the validity of a header and now also
checks for the presence of a header.

8 years agoREADME: installation and test suite instructions
Helmut Grohne [Wed, 1 Jun 2011 13:10:57 +0000 (15:10 +0200)]
README: installation and test suite instructions

8 years agoinclude epydoc.conf in MANIFEST.in
Helmut Grohne [Wed, 1 Jun 2011 13:09:22 +0000 (15:09 +0200)]
include epydoc.conf in MANIFEST.in

8 years agoDictAuthChecker.__call__ should take an environ wsgitools-0.2.2
Helmut Grohne [Wed, 12 Jan 2011 20:33:37 +0000 (21:33 +0100)]
DictAuthChecker.__call__ should take an environ

as this is tried by BasicAuthMiddleware first.

8 years agoimproved AuthDigestMiddleware doc string
Helmut Grohne [Wed, 12 Jan 2011 20:31:37 +0000 (21:31 +0100)]
improved AuthDigestMiddleware doc string

8 years agoscgi.asynchronous catches more errors now
Helmut Grohne [Wed, 12 Jan 2011 20:28:52 +0000 (21:28 +0100)]
scgi.asynchronous catches more errors now

This addresses a disputed denial of service condition described in
http://bugs.python.org/issue6706. Note that wsgitools is not hit as hard as
pyftplib.

8 years agoexplicitly target python 2.x in setup.py
Helmut Grohne [Wed, 12 Jan 2011 20:24:34 +0000 (21:24 +0100)]
explicitly target python 2.x in setup.py

8 years agobug fix for StaticContent and CachingMiddleware
Helmut Grohne [Wed, 12 Jan 2011 20:20:21 +0000 (21:20 +0100)]
bug fix for StaticContent and CachingMiddleware

PEP333 says that the headers list passed to start_response may be modified by
servers or middlewares. In fact this happens in DigestAuthMiddleware. The
StaticContent and CachingMiddleware classes did not take this into account and
returned the same headers list multiple times which is wrong and can lead to
denial of service.

9 years agoadded note about ContentLengthMiddleware's wsgi conformance
Helmut Grohne [Sat, 4 Sep 2010 18:27:41 +0000 (20:27 +0200)]
added note about ContentLengthMiddleware's wsgi conformance

9 years agoCachingMiddleware: automatic cache pruning implemented
Helmut Grohne [Sat, 4 Sep 2010 18:26:57 +0000 (20:26 +0200)]
CachingMiddleware: automatic cache pruning implemented

9 years agomiddlewares.CachingMiddleware: include request method in key
Helmut Grohne [Sat, 4 Sep 2010 18:26:01 +0000 (20:26 +0200)]
middlewares.CachingMiddleware: include request method in key

9 years agoemploy wsgiref.validate.validator in the test suite
Helmut Grohne [Wed, 1 Sep 2010 22:19:48 +0000 (00:19 +0200)]
employ wsgiref.validate.validator in the test suite

9 years agoimproved digest documentation
Helmut Grohne [Wed, 1 Sep 2010 22:18:55 +0000 (00:18 +0200)]
improved digest documentation

9 years agobugfix: io module from py2.6 provides incompatible StringIO
Helmut Grohne [Tue, 31 Aug 2010 10:31:51 +0000 (12:31 +0200)]
bugfix: io module from py2.6 provides incompatible StringIO

9 years agoflush log file in RequestLogWSGIFilter by default
Helmut Grohne [Fri, 4 Jun 2010 19:55:56 +0000 (21:55 +0200)]
flush log file in RequestLogWSGIFilter by default

9 years agorelease 0.2.1 for security fix wsgitools-0.2.1
Helmut Grohne [Fri, 28 May 2010 22:45:59 +0000 (00:45 +0200)]
release 0.2.1 for security fix

9 years agosecurity fix: filters.RequestLogWSGIFilter must escape strings
Helmut Grohne [Fri, 28 May 2010 22:44:05 +0000 (00:44 +0200)]
security fix: filters.RequestLogWSGIFilter must escape strings

9 years agobugfix: endless loop for closed connection in scgi.forkpool
Helmut Grohne [Tue, 25 May 2010 20:50:41 +0000 (22:50 +0200)]
bugfix: endless loop for closed connection in scgi.forkpool

9 years agofix shared default argument to parse_digest_response
Helmut Grohne [Sun, 31 Jan 2010 01:30:10 +0000 (02:30 +0100)]
fix shared default argument to parse_digest_response

9 years agoobserved SocketFileWrapper bug fixed
Helmut Grohne [Sun, 25 Oct 2009 19:41:14 +0000 (20:41 +0100)]
observed SocketFileWrapper bug fixed

9 years agomore SocketFileWrapper (forkpool) bugs
Helmut Grohne [Sun, 25 Oct 2009 19:28:17 +0000 (20:28 +0100)]
more SocketFileWrapper (forkpool) bugs

9 years agoSocketFileWrapper from forkpool contained more bugs
Helmut Grohne [Sun, 25 Oct 2009 19:25:11 +0000 (20:25 +0100)]
SocketFileWrapper from forkpool contained more bugs