X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=cubemap.cpp;h=8dff03b58010e9f2c86a938ff177f64b7a001d24;hp=f6824723e9f6ed8afe86eee9933a3d361ec24c67;hb=99646561978d4ed5be73f90441c5f64c4d64a0dc;hpb=8a8543b685b010c9f7653430e2790e15779657d7 diff --git a/cubemap.cpp b/cubemap.cpp index f682472..8dff03b 100644 --- a/cubemap.cpp +++ b/cubemap.cpp @@ -282,7 +282,7 @@ int main(int argc, char **argv) // Create the servers. servers = new Server[NUM_SERVERS]; - int server_sock; + int server_sock = -1, old_port = -1; if (argc == 4 && strcmp(argv[2], "-state") == 0) { fprintf(stderr, "Deserializing state from previous process... "); int state_fd = atoi(argv[3]); @@ -303,17 +303,27 @@ int main(int argc, char **argv) // Deserialize the server socket. server_sock = loaded_state.server_sock(); + old_port = loaded_state.port(); fprintf(stderr, "done.\n"); - } else { - server_sock = create_server_socket(port); - + } else{ // TODO: This should come from the config file. for (int i = 0; i < NUM_SERVERS; ++i) { servers[i].add_stream(STREAM_ID); } } + // Open a new server socket if we do not already have one, or if we changed ports. + if (server_sock != -1 && port != old_port) { + fprintf(stderr, "NOTE: Port changed from %d to %d; opening new socket.\n", old_port, port); + close(server_sock); + server_sock = -1; + } + if (server_sock == -1) { + server_sock = create_server_socket(port); + } + + // Start up all the servers! for (int i = 0; i < NUM_SERVERS; ++i) { servers[i].run(); } @@ -335,6 +345,7 @@ int main(int argc, char **argv) CubemapStateProto state; state.set_server_sock(server_sock); + state.set_port(port); for (int i = 0; i < NUM_SERVERS; ++i) { servers[i].stop();