| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
where the method could block indefinitely if called just before the
event loop started running. This also fixes the occasional freezes
witnessed in test_httpservers.
|
|
|
|
| |
added the shutdown_request() which can perform shutdown before calling close. This is needed for the ForkingMixIn because different close semantics are required for child and parent process. shutdown_request(), for TCP servers, calls socket.shutdown() and then calls close_request(). Therefore, this is not an backwards incompatible change, since subclasses that continue to override close_request() continue to work.
|
|
|
|
| |
close_request() (which can send a socket.shutdown()) must be called by the child process in a forking server. The parent must merely close the socket handle.
|
|
|
|
| |
some platforms may raise ENOTCONN if the stack has disconnected the socket on behalf of the peer.
|
|
|
|
| |
Cumulative patch to http and xmlrpc
|
|
|
|
| |
Move the newly introduced disable_nagle_algorithm flag into the StreamRequestHandler, where it is more appropriate.
|
|
|
|
| |
Add a feature to disable the Nagle algorithm on sockets in TCPServer
|
| |
|
|
|
|
| |
place and fix all references to it. Closes #2926.
|
|
|
|
| |
Deprecated old name.
|
|
|
|
|
|
| |
SocketServers. The core of the patch was written by Pedro Werneck, but any bugs
are mine. I've also rearranged the code for timeouts in order to avoid
interfering with the shutdown poll.
|
|
|
|
|
| |
didn't create, in most cases. When there are max_children handlers running, it
will still wait for any child process, not just handler processes.
|
|
|
|
|
|
| |
occasionally crash
when trying to remove a pid that in not in the activechildren list.
|
|
|
|
|
|
| |
that will call
.handle_timeout() method when no requests are received within the timeout period.
|
| |
|
|
|
|
| |
and server_activate() in the constructors for TCPServer, SimpleXMLRPCServer and DocXMLRPCServer.
|
|
|
|
|
|
| |
to calling getsockname() on the server's socket.
Will backport.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Backport candidate.
|
|
|
|
|
| |
robust. This makes socketserver's close() method callable repeatedly
without error - similar to other file-like objects.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
In DatagramRequestHandler.setup(), the wfile initialization should be
StringIO.StringIO(), not StringIO.StringIO(slf.packet).
Bugfix candidate (all the way back to Python 1.5.2 :-).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ThreadingMixIn/TCPServer forgets close (Max Neunhöffer).
This ensures that handle_error() and close_request() are called when
an error occurs in the thread.
(I am not applying the second chunk of the patch, which moved the
finish() call into the finally clause in BaseRequestHandler's __init__
method; that would be a semantic change that I cannot accept at this
point - the data would be sent even if the handler raised an
exception.)
|
|
|
|
|
| |
Solved with a helper method that calls finish_request() and then
close_request(). The code is by Max Neunhöffer.
|
|
|
|
| |
loss for no reason.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix various serious problems:
- The ThreadingTCPServer class and its derived classes were completely
broken because the main thread would close the request before the
handler thread had time to look at it. This was introduced by
Ping's close_request() patch. The fix moves the close_request()
calls to after the handler has run to completion in the BaseServer
class and the ForkingMixIn class; when using the ThreadingMixIn,
closing the request is the handler's responsibility.
- The ForkingUDPServer class has always been been broken because the
socket was closed in the child before calling the handler. I fixed
this by simply not calling server_close() in the child at all.
- I cannot get the UnixDatagramServer class to work at all. The
recvfrom() call doesn't return a meaningful client address. I added
a comment to this effect. Maybe it works on other Unix versions.
- The __all__ variable was missing ThreadingMixIn and ForkingMixIn.
- Bumped __version__ to "0.4".
- Added a note about the test suite (to be checked in shortly).
|
|
|
|
| |
can close the request connection when it's done handling it.
|
|
|
|
|
|
|
|
| |
added test script and expected output file as well
this closes patch 103297.
__all__ attributes will be added to other modules without first submitting
a patch, just adding the necessary line to the test script to verify
more-or-less correct implementation.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
for SocketServer.py (inherited by TCPServer)
Luke wrote:
The socketserver code, with a little bit of tweaking, can be made
sufficiently general to service "requests" of any kind, not just by sockets.
The BaseServer class was created, for example, to poll a table in a MYSQL
database every 2 seconds. each entry in the table can be allocated a
Handler which deals with the entry.
With this patch, using BaseServer and ThreadedServer classes, the creation
of the server that reads and handles MySQL table entries instead of a
socket was utterly trivial: about 50 lines of python code.
You may consider this code to be utterly useless [why would anyone else
want to do anything like this???] - you are entitled to your opinion. if you
think so, then think of this: have you considered how to cleanly add SSL to
the TCPSocketServer? What about using shared memory as the
communications mechanism for a server, instead of sockets? What about
communication using files?
The SocketServer code is extremely good every useful. it's just that as it
stands, it is tied to sockets, which is not as useful.
I heartily approve of this idea.
|
| |
|
|
|
|
|
|
|
|
|
| |
and wfile class variables (that the instance can also override).
Change the default for rfile to buffered, because that seems to make a
big difference in performance on some platforms.
An anti-patch is needed to revert the effect in CGIHTTPServer.py which
I'll check in momentarily.
|
|
|
|
| |
server_bind() method calls setsockopt(SOL_SOCKET, SO_REUSEADDR, 1).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"""
Here's a patch for the ForkingMixIn which will prevent the server from
forking itself into the ground. Note: I've tested a very similar patch
(subclassed ForkingMixIn) but not actually tested this one. As you might
surmise, this was done out of necessity...
If the maximum number of children are already running, block while waiting
for a child to exit.
"""
(I added that last sentence as a comment to the code --GvR.)
|
|
|
|
|
| |
may raise an exception (when there are no children). Reported by
Andy Dustman.
|
|
|
|
|
| |
and suggests putting a try/except around the get_request() call in
handle_request(). (All in class TCPServer.)
|
|
|
|
| |
Here's the correct patch!
|
|
|
|
|
|
|
|
|
| |
I noticed while watching (with lsof) my forking SocketServer app running
that I would get multiple processes listening to the socket. For the most
part, this doesn't hurt things, but if you terminate the server, this can
prevent it from restarting because it cannot bind to the port due to any
running children which also have the socket open. The following one-liner
fixes this.
|
|
|
|
|
|
|
|
| |
threaded versions of Unix Server classes, using the
ThreadingMixIn class:
ThreadingUnixStreamServer
ThreadingUnixDatagramServer
|
|
|
|
| |
Noted by Stefan Witzel.
|
|
|
|
| |
credit for complaining about this and for testing these changes.
|