summaryrefslogtreecommitdiff
path: root/flup/server/ajp_base.py
diff options
context:
space:
mode:
Diffstat (limited to 'flup/server/ajp_base.py')
-rw-r--r--flup/server/ajp_base.py26
1 files changed, 14 insertions, 12 deletions
diff --git a/flup/server/ajp_base.py b/flup/server/ajp_base.py
index 6ffc2e6..de5ba4e 100644
--- a/flup/server/ajp_base.py
+++ b/flup/server/ajp_base.py
@@ -297,9 +297,7 @@ class Packet(object):
try:
sent = sock.send(data)
except socket.error, e:
- if e[0] == errno.EPIPE:
- return # Don't bother raising an exception. Just ignore.
- elif e[0] == errno.EAGAIN:
+ if e[0] == errno.EAGAIN:
select.select([], [sock], [])
continue
else:
@@ -897,16 +895,20 @@ class BaseAJPServer(object):
if not self.multithreaded:
self._appLock.acquire()
try:
- result = self.application(environ, start_response)
try:
- for data in result:
- if data:
- write(data)
- if not headers_sent:
- write('') # in case body was empty
- finally:
- if hasattr(result, 'close'):
- result.close()
+ result = self.application(environ, start_response)
+ try:
+ for data in result:
+ if data:
+ write(data)
+ if not headers_sent:
+ write('') # in case body was empty
+ finally:
+ if hasattr(result, 'close'):
+ result.close()
+ except socket.error, e:
+ if e[0] != errno.EPIPE:
+ raise # Don't let EPIPE propagate beyond server
finally:
if not self.multithreaded:
self._appLock.release()