summaryrefslogtreecommitdiff
path: root/gr-blocks/lib/udp_source_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-blocks/lib/udp_source_impl.cc')
-rw-r--r--gr-blocks/lib/udp_source_impl.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/gr-blocks/lib/udp_source_impl.cc b/gr-blocks/lib/udp_source_impl.cc
index 7f4a2af3d3..5fa06072ae 100644
--- a/gr-blocks/lib/udp_source_impl.cc
+++ b/gr-blocks/lib/udp_source_impl.cc
@@ -85,7 +85,8 @@ namespace gr {
if(host.size() > 0) {
boost::asio::ip::udp::resolver resolver(d_io_service);
boost::asio::ip::udp::resolver::query query(boost::asio::ip::udp::v4(),
- host, s_port);
+ d_host, s_port,
+ boost::asio::ip::resolver_query_base::passive);
d_endpoint = *resolver.resolve(query);
d_socket = new boost::asio::ip::udp::socket(d_io_service);
@@ -113,7 +114,9 @@ namespace gr {
if(!d_connected)
return;
+ d_io_service.reset();
d_io_service.stop();
+ d_udp_thread.join();
d_socket->close();
delete d_socket;
@@ -156,11 +159,11 @@ namespace gr {
// Make sure we never go beyond the boundary of the
// residual buffer. This will just drop the last bit of
// data in the buffer if we've run out of room.
- if((int)(d_residual + bytes_transferred) > (50*d_payload_size)) {
+ if((int)(d_residual + bytes_transferred) >= (50*d_payload_size)) {
GR_LOG_WARN(d_logger, "Too much data; dropping packet.");
}
else {
- // otherwise, copy receid data into local buffer for
+ // otherwise, copy received data into local buffer for
// copying later.
memcpy(d_residbuf+d_residual, d_rxbuf, bytes_transferred);
d_residual += bytes_transferred;