]> git.sesse.net Git - cubemap/blobdiff - udpinput.cpp
Support UDP packets larger than 4 kB.
[cubemap] / udpinput.cpp
index 07bf63d344e8ba6e38d7d8d399acafad3016058c..3e4b9b79c0cd872bcd140401b0f9a7a16238b21f 100644 (file)
@@ -1,7 +1,7 @@
 #include <assert.h>
 #include <errno.h>
 #include <poll.h>
-#include <stdio.h>
+#include <stddef.h>
 #include <stdlib.h>
 #include <sys/socket.h>
 #include <unistd.h>
@@ -67,10 +67,10 @@ void UDPInput::construct_header()
                "Connection: close\r\n";
 }
        
-void UDPInput::add_destination(const string &stream_id)
+void UDPInput::add_destination(int stream_index)
 {
-       stream_ids.push_back(stream_id);
-       servers->set_header(stream_id, http_header, "");
+       stream_indices.push_back(stream_index);
+       servers->set_header(stream_index, http_header, "");
 }
 
 void UDPInput::do_work()
@@ -94,10 +94,9 @@ void UDPInput::do_work()
                        continue;
                }
 
-               char buf[4096];
                int ret;
                do {
-                       ret = recv(sock, buf, sizeof(buf), 0);
+                       ret = recv(sock, packet_buf, sizeof(packet_buf), 0);
                } while (ret == -1 && errno == EINTR);
 
                if (ret <= 0) {
@@ -106,8 +105,8 @@ void UDPInput::do_work()
                        continue;
                }
                
-               for (size_t i = 0; i < stream_ids.size(); ++i) {
-                       servers->add_data(stream_ids[i], buf, ret);
+               for (size_t i = 0; i < stream_indices.size(); ++i) {
+                       servers->add_data(stream_indices[i], packet_buf, ret);
                }
        }
 }