]> git.sesse.net Git - cubemap/blobdiff - main.cpp
Add rudimentary README.
[cubemap] / main.cpp
index db3be63f2d05a2cbcff27afa620205b97405f524..907be07e93e85c501d7a3f6ee3d8d6ee91e709d0 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -19,6 +19,7 @@
 #include <set>
 
 #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<Acceptor *> 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<Input *> create_inputs(const vector<ConfigLine> &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<ConfigLine> &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.