]> git.sesse.net Git - cubemap/blobdiff - udpinput.cpp
Allow (and forward) zero-byte UDP packets.
[cubemap] / udpinput.cpp
index 93eaaa76801c0dbab7383e2e7b8902b5fd408ea0..4b421a3e4fe90c91732a7a24c53adc476175fd7d 100644 (file)
@@ -11,7 +11,6 @@
 
 #include "acceptor.h"
 #include "log.h"
-#include "mutexlock.h"
 #include "serverpool.h"
 #include "state.pb.h"
 #include "stream.h"
@@ -113,7 +112,6 @@ UDPInput::UDPInput(const string &url)
 
        construct_header();
 
-       pthread_mutex_init(&stats_mutex, nullptr);
        stats.url = url;
        stats.connect_time = time(nullptr);
 }
@@ -129,7 +127,6 @@ UDPInput::UDPInput(const InputProto &serialized)
 
        construct_header();
 
-       pthread_mutex_init(&stats_mutex, nullptr);
        stats.url = url;
        stats.bytes_received = serialized.bytes_received();
        stats.data_bytes_received = serialized.data_bytes_received();
@@ -213,26 +210,26 @@ void UDPInput::do_work()
                        ret = recv(sock, packet_buf, sizeof(packet_buf), 0);
                } while (ret == -1 && errno == EINTR);
 
-               if (ret <= 0) {
+               if (ret < 0) {  // Note that zero-byte packets are legal.
                        log_perror("recv");
                        close_socket();
                        continue;
                }
 
                {
-                       MutexLock lock(&stats_mutex);
+                       lock_guard<mutex> lock(stats_mutex);
                        stats.bytes_received += ret;
                        stats.data_bytes_received += ret;
                }
        
                for (size_t stream_index : stream_indices) {    
-                       servers->add_data(stream_index, packet_buf, ret, /*metacube_flags=*/0);
+                       servers->add_data(stream_index, packet_buf, ret, /*metacube_flags=*/0, /*pts=*/RationalPTS());
                }
        }
 }
 
 InputStats UDPInput::get_stats() const
 {
-       MutexLock lock(&stats_mutex);
+       lock_guard<mutex> lock(stats_mutex);
        return stats;
 }