summaryrefslogtreecommitdiffstats
path: root/testing/mochitest/pywebsocket3/README-MOZILLA
blob: e4d3960193819b102d59cbbf2c03664e6b82def1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
This pywebsocket code is mostly unchanged from the source at

  https://github.com/GoogleChromeLabs/pywebsocket3

--------------------------------------------------------------------------------
STEPS TO UPDATE MOZILLA TO NEWER PYWEBSOCKET VERSION
--------------------------------------------------------------------------------
- Get new pywebsocket checkout from googlecode (into, for instance, 'src')

  git clone https://github.com/GoogleChromeLabs/pywebsocket3 pywebsocket-read-only
  cp -r pywebsocket-read-only/mod_pywebsocket testing/mochitest/pywebsocket3

- hg add/rm appropriate files, and add/remove them from
  testing/mochitest/moz.build

- We need to apply the patch to hybi.py that makes HSTS work: (attached at end
  of this README)

- Test and make sure the code works:

    mach mochitest dom/websocket/tests

- If this doesn't take a look at the pywebsocket server log,
  $OBJDIR/_tests/testing/mochitest/websock.log

--------------------------------------------------------------------------------
PATCH TO hybi.py for HSTS support:


diff --git a/testing/mochitest/pywebsocket3/mod_pywebsocket/handshake/hybi.py b/testing/mochitest/pywebsocket3/mod_pywebsocket/handshake/hybi.py
--- a/testing/mochitest/pywebsocket3/mod_pywebsocket/handshake/hybi.py
+++ b/testing/mochitest/pywebsocket3/mod_pywebsocket/handshake/hybi.py
@@ -273,16 +273,19 @@ class Handshaker(object):
                 status=common.HTTP_STATUS_BAD_REQUEST)
         raise VersionException('Unsupported version %r for header %s' %
                                (version, common.SEC_WEBSOCKET_VERSION_HEADER),
                                supported_versions=', '.join(
                                    map(str, _SUPPORTED_VERSIONS)))
 
     def _set_protocol(self):
         self._request.ws_protocol = None
+        # MOZILLA
+        self._request.sts = None
+        # /MOZILLA
 
         protocol_header = self._request.headers_in.get(
             common.SEC_WEBSOCKET_PROTOCOL_HEADER)
 
         if protocol_header is None:
             self._request.ws_requested_protocols = None
             return
 
@@ -371,16 +374,21 @@ class Handshaker(object):
                 format_header(common.SEC_WEBSOCKET_PROTOCOL_HEADER,
                               self._request.ws_protocol))
         if (self._request.ws_extensions is not None
                 and len(self._request.ws_extensions) != 0):
             response.append(
                 format_header(
                     common.SEC_WEBSOCKET_EXTENSIONS_HEADER,
                     common.format_extensions(self._request.ws_extensions)))
+        # MOZILLA
+        if self._request.sts is not None:
+            response.append(format_header("Strict-Transport-Security",
+                                          self._request.sts))
+        # /MOZILLA
 
         # Headers not specific for WebSocket
         for name, value in self._request.extra_headers:
             response.append(format_header(name, value))
 
         response.append(u'\r\n')
 
         return u''.join(response)