daemon: Allow daemon child process to report success or failure to parent.
[openvswitch] / ovsdb / jsonrpc-server.c
index fc8b194e9ff59b6084182735818e11ab8388f7f5..a8e724a2f32adb178645bb6def996cf8f7e694e0 100644 (file)
@@ -72,7 +72,6 @@ struct ovsdb_jsonrpc_server {
 
     struct list sessions;       /* List of "struct ovsdb_jsonrpc_session"s. */
     unsigned int n_sessions, max_sessions;
-    unsigned int max_triggers;
 
     struct pstream **listeners;
     size_t n_listeners, allocated_listeners;
@@ -84,28 +83,19 @@ ovsdb_jsonrpc_server_create(struct ovsdb *db)
     struct ovsdb_jsonrpc_server *server = xzalloc(sizeof *server);
     server->db = db;
     server->max_sessions = 64;
-    server->max_triggers = 64;
     list_init(&server->sessions);
     return server;
 }
 
-int
-ovsdb_jsonrpc_server_listen(struct ovsdb_jsonrpc_server *svr, const char *name)
+void
+ovsdb_jsonrpc_server_listen(struct ovsdb_jsonrpc_server *svr,
+                            struct pstream *pstream)
 {
-    struct pstream *pstream;
-    int error;
-
-    error = pstream_open(name, &pstream);
-    if (error) {
-        return error;
-    }
-
     if (svr->n_listeners >= svr->allocated_listeners) {
         svr->listeners = x2nrealloc(svr->listeners, &svr->allocated_listeners,
                                     sizeof *svr->listeners);
     }
     svr->listeners[svr->n_listeners++] = pstream;
-    return 0;
 }
 
 void
@@ -330,7 +320,7 @@ ovsdb_jsonrpc_session_run(struct ovsdb_jsonrpc_session *s)
             struct jsonrpc_msg *request;
 
             params = json_array_create_empty();
-            request = jsonrpc_create_request("echo", params);
+            request = jsonrpc_create_request("echo", params, NULL);
             json_destroy(request->id);
             request->id = json_string_create("echo");
             jsonrpc_send(s->rpc, request);
@@ -714,7 +704,9 @@ ovsdb_jsonrpc_monitor_create(struct ovsdb_jsonrpc_session *s,
     return ovsdb_jsonrpc_monitor_get_initial(m);
 
 error:
-    ovsdb_remove_replica(s->server->db, &m->replica);
+    if (m) {
+        ovsdb_remove_replica(s->server->db, &m->replica);
+    }
 
     json = ovsdb_error_to_json(error);
     ovsdb_error_destroy(error);