Mercurial > kallithea
changeset 3795:4ed55c851d1c beta
fix broken handling of adding an htsts.
Modifing response/request was having trouble in some redirect cases
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 27 Apr 2013 01:47:56 +0200 |
parents | 222e9432298e |
children | 2b5f94fc3b7a |
files | rhodecode/lib/middleware/https_fixup.py |
diffstat | 1 files changed, 8 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/lib/middleware/https_fixup.py Sat Apr 27 00:40:16 2013 +0200 +++ b/rhodecode/lib/middleware/https_fixup.py Sat Apr 27 01:47:56 2013 +0200 @@ -23,7 +23,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -from pylons.controllers.util import Request from rhodecode.lib.utils2 import str2bool @@ -36,15 +35,15 @@ def __call__(self, environ, start_response): self.__fixup(environ) debug = str2bool(self.config.get('debug')) - if str2bool(self.config.get('use_htsts')) and not debug: - req = Request(environ, self.application) - resp = req.get_response(self.application) - if environ['wsgi.url_scheme'] == 'https': - resp.headers['Strict-Transport-Security'] = \ - 'max-age=8640000; includeSubDomains' - return resp(environ, start_response) + is_ssl = environ['wsgi.url_scheme'] == 'https' - return self.application(environ, start_response) + def custom_start_response(status, headers, exc_info=None): + if is_ssl and str2bool(self.config.get('use_htsts')) and not debug: + headers.append(('Strict-Transport-Security', + 'max-age=8640000; includeSubDomains')) + return start_response(status, headers, exc_info) + + return self.application(environ, custom_start_response) def __fixup(self, environ): """