aboutsummaryrefslogtreecommitdiffstats
path: root/netlib
diff options
context:
space:
mode:
Diffstat (limited to 'netlib')
-rw-r--r--netlib/certutils.py14
-rw-r--r--netlib/http.py17
2 files changed, 7 insertions, 24 deletions
diff --git a/netlib/certutils.py b/netlib/certutils.py
index 7dcb5450..dab7e318 100644
--- a/netlib/certutils.py
+++ b/netlib/certutils.py
@@ -1,4 +1,4 @@
-import os, ssl, time, datetime, tempfile, shutil
+import os, ssl, time, datetime
from pyasn1.type import univ, constraint, char, namedtype, tag
from pyasn1.codec.der.decoder import decode
from pyasn1.error import PyAsn1Error
@@ -92,24 +92,16 @@ def dummy_cert(ca, commonname, sans):
ca = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, raw)
key = OpenSSL.crypto.load_privatekey(OpenSSL.crypto.FILETYPE_PEM, raw)
- req = OpenSSL.crypto.X509Req()
- subj = req.get_subject()
- subj.CN = commonname
- req.set_pubkey(ca.get_pubkey())
- req.sign(key, "sha1")
- if ss:
- req.add_extensions([OpenSSL.crypto.X509Extension("subjectAltName", True, ss)])
-
cert = OpenSSL.crypto.X509()
cert.gmtime_adj_notBefore(-3600)
cert.gmtime_adj_notAfter(60 * 60 * 24 * 30)
cert.set_issuer(ca.get_subject())
- cert.set_subject(req.get_subject())
+ cert.get_subject().CN = commonname
cert.set_serial_number(int(time.time()*10000))
if ss:
cert.set_version(2)
cert.add_extensions([OpenSSL.crypto.X509Extension("subjectAltName", True, ss)])
- cert.set_pubkey(req.get_pubkey())
+ cert.set_pubkey(ca.get_pubkey())
cert.sign(key, "sha1")
return SSLCert(cert)
diff --git a/netlib/http.py b/netlib/http.py
index f1a2bfb5..7060b688 100644
--- a/netlib/http.py
+++ b/netlib/http.py
@@ -283,32 +283,23 @@ def parse_init_http(line):
return method, url, httpversion
-def request_connection_close(httpversion, headers):
+def connection_close(httpversion, headers):
"""
- Checks the request to see if the client connection should be closed.
+ Checks the message to see if the client connection should be closed according to RFC 2616 Section 8.1
"""
+ # At first, check if we have an explicit Connection header.
if "connection" in headers:
toks = get_header_tokens(headers, "connection")
if "close" in toks:
return True
elif "keep-alive" in toks:
return False
- # HTTP 1.1 connections are assumed to be persistent
+ # If we don't have a Connection header, HTTP 1.1 connections are assumed to be persistent
if httpversion == (1, 1):
return False
return True
-def response_connection_close(httpversion, headers):
- """
- Checks the response to see if the client connection should be closed.
- """
- if request_connection_close(httpversion, headers):
- return True
- elif (not has_chunked_encoding(headers)) and "content-length" in headers:
- return False
- return True
-
def read_http_body_request(rfile, wfile, headers, httpversion, limit):
"""