It's unsafe to hold a pointer to a row in the IDL across calls to
ovsdb_idl_run() for that IDL.

Signed-off-by: Ben Pfaff <b...@nicira.com>
---
 ovn/controller/ovn-controller.c | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/ovn/controller/ovn-controller.c b/ovn/controller/ovn-controller.c
index fda1534..e571bb5 100644
--- a/ovn/controller/ovn-controller.c
+++ b/ovn/controller/ovn-controller.c
@@ -95,16 +95,15 @@ get_bridge(struct controller_ctx *ctx, const char *name)
 static void
 get_core_config(struct controller_ctx *ctx)
 {
-    const struct ovsrec_open_vswitch *cfg;
-
-    cfg = ovsrec_open_vswitch_first(ctx->ovs_idl);
-    if (!cfg) {
-        VLOG_ERR("No Open_vSwitch row defined.");
-        ovsdb_idl_destroy(ctx->ovs_idl);
-        exit(EXIT_FAILURE);
-    }
-
     while (1) {
+        const struct ovsrec_open_vswitch *cfg;
+        cfg = ovsrec_open_vswitch_first(ctx->ovs_idl);
+        if (!cfg) {
+            VLOG_ERR("No Open_vSwitch row defined.");
+            ovsdb_idl_destroy(ctx->ovs_idl);
+            exit(EXIT_FAILURE);
+        }
+
         const struct ovsrec_bridge *br_int;
         const char *remote, *system_id, *br_int_name;
 
-- 
2.1.3

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to