summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--wsgitools/scgi/asynchronous.py4
-rw-r--r--wsgitools/scgi/forkpool.py8
2 files changed, 10 insertions, 2 deletions
diff --git a/wsgitools/scgi/asynchronous.py b/wsgitools/scgi/asynchronous.py
index ff226de..f5a6a43 100644
--- a/wsgitools/scgi/asynchronous.py
+++ b/wsgitools/scgi/asynchronous.py
@@ -39,7 +39,7 @@ class SCGIConnection(asyncore.dispatcher):
return {"wsgi.version": (1, 0),
"wsgi.input": self.body,
"wsgi.errors": self.server.error,
- "wsgi.url_scheme": "http", # TODO: this is wrong
+ "wsgi.url_scheme": "http",
"wsgi.multithread": False,
"wsgi.multiprocess": False,
"wsgi.run_once": False}
@@ -116,6 +116,8 @@ class SCGIConnection(asyncore.dispatcher):
self.inbuff = ""
self.reqlen = 0
self.environ.update(self._wsgi_headers())
+ if self.environ.get("HTTPS", "no").lower() in ('yes', 'y', '1'):
+ self.environ["wsgi.url_scheme"] = "https"
if "HTTP_CONTENT_TYPE" in self.environ:
self.environ["CONTENT_TYPE"] = \
self.environ.pop("HTTP_CONTENT_TYPE")
diff --git a/wsgitools/scgi/forkpool.py b/wsgitools/scgi/forkpool.py
index 6476458..157e320 100644
--- a/wsgitools/scgi/forkpool.py
+++ b/wsgitools/scgi/forkpool.py
@@ -214,10 +214,16 @@ class SCGIServer:
"wsgi.version": (1, 0),
"wsgi.input": SocketFileWrapper(con),
"wsgi.errors": self.error,
- "wsgi.url_scheme": "http", # TODO: this is wrong
+ "wsgi.url_scheme": "http",
"wsgi.multithread": False,
"wsgi.multiprocess": True,
"wsgi.run_once": False})
+ if environ.get("HTTPS", "no").lower() in ('yes', 'y', '1'):
+ environ["wsgi.url_scheme"] = "https"
+ if "HTTP_CONTENT_TYPE" in environ:
+ environ["CONTENT_TYPE"] = environ.pop("HTTP_CONTENT_TYPE")
+ if "HTTP_CONTENT_LENGTH" in environ:
+ del environ["HTTP_CONTENT_LENGTH"] # TODO: better way?
result = self.wsgiapp(environ, start_response)
assert hasattr(result, "__iter__")