Skip to content

Commit f2d28ad

Browse files
better handling of packets with no data
1 parent 1777c52 commit f2d28ad

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

socketio/packet.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,9 @@ def decode(self, encoded_packet):
8888
self.namespace = None
8989
self.data = None
9090
ep = ep[1:]
91-
dash = (ep + '-').find('-')
91+
dash = ep.find('-')
9292
attachment_count = 0
93-
if ep[0:dash].isdigit():
93+
if dash > 0 and ep[0:dash].isdigit():
9494
attachment_count = int(ep[0:dash])
9595
ep = ep[dash + 1:]
9696
if ep and ep[0:1] == '/':
@@ -106,7 +106,7 @@ def decode(self, encoded_packet):
106106
self.namespace = self.namespace[0:q]
107107
if ep and ep[0].isdigit():
108108
self.id = 0
109-
while ep[0].isdigit():
109+
while ep and ep[0].isdigit():
110110
self.id = self.id * 10 + int(ep[0])
111111
ep = ep[1:]
112112
if ep:

tests/test_packet.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,18 @@ def test_decode_id(self):
146146
self.assertEqual(pkt.id, 123)
147147
self.assertEqual(pkt.encode(), '2123["foo"]')
148148

149+
def test_encode_id_no_data(self):
150+
pkt = packet.Packet(packet_type=packet.EVENT, id=123)
151+
self.assertEqual(pkt.id, 123)
152+
self.assertIsNone(pkt.data)
153+
self.assertEqual(pkt.encode(), '2123')
154+
155+
def test_decode_id_no_data(self):
156+
pkt = packet.Packet(encoded_packet='2123')
157+
self.assertEqual(pkt.id, 123)
158+
self.assertIsNone(pkt.data)
159+
self.assertEqual(pkt.encode(), '2123')
160+
149161
def test_encode_namespace_and_id(self):
150162
pkt = packet.Packet(packet_type=packet.EVENT,
151163
data=[six.text_type('foo')], namespace='/bar',

0 commit comments

Comments
 (0)