summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--ryu/lib/ofctl_v1_0.py8
-rw-r--r--ryu/lib/ofctl_v1_2.py8
-rw-r--r--ryu/lib/ofctl_v1_3.py8
3 files changed, 24 insertions, 0 deletions
diff --git a/ryu/lib/ofctl_v1_0.py b/ryu/lib/ofctl_v1_0.py
index 04b9b7da..939207bc 100644
--- a/ryu/lib/ofctl_v1_0.py
+++ b/ryu/lib/ofctl_v1_0.py
@@ -274,10 +274,18 @@ def send_stats_request(dp, stats, waiters, msgs):
dp.set_xid(stats)
waiters_per_dp = waiters.setdefault(dp.id, {})
lock = hub.Event()
+ previous_msg_len = len(msgs)
waiters_per_dp[stats.xid] = (lock, msgs)
dp.send_msg(stats)
lock.wait(timeout=DEFAULT_TIMEOUT)
+ current_msg_len = len(msgs)
+
+ while current_msg_len > previous_msg_len:
+ previous_msg_len = current_msg_len
+ lock.wait(timeout=DEFAULT_TIMEOUT)
+ current_msg_len = len(msgs)
+
if not lock.is_set():
del waiters_per_dp[stats.xid]
diff --git a/ryu/lib/ofctl_v1_2.py b/ryu/lib/ofctl_v1_2.py
index 37f87924..038bb494 100644
--- a/ryu/lib/ofctl_v1_2.py
+++ b/ryu/lib/ofctl_v1_2.py
@@ -382,10 +382,18 @@ def send_stats_request(dp, stats, waiters, msgs):
dp.set_xid(stats)
waiters_per_dp = waiters.setdefault(dp.id, {})
lock = hub.Event()
+ previous_msg_len = len(msgs)
waiters_per_dp[stats.xid] = (lock, msgs)
dp.send_msg(stats)
lock.wait(timeout=DEFAULT_TIMEOUT)
+ current_msg_len = len(msgs)
+
+ while current_msg_len > previous_msg_len:
+ previous_msg_len = current_msg_len
+ lock.wait(timeout=DEFAULT_TIMEOUT)
+ current_msg_len = len(msgs)
+
if not lock.is_set():
del waiters_per_dp[stats.xid]
diff --git a/ryu/lib/ofctl_v1_3.py b/ryu/lib/ofctl_v1_3.py
index 84902069..5b709f3a 100644
--- a/ryu/lib/ofctl_v1_3.py
+++ b/ryu/lib/ofctl_v1_3.py
@@ -404,10 +404,18 @@ def send_stats_request(dp, stats, waiters, msgs):
dp.set_xid(stats)
waiters_per_dp = waiters.setdefault(dp.id, {})
lock = hub.Event()
+ previous_msg_len = len(msgs)
waiters_per_dp[stats.xid] = (lock, msgs)
dp.send_msg(stats)
lock.wait(timeout=DEFAULT_TIMEOUT)
+ current_msg_len = len(msgs)
+
+ while current_msg_len > previous_msg_len:
+ previous_msg_len = current_msg_len
+ lock.wait(timeout=DEFAULT_TIMEOUT)
+ current_msg_len = len(msgs)
+
if not lock.is_set():
del waiters_per_dp[stats.xid]