diff options
Diffstat (limited to 'wsgitools')
-rw-r--r-- | wsgitools/scgi/asynchronous.py | 4 | ||||
-rw-r--r-- | wsgitools/scgi/forkpool.py | 8 |
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__") |