Don't close GlibTCPServer sockets prematurely
This commit is contained in:
parent
6a6c5fb805
commit
83a49dcd4e
2
NEWS
2
NEWS
@ -1,3 +1,5 @@
|
|||||||
|
* Don't close GlibTCPServer sockets prematurely (dcbw)
|
||||||
|
|
||||||
Snapshot 5212790236
|
Snapshot 5212790236
|
||||||
|
|
||||||
* Fix initialization order of buddy class '_activities' member (dcbw)
|
* Fix initialization order of buddy class '_activities' member (dcbw)
|
||||||
|
@ -69,6 +69,11 @@ class GlibTCPServer(SocketServer.TCPServer):
|
|||||||
self.handle_request()
|
self.handle_request()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def close_request(self, request):
|
||||||
|
"""Called to clean up an individual request."""
|
||||||
|
# let the request be closed by the request handler when its done
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ChunkedGlibHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
|
class ChunkedGlibHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
|
||||||
"""RequestHandler class that integrates with Glib mainloop. It writes
|
"""RequestHandler class that integrates with Glib mainloop. It writes
|
||||||
@ -112,6 +117,7 @@ class ChunkedGlibHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
|
|||||||
def _cleanup(self):
|
def _cleanup(self):
|
||||||
if self._file:
|
if self._file:
|
||||||
self._file.close()
|
self._file.close()
|
||||||
|
self._file = None
|
||||||
if self._srcid > 0:
|
if self._srcid > 0:
|
||||||
gobject.source_remove(self._srcid)
|
gobject.source_remove(self._srcid)
|
||||||
self._srcid = 0
|
self._srcid = 0
|
||||||
@ -507,12 +513,23 @@ def xmlrpc_test(loop):
|
|||||||
error_handler=xmlrpc_error_cb,
|
error_handler=xmlrpc_error_cb,
|
||||||
user_data=loop)
|
user_data=loop)
|
||||||
|
|
||||||
def main():
|
def start_xmlrpc():
|
||||||
loop = gobject.MainLoop()
|
|
||||||
server = GlibXMLRPCServer(("", 8888))
|
server = GlibXMLRPCServer(("", 8888))
|
||||||
inst = Test()
|
inst = Test()
|
||||||
server.register_instance(inst)
|
server.register_instance(inst)
|
||||||
gobject.idle_add(xmlrpc_test, loop)
|
gobject.idle_add(xmlrpc_test, loop)
|
||||||
|
|
||||||
|
class TestReqHandler(ChunkedGlibHTTPRequestHandler):
|
||||||
|
def translate_path(self, path):
|
||||||
|
return "/tmp/foo"
|
||||||
|
|
||||||
|
def start_http():
|
||||||
|
server = GlibTCPServer(("", 8890), TestReqHandler)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
loop = gobject.MainLoop()
|
||||||
|
# start_xmlrpc()
|
||||||
|
start_http()
|
||||||
try:
|
try:
|
||||||
loop.run()
|
loop.run()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
@ -521,3 +538,5 @@ def main():
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user