Merge branch 'mainstream'
[sliver-openvswitch.git] / ovsdb / ovsdb-server.c
index 3520ffc..c24d355 100644 (file)
@@ -45,7 +45,6 @@
 #include "shash.h"
 #include "stream-ssl.h"
 #include "stream.h"
-#include "stress.h"
 #include "sset.h"
 #include "table.h"
 #include "timeval.h"
@@ -137,7 +136,7 @@ main(int argc, char *argv[])
 
     proctitle_init(argc, argv);
     set_program_name(argv[0]);
-    stress_init_command();
+    service_start(&argc, &argv);
     signal(SIGPIPE, SIG_IGN);
     process_init();
 
@@ -304,6 +303,9 @@ main(int argc, char *argv[])
         }
         poll_timer_wait_until(status_timer);
         poll_block();
+        if (should_service_stop()) {
+            exiting = true;
+        }
     }
     ovsdb_jsonrpc_server_destroy(jsonrpc);
     SHASH_FOR_EACH(node, &all_dbs) {
@@ -321,6 +323,7 @@ main(int argc, char *argv[])
         }
     }
 
+    service_stop();
     return 0;
 }
 
@@ -532,7 +535,7 @@ get_datum(struct ovsdb_row *row, const char *column_name,
         if (!VLOG_DROP_DBG(&rl)) {
             char *type_name = ovsdb_type_to_english(&column->type);
             VLOG_DBG("Table `%s' column `%s' has type %s, not expected "
-                     "key type %s, value type %s, max elements %zd.",
+                     "key type %s, value type %s, max elements %"PRIuSIZE".",
                      schema->name, column_name, type_name,
                      ovsdb_atomic_type_to_string(key_type),
                      ovsdb_atomic_type_to_string(value_type),
@@ -985,6 +988,7 @@ ovsdb_server_compact(struct unixctl_conn *conn, int argc,
                 char *s = ovsdb_error_to_string(error);
                 ds_put_format(&reply, "%s\n", s);
                 free(s);
+                ovsdb_error_destroy(error);
             }
 
             n++;
@@ -1295,7 +1299,8 @@ save_config__(FILE *config_file, const struct sset *remotes,
     char *s;
 
     if (ftruncate(fileno(config_file), 0) == -1) {
-        VLOG_FATAL("failed to truncate temporary file (%s)", strerror(errno));
+        VLOG_FATAL("failed to truncate temporary file (%s)",
+                   ovs_strerror(errno));
     }
 
     obj = json_object_create();
@@ -1307,7 +1312,7 @@ save_config__(FILE *config_file, const struct sset *remotes,
     if (fseek(config_file, 0, SEEK_SET) != 0
         || fputs(s, config_file) == EOF
         || fflush(config_file) == EOF) {
-        VLOG_FATAL("failed to write temporary file (%s)", strerror(errno));
+        VLOG_FATAL("failed to write temporary file (%s)", ovs_strerror(errno));
     }
     free(s);
 }
@@ -1353,7 +1358,7 @@ load_config(FILE *config_file, struct sset *remotes, struct sset *db_filenames)
     struct json *json;
 
     if (fseek(config_file, 0, SEEK_SET) != 0) {
-        VLOG_FATAL("seek failed in temporary file (%s)", strerror(errno));
+        VLOG_FATAL("seek failed in temporary file (%s)", ovs_strerror(errno));
     }
     json = json_from_stream(config_file);
     if (json->type == JSON_STRING) {