aboutsummaryrefslogtreecommitdiffstats
path: root/netlib
diff options
context:
space:
mode:
Diffstat (limited to 'netlib')
-rw-r--r--netlib/http/__init__.py1
-rw-r--r--netlib/http/http1/protocol.py10
-rw-r--r--netlib/http/http2/protocol.py4
-rw-r--r--netlib/tcp.py35
-rw-r--r--netlib/utils.py2
5 files changed, 24 insertions, 28 deletions
diff --git a/netlib/http/__init__.py b/netlib/http/__init__.py
index b01afc6d..9b4b0e6b 100644
--- a/netlib/http/__init__.py
+++ b/netlib/http/__init__.py
@@ -1,3 +1,2 @@
-from . import *
from exceptions import *
from semantics import *
diff --git a/netlib/http/http1/protocol.py b/netlib/http/http1/protocol.py
index 6b4489fb..50975818 100644
--- a/netlib/http/http1/protocol.py
+++ b/netlib/http/http1/protocol.py
@@ -258,9 +258,7 @@ class HTTP1Protocol(semantics.ProtocolMixin):
def read_http_body(self, *args, **kwargs):
- return "".join(
- content for _, content, _ in self.read_http_body_chunked(*args, **kwargs)
- )
+ return "".join(self.read_http_body_chunked(*args, **kwargs))
def read_http_body_chunked(
@@ -308,7 +306,7 @@ class HTTP1Protocol(semantics.ProtocolMixin):
while bytes_left:
chunk_size = min(bytes_left, max_chunk_size)
content = self.tcp_handler.rfile.read(chunk_size)
- yield "", content, ""
+ yield content
bytes_left -= chunk_size
else:
bytes_left = limit or -1
@@ -317,7 +315,7 @@ class HTTP1Protocol(semantics.ProtocolMixin):
content = self.tcp_handler.rfile.read(chunk_size)
if not content:
return
- yield "", content, ""
+ yield content
bytes_left -= chunk_size
not_done = self.tcp_handler.rfile.read(1)
if not_done:
@@ -418,7 +416,7 @@ class HTTP1Protocol(semantics.ProtocolMixin):
suffix = self.tcp_handler.rfile.readline(5)
if suffix != '\r\n':
raise HttpError(code, "Malformed chunked body")
- yield line, chunk, '\r\n'
+ yield chunk
if length == 0:
return
diff --git a/netlib/http/http2/protocol.py b/netlib/http/http2/protocol.py
index b6a147d4..b297e0b8 100644
--- a/netlib/http/http2/protocol.py
+++ b/netlib/http/http2/protocol.py
@@ -34,9 +34,7 @@ class HTTP2Protocol(semantics.ProtocolMixin):
HTTP_1_1_REQUIRED=0xd
)
- # "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"
- CLIENT_CONNECTION_PREFACE =\
- '505249202a20485454502f322e300d0a0d0a534d0d0a0d0a'.decode('hex')
+ CLIENT_CONNECTION_PREFACE = "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"
ALPN_PROTO_H2 = 'h2'
diff --git a/netlib/tcp.py b/netlib/tcp.py
index 3a094d9a..0d83816b 100644
--- a/netlib/tcp.py
+++ b/netlib/tcp.py
@@ -23,31 +23,32 @@ EINTR = 4
# To enable all SSL methods use: SSLv23
# then add options to disable certain methods
# https://bugs.launchpad.net/pyopenssl/+bug/1020632/comments/3
-
-# Use ONLY for parsing of CLI arguments!
-# All code internals should use OpenSSL constants directly!
-SSL_VERSIONS = {
- 'TLSv1.2': SSL.TLSv1_2_METHOD,
- 'TLSv1.1': SSL.TLSv1_1_METHOD,
- 'TLSv1': SSL.TLSv1_METHOD,
- 'SSLv3': SSL.SSLv3_METHOD,
- 'SSLv2': SSL.SSLv2_METHOD,
- 'SSLv23': SSL.SSLv23_METHOD,
-}
-
-SSL_DEFAULT_VERSION = 'SSLv23'
-
-SSL_DEFAULT_METHOD = SSL_VERSIONS[SSL_DEFAULT_VERSION]
-
+SSL_DEFAULT_METHOD = SSL.SSLv23_METHOD
SSL_DEFAULT_OPTIONS = (
SSL.OP_NO_SSLv2 |
SSL.OP_NO_SSLv3 |
SSL.OP_CIPHER_SERVER_PREFERENCE
)
-
if hasattr(SSL, "OP_NO_COMPRESSION"):
SSL_DEFAULT_OPTIONS |= SSL.OP_NO_COMPRESSION
+"""
+Map a reasonable SSL version specification into the format OpenSSL expects.
+Don't ask...
+https://bugs.launchpad.net/pyopenssl/+bug/1020632/comments/3
+"""
+sslversion_choices = {
+ "all": (SSL.SSLv23_METHOD, 0),
+ # SSLv23_METHOD + NO_SSLv2 + NO_SSLv3 == TLS 1.0+
+ # TLSv1_METHOD would be TLS 1.0 only
+ "secure": (SSL.SSLv23_METHOD, (SSL.OP_NO_SSLv2 | SSL.OP_NO_SSLv3)),
+ "SSLv2": (SSL.SSLv2_METHOD, 0),
+ "SSLv3": (SSL.SSLv3_METHOD, 0),
+ "TLSv1": (SSL.TLSv1_METHOD, 0),
+ "TLSv1_1": (SSL.TLSv1_1_METHOD, 0),
+ "TLSv1_2": (SSL.TLSv1_2_METHOD, 0),
+}
+
class NetLibError(Exception):
pass
diff --git a/netlib/utils.py b/netlib/utils.py
index 31dcd622..d6190673 100644
--- a/netlib/utils.py
+++ b/netlib/utils.py
@@ -182,7 +182,7 @@ def parse_url(url):
return None
else:
host = netloc
- if scheme == "https":
+ if scheme.endswith("https"):
port = 443
else:
port = 80