summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYAMADA Hideki <yamada.hideki@po.ntts.co.jp>2014-06-17 13:42:22 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2014-06-18 00:39:00 +0900
commit6650a97d8d03b2511e4132cb634a2bcd762ba409 (patch)
tree903bc58309542a2fbb449bf39732d17244d5fbfa
parente1cd4325ebb7d359a8340b72b839f103d2255da1 (diff)
ws_topology: Handle WebSocket disconnection
Signed-off-by: YAMADA Hideki <yamada.hideki@po.ntts.co.jp> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/app/ws_topology.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/ryu/app/ws_topology.py b/ryu/app/ws_topology.py
index d2f4257c..7840da0d 100644
--- a/ryu/app/ws_topology.py
+++ b/ryu/app/ws_topology.py
@@ -34,6 +34,7 @@ $ sudo mn --controller=remote --topo linear,2
...
"""
+from socket import error as SocketError
from tinyrpc.exc import InvalidReplyError
from ryu.app.wsgi import (
@@ -88,6 +89,9 @@ class WebSocketTopology(app_manager.RyuApp):
rpc_server = rpc_client.get_proxy()
try:
getattr(rpc_server, func_name)(msg)
+ except SocketError:
+ self.logger.debug('WebSocket disconnected: %s' % rpc_client.ws)
+ self.rpc_clients.remove(rpc_client)
except InvalidReplyError as e:
self.logger.error(e)