Skip to content

Commit

Permalink
Message size check update
Browse files Browse the repository at this point in the history
  • Loading branch information
zuev committed Jul 28, 2016
1 parent f0feb49 commit 1072f28
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 8 deletions.
7 changes: 1 addition & 6 deletions arachnado/rpc/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,7 @@ class DataRpcWebsocketHandler(RpcWebsocketHandler):
max_msg_size = 2**20

def _send_event(self, data):
message = json_encode(data)
# if message size is higher then ws connection can be dropped without proper message
if sys.getsizeof(message) < self.max_msg_size or not self.max_msg_size:
return super(DataRpcWebsocketHandler, self).write_event(data)
else:
logger.info("Message size exceeded. Message wasn't sent.")
return super(DataRpcWebsocketHandler, self).write_event(data, max_message_size=self.max_msg_size)

def init_heartbeat(self, update_delay):
if update_delay > 0 and not self.heartbeat_data:
Expand Down
8 changes: 6 additions & 2 deletions arachnado/rpc/ws.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import sys
import json
import logging
import six
Expand Down Expand Up @@ -30,13 +31,16 @@ def send_data(self, data):
self.write_event(data)

@gen.coroutine
def write_event(self, data):
def write_event(self, data, max_message_size=0):
if isinstance(data, six.string_types):
message = data
else:
message = json_encode(data)
try:
self.write_message(message)
if sys.getsizeof(message) < max_message_size or not max_message_size:
self.write_message(message)
else:
logger.info("Message size exceeded. Message wasn't sent.")
except websocket.WebSocketClosedError:
pass

Expand Down

0 comments on commit 1072f28

Please sign in to comment.