summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--ryu/lib/rpc.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/ryu/lib/rpc.py b/ryu/lib/rpc.py
index 57a35bab..d06180e6 100644
--- a/ryu/lib/rpc.py
+++ b/ryu/lib/rpc.py
@@ -115,6 +115,7 @@ class EndPoint(object):
self._notifications = deque()
self._responses = {}
self._incoming = 0 # number of incoming messages in our queues
+ self.closed_by_peer = False
def selectable(self):
rlist = [self._sock]
@@ -142,7 +143,7 @@ class EndPoint(object):
select.select(rlist, wlist, rlist + wlist)
def serve(self):
- while True:
+ while not self.closed_by_peer:
self.block()
self.process()
@@ -182,6 +183,9 @@ class EndPoint(object):
except IOError:
packet = None
if not packet:
+ if packet is not None:
+ # socket closed by peer
+ self.closed_by_peer = True
break
self._encoder.get_and_dispatch_messages(packet, self._table)
return self._incoming > 0