diff --git a/core-buffer/src/UdpReceiver.cpp b/core-buffer/src/UdpReceiver.cpp index 4b1d3c4..5f5b8b0 100644 --- a/core-buffer/src/UdpReceiver.cpp +++ b/core-buffer/src/UdpReceiver.cpp @@ -51,16 +51,16 @@ void UdpReceiver::bind(const uint16_t port, const size_t usec_timeout) throw runtime_error("Cannot bind socket."); } - struct timeval udp_socket_timeout; - udp_socket_timeout.tv_sec = 0; - udp_socket_timeout.tv_usec = usec_timeout; - - setsockopt( - socket_fd_, - SOL_SOCKET, - SO_RCVTIMEO, - (const char*)&udp_socket_timeout, - sizeof(struct timeval)); +// struct timeval udp_socket_timeout; +// udp_socket_timeout.tv_sec = 0; +// udp_socket_timeout.tv_usec = usec_timeout; +// +// setsockopt( +// socket_fd_, +// SOL_SOCKET, +// SO_RCVTIMEO, +// (const char*)&udp_socket_timeout, +// sizeof(struct timeval)); } int UdpReceiver::receive_many(mmsghdr* msgs, const size_t n_msgs) @@ -70,7 +70,7 @@ int UdpReceiver::receive_many(mmsghdr* msgs, const size_t n_msgs) bool UdpReceiver::receive(void* buffer, size_t buffer_n_bytes) { - auto data_len = recv(socket_fd_, buffer, buffer_n_bytes, 0); + auto data_len = recv(socket_fd_, buffer, buffer_n_bytes, MSG_DONTWAIT); if (data_len < 0) { return false; diff --git a/core-buffer/src/UdpRecvModule.cpp b/core-buffer/src/UdpRecvModule.cpp index e364f3f..b63461a 100644 --- a/core-buffer/src/UdpRecvModule.cpp +++ b/core-buffer/src/UdpRecvModule.cpp @@ -73,6 +73,7 @@ void UdpRecvModule::receive_thread(const uint16_t udp_port) if (!udp_receiver.receive( &packet_buffer, JUNGFRAU_BYTES_PER_PACKET)) { + this_thread::yield(); continue; }