Mercurial > p > roundup > code
diff roundup/cgi/client.py @ 3628:ed76f7ee34c4
handle connection loss when responding to web requests
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Tue, 06 Jun 2006 01:44:44 +0000 |
| parents | 04dc3eef67b7 |
| children | ff9f4ca42454 |
line wrap: on
line diff
--- a/roundup/cgi/client.py Sat May 20 07:43:17 2006 +0000 +++ b/roundup/cgi/client.py Tue Jun 06 01:44:44 2006 +0000 @@ -1,4 +1,4 @@ -# $Id: client.py,v 1.225 2006-04-27 04:03:11 richard Exp $ +# $Id: client.py,v 1.226 2006-06-06 01:44:44 richard Exp $ """WWW request handler (also used in the stand-alone server). """ @@ -6,7 +6,7 @@ import base64, binascii, cgi, codecs, mimetypes, os import random, re, rfc822, stat, time, urllib, urlparse -import Cookie +import Cookie, socket, errno from roundup import roundupdb, date, hyperdb, password from roundup.cgi import templating, cgitb, TranslationService @@ -821,7 +821,12 @@ if not self.headers_done: self.header() if self.env['REQUEST_METHOD'] != 'HEAD': - self.request.wfile.write(content) + try: + self.request.wfile.write(content) + except socket.error, error: + # the end-user has gone away + if error.errno != errno.EPIPE: + raise def write_html(self, content): if not self.headers_done: @@ -840,7 +845,12 @@ content = content.encode(self.charset, 'xmlcharrefreplace') # and write - self.request.wfile.write(content) + try: + self.request.wfile.write(content) + except socket.error, error: + # the end-user has gone away + if error.errno != errno.EPIPE: + raise def setHeader(self, header, value): '''Override a header to be returned to the user's browser.
