aboutsummaryrefslogtreecommitdiffstats
path: root/libpathod/language.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2015-04-22 09:31:22 +1200
committerAldo Cortesi <aldo@nullcube.com>2015-04-22 09:31:22 +1200
commit65f04bf4d103ea7ab9307946ccc11a17de51d93f (patch)
treebe14bef6100292f3bf2dde7d351dc5526212598f /libpathod/language.py
parentb66be24149f46b5c2b31d2f0f5f0b3842567b115 (diff)
downloadmitmproxy-65f04bf4d103ea7ab9307946ccc11a17de51d93f.tar.gz
mitmproxy-65f04bf4d103ea7ab9307946ccc11a17de51d93f.tar.bz2
mitmproxy-65f04bf4d103ea7ab9307946ccc11a17de51d93f.zip
First-pass websocket client handshake
Diffstat (limited to 'libpathod/language.py')
-rw-r--r--libpathod/language.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/libpathod/language.py b/libpathod/language.py
index b7b95ed8..29d2ade8 100644
--- a/libpathod/language.py
+++ b/libpathod/language.py
@@ -7,7 +7,7 @@ import time
import copy
import abc
import contrib.pyparsing as pp
-from netlib import http_status, tcp, http_uastrings
+from netlib import http_status, tcp, http_uastrings, websockets
import utils
@@ -1006,6 +1006,13 @@ class Request(_Message):
def resolve(self, settings, **kwargs):
tokens = self.tokens[:]
+ if self.method.string().lower() == "ws":
+ tokens[0] = Method("get")
+ for i in websockets.client_handshake_headers().lst:
+ if not utils.get_header(i[0], self.headers):
+ tokens.append(
+ Header(ValueLiteral(i[0]), ValueLiteral(i[1]))
+ )
if not self.raw:
if not utils.get_header("Content-Length", self.headers):
if self.body:
@@ -1063,7 +1070,7 @@ class WebsocketFrame(_Message):
atom = pp.MatchFirst(parts)
resp = pp.And(
[
- pp.Literal("ws"),
+ pp.Literal("wf"),
Sep,
pp.ZeroOrMore(Sep + atom)
]