From 23032c0bdbf788b185986cbbe66cdf91f6bf4c2a Mon Sep 17 00:00:00 2001 From: Nikola Klaric Date: Tue, 14 Oct 2014 02:49:37 +0200 Subject: [PATCH 1/3] Handle ECONNABORTED (error 53) gracefully. --- pants/_channel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pants/_channel.py b/pants/_channel.py index ded911e..564e722 100755 --- a/pants/_channel.py +++ b/pants/_channel.py @@ -473,7 +473,7 @@ def _socket_recv(self): except socket.error as err: if err.args[0] in (errno.EAGAIN, errno.EWOULDBLOCK): return '' - elif err.args[0] == errno.ECONNRESET: + elif err.args[0] in (errno.ECONNRESET, errno.ECONNABORTED): return None else: raise From 652a95b2d66aea504432c6bc32299b42fefdf2cc Mon Sep 17 00:00:00 2001 From: Nikola Klaric Date: Fri, 17 Oct 2014 03:13:29 +0200 Subject: [PATCH 2/3] Unpack length tuple. --- pants/http/websocket.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pants/http/websocket.py b/pants/http/websocket.py index 604857f..cab2c3a 100644 --- a/pants/http/websocket.py +++ b/pants/http/websocket.py @@ -1287,6 +1287,9 @@ def _con_read(self, data): mask = [ord(x) for x in self._recv_buffer[headlen:headlen+4]] headlen += 4 + if type(length) is tuple and len(length) == 1: + length = length[0] + total_size = headlen + length if len(self._recv_buffer) < total_size: if len(self._recv_buffer) > self._recv_buffer_size_limit: From 9f261fe95fd59cfd6df9c692a6f764c55764ec98 Mon Sep 17 00:00:00 2001 From: Nikola Klaric Date: Tue, 21 Oct 2014 15:07:33 +0200 Subject: [PATCH 3/3] Added kwarg to instantiate FileServer with custom headers. --- pants/web/fileserver.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pants/web/fileserver.py b/pants/web/fileserver.py index eedcec6..3a08683 100644 --- a/pants/web/fileserver.py +++ b/pants/web/fileserver.py @@ -130,13 +130,14 @@ class FileServer(object): FileServer("/tmp/path").attach(app, "/files/") """ def __init__(self, path, blacklist=(re.compile('.*\.py[co]?$'), ), - defaults=('index.html', 'index.htm')): + defaults=('index.html', 'index.htm'), headers={}): # Make sure our path is unicode. if not isinstance(path, unicode): path = decode(path) self.path = os.path.normpath(os.path.realpath(path)) self.defaults = defaults + self.headers = headers # Build the blacklist. self.blacklist = [] @@ -241,7 +242,7 @@ def __call__(self, request): # Let's send the file. request.auto_finish = False - request.send_file(full_path) + request.send_file(full_path, headers=self.headers.copy()) def list_directory(self, request, path):