{"action":"created","issue":{"url":"https://api.github.com/repos/Pylons/webob/issues/260","repository_url":"https://api.github.com/repos/Pylons/webob","labels_url":"https://api.github.com/repos/Pylons/webob/issues/260/labels{/name}","comments_url":"https://api.github.com/repos/Pylons/webob/issues/260/comments","events_url":"https://api.github.com/repos/Pylons/webob/issues/260/events","html_url":"https://github.com/Pylons/webob/pull/260","id":164425917,"number":260,"title":"Strip whitespace from header value in fset","user":{"login":"invisibleroads","id":266668,"avatar_url":"https://avatars.githubusercontent.com/u/266668?v=3","gravatar_id":"","url":"https://api.github.com/users/invisibleroads","html_url":"https://github.com/invisibleroads","followers_url":"https://api.github.com/users/invisibleroads/followers","following_url":"https://api.github.com/users/invisibleroads/following{/other_user}","gists_url":"https://api.github.com/users/invisibleroads/gists{/gist_id}","starred_url":"https://api.github.com/users/invisibleroads/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/invisibleroads/subscriptions","organizations_url":"https://api.github.com/users/invisibleroads/orgs","repos_url":"https://api.github.com/users/invisibleroads/repos","events_url":"https://api.github.com/users/invisibleroads/events{/privacy}","received_events_url":"https://api.github.com/users/invisibleroads/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2016-07-07T23:00:26Z","updated_at":"2016-07-08T18:40:12Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/Pylons/webob/pulls/260","html_url":"https://github.com/Pylons/webob/pull/260","diff_url":"https://github.com/Pylons/webob/pull/260.diff","patch_url":"https://github.com/Pylons/webob/pull/260.patch"},"body":"When logging out via a template-rendered form (using pyramid.security.forget), it is sometimes possible that the form parameters have trailing whitespace, which triggers this exception on the server.\r\n\r\nThe proposed fix is to strip whitespace before storing the request header.\r\n\r\nThis fix is related to https://github.com/Pylons/webob/commit/c38021642a14616b5eda469e2312082f89b52243\r\n\r\n@bertjwregeer \r\n"},"comment":{"url":"https://api.github.com/repos/Pylons/webob/issues/comments/231439861","html_url":"https://github.com/Pylons/webob/pull/260#issuecomment-231439861","issue_url":"https://api.github.com/repos/Pylons/webob/issues/260","id":231439861,"user":{"login":"invisibleroads","id":266668,"avatar_url":"https://avatars.githubusercontent.com/u/266668?v=3","gravatar_id":"","url":"https://api.github.com/users/invisibleroads","html_url":"https://github.com/invisibleroads","followers_url":"https://api.github.com/users/invisibleroads/followers","following_url":"https://api.github.com/users/invisibleroads/following{/other_user}","gists_url":"https://api.github.com/users/invisibleroads/gists{/gist_id}","starred_url":"https://api.github.com/users/invisibleroads/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/invisibleroads/subscriptions","organizations_url":"https://api.github.com/users/invisibleroads/orgs","repos_url":"https://api.github.com/users/invisibleroads/repos","events_url":"https://api.github.com/users/invisibleroads/events{/privacy}","received_events_url":"https://api.github.com/users/invisibleroads/received_events","type":"User","site_admin":false},"created_at":"2016-07-08T18:40:12Z","updated_at":"2016-07-08T18:40:12Z","body":"```\r\nTraceback (most recent call last):\r\n  File \"/usr/lib64/python2.7/wsgiref/handlers.py\", line 85, in run\r\n    self.result = application(self.environ, self.start_response)\r\n  File \"~/.virtualenvs/xyz/lib/python2.7/site-packages/pyramid/router.py\", line 236, in __call__\r\n    response = self.invoke_subrequest(request, use_tweens=True)\r\n  File \"~/.virtualenvs/xyz/lib/python2.7/site-packages/pyramid/router.py\", line 211, in invoke_subrequest\r\n    response = handle_request(request)\r\n  File \"~/.virtualenvs/xyz/lib/python2.7/site-packages/pyramid/tweens.py\", line 62, in excview_tween\r\n    reraise(*attrs['exc_info'])\r\n  File \"~/.virtualenvs/xyz/lib/python2.7/site-packages/pyramid/tweens.py\", line 22, in excview_tween\r\n    response = handler(request)\r\n  File \"~/.virtualenvs/xyz/lib/python2.7/site-packages/pyramid/router.py\", line 158, in handle_request\r\n    view_name\r\n  File \"~/.virtualenvs/xyz/lib/python2.7/site-packages/pyramid/view.py\", line 547, in _call_view\r\n    response = view_callable(context, request)\r\n  File \"~/.virtualenvs/xyz/lib/python2.7/site-packages/pyramid/viewderivers.py\", line 413, in viewresult_to_response\r\n    result = view(context, request)\r\n  File \"~/.virtualenvs/xyz/lib/python2.7/site-packages/pyramid/viewderivers.py\", line 147, in _requestonly_view\r\n    response = view(request)\r\n  File \"header-with-newline.py\", line 27, in exit_user\r\n    headers=forget(request))\r\n  File \"~/.virtualenvs/xyz/lib/python2.7/site-packages/pyramid/httpexceptions.py\", line 493, in __init__\r\n    body_template=body_template, location=location, **kw)\r\n  File \"~/.virtualenvs/xyz/lib/python2.7/site-packages/pyramid/httpexceptions.py\", line 221, in __init__\r\n    Response.__init__(self, status=status, **kw)\r\n  File \"~/.virtualenvs/xyz/lib/python2.7/site-packages/webob/response.py\", line 153, in __init__\r\n    setattr(self, name, value)\r\n  File \"~/.virtualenvs/xyz/lib/python2.7/site-packages/webob/descriptors.py\", line 142, in fset\r\n    raise ValueError('Header value may not contain control characters')\r\nValueError: Header value may not contain control characters\r\n127.0.0.1 - - [08/Jul/2016 14:34:26] \"GET /users/exit?target_url=%0D%0Ahttps%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DyiQ7S38nKog%0D%0A HTTP/1.1\" 500 59\r\n```\r\n"}}
{"actor":{"display_login":"invisibleroads"}}