summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x[-rw-r--r--]gnuradio-core/src/lib/io/gr_udp_sink.cc6
-rwxr-xr-x[-rw-r--r--]gnuradio-core/src/lib/io/gr_udp_source.cc6
2 files changed, 8 insertions, 4 deletions
diff --git a/gnuradio-core/src/lib/io/gr_udp_sink.cc b/gnuradio-core/src/lib/io/gr_udp_sink.cc
index d37adfb8a..a837e731e 100644..100755
--- a/gnuradio-core/src/lib/io/gr_udp_sink.cc
+++ b/gnuradio-core/src/lib/io/gr_udp_sink.cc
@@ -132,8 +132,10 @@ gr_udp_sink::open()
lngr.l_onoff = 1;
lngr.l_linger = 0;
if(setsockopt(d_socket, SOL_SOCKET, SO_LINGER, (optval_t)&lngr, sizeof(linger)) == -1) {
- perror("SO_LINGER");
- throw std::runtime_error("can't set socket option SO_LINGER");
+ if(errno != ENOPROTOOPT) { // no SO_LINGER for SOCK_DGRAM on Windows
+ perror("SO_LINGER");
+ throw std::runtime_error("can't set socket option SO_LINGER");
+ }
}
// bind socket to an address and port number to listen on
diff --git a/gnuradio-core/src/lib/io/gr_udp_source.cc b/gnuradio-core/src/lib/io/gr_udp_source.cc
index d76d0ee32..fed5b6142 100644..100755
--- a/gnuradio-core/src/lib/io/gr_udp_source.cc
+++ b/gnuradio-core/src/lib/io/gr_udp_source.cc
@@ -110,8 +110,10 @@ gr_udp_source::open()
lngr.l_onoff = 1;
lngr.l_linger = 0;
if(setsockopt(d_socket, SOL_SOCKET, SO_LINGER, (optval_t)&lngr, sizeof(linger)) == -1) {
- perror("SO_LINGER");
- throw std::runtime_error("can't set socket option SO_LINGER");
+ if(errno != ENOPROTOOPT) { // no SO_LINGER for SOCK_DGRAM on Windows
+ perror("SO_LINGER");
+ throw std::runtime_error("can't set socket option SO_LINGER");
+ }
}
// Set a timeout on the receive function to not block indefinitely