* bzrlib/transport/http/_urllib2_wrappers.py: (AbstractHTTPHandler.retry_or_raise): ECONNRESET should be translated into ConnectionReset. It's pretty rare that it can occur during the request sending, but it has been observed during selftest runs.
* bzrlib/transport/http/_pycurl.py: (PyCurlTransport._curl_perform): Turns CURLE_RECV_ERROR into a ConnectionReset instead of a ConnectionError or some callers won't catch it properly.
* bzrlib/transport/http/__init__.py: (SmartClientHTTPMedium.send_http_smart_request): Catch ConnectionReset and turn into a SmartProtocolError like for InvalidHttpResponse.
* bzrlib/tests/test_http.py: (TestWallServer.test_http_has, TestWallServer.test_http_get): ConnectionReset can be raised too.