X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=main.cpp;h=907be07e93e85c501d7a3f6ee3d8d6ee91e709d0;hp=db3be63f2d05a2cbcff27afa620205b97405f524;hb=32d84e70aa1f1c9cd8334aceac0a617b4a7b4b40;hpb=684496ba9c7def1421d045435b6b92e80bc54c74 diff --git a/main.cpp b/main.cpp index db3be63..907be07 100644 --- a/main.cpp +++ b/main.cpp @@ -19,6 +19,7 @@ #include #include "acceptor.h" +#include "config.h" #include "markpool.h" #include "metacube.h" #include "parse.h" @@ -26,6 +27,7 @@ #include "serverpool.h" #include "input.h" #include "stats.h" +#include "version.h" #include "state.pb.h" using namespace std; @@ -214,7 +216,7 @@ vector create_acceptors( acceptor = deserialized_acceptor_it->second; deserialized_acceptors->erase(deserialized_acceptor_it); } else { - int server_sock = create_server_socket(port); + int server_sock = create_server_socket(port, TCP_SOCKET); acceptor = new Acceptor(server_sock, port); } acceptor->run(); @@ -261,13 +263,19 @@ vector create_inputs(const vector &config, if (input->get_url() != src) { fprintf(stderr, "INFO: Stream '%s' has changed URL from '%s' to '%s', restarting input.\n", stream_id.c_str(), input->get_url().c_str(), src.c_str()); + input->close_socket(); delete input; input = NULL; } deserialized_inputs->erase(deserialized_input_it); } if (input == NULL) { - input = new Input(stream_id, src); + input = create_input(stream_id, src); + if (input == NULL) { + fprintf(stderr, "ERROR: did not understand URL '%s', clients will not get any data.\n", + src.c_str()); + continue; + } } input->run(); inputs.push_back(input); @@ -322,7 +330,7 @@ void create_streams(const vector &config, int main(int argc, char **argv) { - fprintf(stderr, "\nCubemap starting.\n"); + fprintf(stderr, "\nCubemap " SERVER_VERSION " starting.\n"); struct timeval serialize_start; bool is_reexec = false; @@ -358,7 +366,7 @@ int main(int argc, char **argv) for (int i = 0; i < loaded_state.inputs_size(); ++i) { deserialized_inputs.insert(make_pair( loaded_state.inputs(i).stream_id(), - new Input(loaded_state.inputs(i)))); + create_input(loaded_state.inputs(i)))); } // Convert the acceptor from older serialized formats.