Skip to content

Commit

Permalink
Better handling of connection state
Browse files Browse the repository at this point in the history
  • Loading branch information
miguelgrinberg committed Sep 26, 2015
1 parent 48d999d commit c3715e6
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 7 deletions.
8 changes: 5 additions & 3 deletions engineio/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ def _handle_connect(self, environ, start_response, transport, b64=False):

pkt = packet.Packet(
packet.OPEN, {'sid': sid,
'upgrades': self._upgrades(sid),
'upgrades': self._upgrades(sid, transport),
'pingTimeout': int(self.ping_timeout * 1000),
'pingInterval': int(self.ping_interval * 1000)})
s.send(pkt)
Expand All @@ -280,15 +280,17 @@ def _handle_connect(self, environ, start_response, transport, b64=False):
s.handle_get_request(environ, start_response)
return self._ok()
else:
s.connected = True
headers = None
if self.cookie:
headers = [('Set-Cookie', self.cookie + '=' + sid)]
return self._ok(s.poll(), headers=headers, b64=b64)

def _upgrades(self, sid):
def _upgrades(self, sid, transport):
"""Return the list of possible upgrades for a client connection."""
if not self.allow_upgrades or self._get_socket(sid).upgraded or \
self.async['websocket_class'] is None:
self.async['websocket_class'] is None or \
transport == 'websocket':
return []
return ['websocket']

Expand Down
1 change: 0 additions & 1 deletion engineio/socket.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ def handle_get_request(self, environ, start_response):
self.sid, transport)
return getattr(self, '_upgrade_' + transport)(environ,
start_response)
self.connected = True
try:
packets = self.poll()
except IOError as e:
Expand Down
9 changes: 6 additions & 3 deletions tests/test_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,12 +197,15 @@ def test_close_all_sockets(self):
def test_upgrades(self):
s = server.Server()
s.sockets['foo'] = self._get_mock_socket()
self.assertEqual(s._upgrades('foo'), ['websocket'])
self.assertEqual(s._upgrades('foo', 'polling'), ['websocket'])
self.assertEqual(s._upgrades('foo', 'websocket'), [])
s.sockets['foo'].upgraded = True
self.assertEqual(s._upgrades('foo'), [])
self.assertEqual(s._upgrades('foo', 'polling'), [])
self.assertEqual(s._upgrades('foo', 'websocket'), [])
s.allow_upgrades = False
s.sockets['foo'].upgraded = True
self.assertEqual(s._upgrades('foo'), [])
self.assertEqual(s._upgrades('foo', 'polling'), [])
self.assertEqual(s._upgrades('foo', 'websocket'), [])

def test_transport(self):
s = server.Server()
Expand Down

0 comments on commit c3715e6

Please sign in to comment.