D2849: hgweb: also set Content-Type header

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

D2849: hgweb: also set Content-Type header

indygreg (Gregory Szorc)
indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  Our HTTP/WSGI server may convert the Content-Type HTTP request
  header to the CONTENT_TYPE WSGI environment key and not set
  HTTP_CONTENT_TYPE. Other WSGI server implementations
  do this, so I think the behavior is acceptable.
 
  So assuming this HTTP request header could get "lost" by the WSGI
  server, let's restore it on the request object like we do for
  Content-Length.
 
  FWIW, the WSGI server may also *invent* a Content-Type value. The
  default behavior of Python's RFC 822 message class returns a default
  media type if Content-Type isn't defined. This is kind of annoying.
  But RFC 7231 section 3.1.1.5 does say the recipient may assume a media
  type of application/octet-stream. Python's defaults are for
  text/plain (given we're using an RFC 822 parser). But whatever.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2849

AFFECTED FILES
  mercurial/hgweb/request.py

CHANGE DETAILS

diff --git a/mercurial/hgweb/request.py b/mercurial/hgweb/request.py
--- a/mercurial/hgweb/request.py
+++ b/mercurial/hgweb/request.py
@@ -325,6 +325,9 @@
     if 'CONTENT_LENGTH' in env and 'HTTP_CONTENT_LENGTH' not in env:
         headers['Content-Length'] = env['CONTENT_LENGTH']
 
+    if 'CONTENT_TYPE' in env and 'HTTP_CONTENT_TYPE' not in env:
+        headers['Content-Type'] = env['CONTENT_TYPE']
+
     bodyfh = env['wsgi.input']
     if 'Content-Length' in headers:
         bodyfh = util.cappedreader(bodyfh, int(headers['Content-Length']))



To: indygreg, #hg-reviewers
Cc: mercurial-devel
_______________________________________________
Mercurial-devel mailing list
[hidden email]
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
Reply | Threaded
Open this post in threaded view
|

D2849: hgweb: also set Content-Type header

indygreg (Gregory Szorc)
indygreg updated this revision to Diff 7137.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D2849?vs=7012&id=7137

REVISION DETAIL
  https://phab.mercurial-scm.org/D2849

AFFECTED FILES
  mercurial/hgweb/request.py

CHANGE DETAILS

diff --git a/mercurial/hgweb/request.py b/mercurial/hgweb/request.py
--- a/mercurial/hgweb/request.py
+++ b/mercurial/hgweb/request.py
@@ -325,6 +325,9 @@
     if 'CONTENT_LENGTH' in env and 'HTTP_CONTENT_LENGTH' not in env:
         headers['Content-Length'] = env['CONTENT_LENGTH']
 
+    if 'CONTENT_TYPE' in env and 'HTTP_CONTENT_TYPE' not in env:
+        headers['Content-Type'] = env['CONTENT_TYPE']
+
     bodyfh = env['wsgi.input']
     if 'Content-Length' in headers:
         bodyfh = util.cappedreader(bodyfh, int(headers['Content-Length']))



To: indygreg, #hg-reviewers
Cc: mercurial-devel
_______________________________________________
Mercurial-devel mailing list
[hidden email]
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
Reply | Threaded
Open this post in threaded view
|

D2849: hgweb: also set Content-Type header

indygreg (Gregory Szorc)
In reply to this post by indygreg (Gregory Szorc)
indygreg updated this revision to Diff 7197.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D2849?vs=7137&id=7197

REVISION DETAIL
  https://phab.mercurial-scm.org/D2849

AFFECTED FILES
  mercurial/hgweb/request.py

CHANGE DETAILS

diff --git a/mercurial/hgweb/request.py b/mercurial/hgweb/request.py
--- a/mercurial/hgweb/request.py
+++ b/mercurial/hgweb/request.py
@@ -298,6 +298,9 @@
     if 'CONTENT_LENGTH' in env and 'HTTP_CONTENT_LENGTH' not in env:
         headers['Content-Length'] = env['CONTENT_LENGTH']
 
+    if 'CONTENT_TYPE' in env and 'HTTP_CONTENT_TYPE' not in env:
+        headers['Content-Type'] = env['CONTENT_TYPE']
+
     bodyfh = env['wsgi.input']
     if 'Content-Length' in headers:
         bodyfh = util.cappedreader(bodyfh, int(headers['Content-Length']))



To: indygreg, #hg-reviewers, durin42
Cc: mercurial-devel
_______________________________________________
Mercurial-devel mailing list
[hidden email]
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
Reply | Threaded
Open this post in threaded view
|

D2849: hgweb: also set Content-Type header

indygreg (Gregory Szorc)
In reply to this post by indygreg (Gregory Szorc)
This revision was automatically updated to reflect the committed changes.
Closed by commit rHG55e901396005: hgweb: also set Content-Type header (authored by indygreg, committed by ).

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D2849?vs=7197&id=7225

REVISION DETAIL
  https://phab.mercurial-scm.org/D2849

AFFECTED FILES
  mercurial/hgweb/request.py

CHANGE DETAILS

diff --git a/mercurial/hgweb/request.py b/mercurial/hgweb/request.py
--- a/mercurial/hgweb/request.py
+++ b/mercurial/hgweb/request.py
@@ -298,6 +298,9 @@
     if 'CONTENT_LENGTH' in env and 'HTTP_CONTENT_LENGTH' not in env:
         headers['Content-Length'] = env['CONTENT_LENGTH']
 
+    if 'CONTENT_TYPE' in env and 'HTTP_CONTENT_TYPE' not in env:
+        headers['Content-Type'] = env['CONTENT_TYPE']
+
     bodyfh = env['wsgi.input']
     if 'Content-Length' in headers:
         bodyfh = util.cappedreader(bodyfh, int(headers['Content-Length']))



To: indygreg, #hg-reviewers, durin42
Cc: mercurial-devel
_______________________________________________
Mercurial-devel mailing list
[hidden email]
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel