+import os
from cStringIO import StringIO
import urlparse, httplib
import allmydata # for __full_version__
-from allmydata.util.stringutils import quote_output
+from allmydata.util.encodingutil import quote_output
from allmydata.scripts.common import TahoeError
-
+from socket import error as socket_error
# copied from twisted/web/client.py
def parse_url(url, defaultPort=None):
path = "/"
return scheme, host, port, path
+class BadResponse(object):
+ def __init__(self, url, err):
+ self.status = -1
+ self.reason = "Error trying to connect to %s: %s" % (url, err)
+ self.error = err
+ def read(self):
+ return ""
+
def do_http(method, url, body=""):
if isinstance(body, str):
c.putheader("Connection", "close")
old = body.tell()
- body.seek(0, 2)
+ body.seek(0, os.SEEK_END)
length = body.tell()
body.seek(old)
c.putheader("Content-Length", str(length))
- c.endheaders()
+
+ try:
+ c.endheaders()
+ except socket_error, err:
+ return BadResponse(url, err)
while True:
data = body.read(8192)