Skip to content

Commit df1750b

Browse files
committed
Merge branch 'development'
2 parents 4321c82 + c7b1467 commit df1750b

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

releases.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,6 @@
1818
0.6.0
1919
- Change order of params 'host' and 'port'
2020
- Add host attribute to server
21+
22+
0.6.1
23+
- Sending data is now thread-safe

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from distutils.command.install import install
1313

1414

15-
VERSION = '0.6.0'
15+
VERSION = '0.6.1'
1616

1717

1818
def get_tag_version():

websocket_server/websocket_server.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,8 @@ class WebSocketHandler(StreamRequestHandler):
219219

220220
def __init__(self, socket, addr, server):
221221
self.server = server
222+
assert not hasattr(self, "_send_lock"), "_send_lock already exists"
223+
self._send_lock = threading.Lock()
222224
if server.key and server.cert:
223225
try:
224226
socket = ssl.wrap_socket(socket, server_side=True, certfile=server.cert, keyfile=server.key)
@@ -321,7 +323,8 @@ def send_close(self, status=CLOSE_STATUS_NORMAL, reason=DEFAULT_CLOSE_REASON):
321323
# Send CLOSE with status & reason
322324
header.append(FIN | OPCODE_CLOSE_CONN)
323325
header.append(payload_length)
324-
self.request.send(header + payload)
326+
with self._send_lock:
327+
self.request.send(header + payload)
325328

326329
def send_text(self, message, opcode=OPCODE_TEXT):
327330
"""
@@ -364,7 +367,8 @@ def send_text(self, message, opcode=OPCODE_TEXT):
364367
raise Exception("Message is too big. Consider breaking it into chunks.")
365368
return
366369

367-
self.request.send(header + payload)
370+
with self._send_lock:
371+
self.request.send(header + payload)
368372

369373
def read_http_headers(self):
370374
headers = {}
@@ -397,7 +401,8 @@ def handshake(self):
397401
return
398402

399403
response = self.make_handshake_response(key)
400-
self.handshake_done = self.request.send(response.encode())
404+
with self._send_lock:
405+
self.handshake_done = self.request.send(response.encode())
401406
self.valid_client = True
402407
self.server._new_client_(self)
403408

0 commit comments

Comments
 (0)