Hello community,

here is the log from the commit of package python-ryu for openSUSE:Factory 
checked in at 2019-05-17 23:43:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ryu (Old)
 and      /work/SRC/openSUSE:Factory/.python-ryu.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-ryu"

Fri May 17 23:43:35 2019 rev:4 rq:703560 version:4.32

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ryu/python-ryu.changes    2019-05-07 
23:19:35.357000625 +0200
+++ /work/SRC/openSUSE:Factory/.python-ryu.new.5148/python-ryu.changes  
2019-05-17 23:43:37.269897723 +0200
@@ -1,0 +2,6 @@
+Thu May 16 20:58:54 UTC 2019 - Hardik Italia <[email protected]>
+
+- Version update to 4.32 
+  * app/ofctl: fix possible deadlock
+
+-------------------------------------------------------------------

Old:
----
  ryu-4.31.tar.gz

New:
----
  ryu-4.32.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-ryu.spec ++++++
--- /var/tmp/diff_new_pack.E4Wfff/_old  2019-05-17 23:43:38.009897317 +0200
+++ /var/tmp/diff_new_pack.E4Wfff/_new  2019-05-17 23:43:38.013897315 +0200
@@ -18,7 +18,7 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-ryu
-Version:        4.31
+Version:        4.32
 Release:        0
 Summary:        Component-based Software-defined Networking Framework
 License:        Apache-2.0

++++++ ryu-4.31.tar.gz -> ryu-4.32.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ryu-4.31/ChangeLog new/ryu-4.32/ChangeLog
--- old/ryu-4.31/ChangeLog      2019-04-01 14:48:45.000000000 +0200
+++ new/ryu-4.32/ChangeLog      2019-05-07 15:13:08.000000000 +0200
@@ -1,6 +1,8 @@
 CHANGES
 =======
 
+* Ryu 4.32
+* app/ofctl: fix possible deadlock
 * Ryu 4.31
 * Choose the highest TLS version
 * Ryu 4.30
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ryu-4.31/PKG-INFO new/ryu-4.32/PKG-INFO
--- old/ryu-4.31/PKG-INFO       2019-04-01 14:48:47.000000000 +0200
+++ new/ryu-4.32/PKG-INFO       2019-05-07 15:13:10.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: ryu
-Version: 4.31
+Version: 4.32
 Summary: Component-based Software-defined Networking Framework
 Home-page: http://osrg.github.io/ryu/
 Author: Ryu project team
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ryu-4.31/ryu/__init__.py new/ryu-4.32/ryu/__init__.py
--- old/ryu-4.31/ryu/__init__.py        2019-04-01 14:41:06.000000000 +0200
+++ new/ryu-4.32/ryu/__init__.py        2019-05-07 15:12:52.000000000 +0200
@@ -14,5 +14,5 @@
 # limitations under the License.
 
 
-version_info = (4, 31)
+version_info = (4, 32)
 version = '.'.join(map(str, version_info))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ryu-4.31/ryu/app/ofctl/service.py 
new/ryu-4.32/ryu/app/ofctl/service.py
--- old/ryu-4.31/ryu/app/ofctl/service.py       2018-09-26 08:34:16.000000000 
+0200
+++ new/ryu-4.32/ryu/app/ofctl/service.py       2019-04-09 13:27:31.000000000 
+0200
@@ -64,6 +64,22 @@
             self.unobserve_event(ev_cls)
             self.logger.debug('ofctl: stop observing %s', ev_cls)
 
+    def _cancel(self, info, barrier_xid, exception):
+        xid = info.barriers.pop(barrier_xid)
+        req = info.xids.pop(xid)
+        msg = req.msg
+        datapath = msg.datapath
+        parser = datapath.ofproto_parser
+        is_barrier = isinstance(msg, parser.OFPBarrierRequest)
+
+        info.results.pop(xid)
+
+        if not is_barrier and req.reply_cls is not None:
+            self._unobserve_msg(req.reply_cls)
+
+        self.logger.error('failed to send message <%s>', req.msg)
+        self.reply_to_request(req, event.Reply(exception=exception))
+
     @staticmethod
     def _is_error(msg):
         return (ofp_event.ofp_msg_to_ev_cls(type(msg)) ==
@@ -81,6 +97,9 @@
         self._switches[id] = new_info
         if old_info:
             old_info.datapath.close()
+            for xid in list(old_info.barriers):
+                self._cancel(
+                    old_info, xid, exception.InvalidDatapath(result=id))
 
     @set_ev_cls(ofp_event.EventOFPStateChange, DEAD_DISPATCHER)
     def _handle_dead(self, ev):
@@ -96,6 +115,8 @@
         if info.datapath is datapath:
             self.logger.debug('forget info %s', info)
             self._switches.pop(id)
+            for xid in list(info.barriers):
+                self._cancel(info, xid, exception.InvalidDatapath(result=id))
 
     @set_ev_cls(event.GetDatapathRequest, MAIN_DISPATCHER)
     def _handle_get_datapath(self, req):
@@ -131,15 +152,6 @@
             si.xids[xid] = req
             si.barriers[barrier_xid] = xid
 
-        def _cancel(barrier_xid, exc):
-            xid = si.barriers.pop(barrier_xid)
-            si.results.pop(xid)
-            si.xids.pop(xid)
-            if not is_barrier and req.reply_cls is not None:
-                self._unobserve_msg(req.reply_cls)
-            self.logger.error('failed to send message <%s>', msg)
-            self.reply_to_request(req, event.Reply(exception=exc))
-
         if is_barrier:
             barrier = msg
             datapath.set_xid(barrier)
@@ -152,12 +164,14 @@
             datapath.set_xid(barrier)
             _store_xid(msg.xid, barrier.xid)
             if not datapath.send_msg(msg):
-                return _cancel(barrier.xid,
-                               exception.InvalidDatapath(result=datapath.id))
+                return self._cancel(
+                    si, barrier.xid,
+                    exception.InvalidDatapath(result=datapath.id))
 
         if not datapath.send_msg(barrier):
-            return _cancel(barrier.xid,
-                           exception.InvalidDatapath(result=datapath.id))
+            return self._cancel(
+                si, barrier.xid,
+                exception.InvalidDatapath(result=datapath.id))
 
     @set_ev_cls(ofp_event.EventOFPBarrierReply, MAIN_DISPATCHER)
     def _handle_barrier(self, ev):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ryu-4.31/ryu.egg-info/PKG-INFO 
new/ryu-4.32/ryu.egg-info/PKG-INFO
--- old/ryu-4.31/ryu.egg-info/PKG-INFO  2019-04-01 14:48:45.000000000 +0200
+++ new/ryu-4.32/ryu.egg-info/PKG-INFO  2019-05-07 15:13:08.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: ryu
-Version: 4.31
+Version: 4.32
 Summary: Component-based Software-defined Networking Framework
 Home-page: http://osrg.github.io/ryu/
 Author: Ryu project team
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ryu-4.31/ryu.egg-info/pbr.json 
new/ryu-4.32/ryu.egg-info/pbr.json
--- old/ryu-4.31/ryu.egg-info/pbr.json  2019-04-01 14:48:45.000000000 +0200
+++ new/ryu-4.32/ryu.egg-info/pbr.json  2019-05-07 15:13:08.000000000 +0200
@@ -1 +1 @@
-{"git_version": "050bfbc", "is_release": false}
\ No newline at end of file
+{"git_version": "6456711", "is_release": false}
\ No newline at end of file


Reply via email to