From 8eaa2dd2b44600899d406e3a635c123d3ea451c2 Mon Sep 17 00:00:00 2001
From: Josh Blum <josh@joshknows.com>
Date: Thu, 15 Aug 2013 11:46:32 -0700
Subject: usrp2: try/catch for first send of discovery routine

This send can fail with a network down/unreachable error.
The try/catch allows for discovery to continue.
---
 host/lib/usrp/usrp2/usrp2_impl.cpp | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

(limited to 'host/lib/usrp')

diff --git a/host/lib/usrp/usrp2/usrp2_impl.cpp b/host/lib/usrp/usrp2/usrp2_impl.cpp
index 21f166aa1..3afb3aac7 100644
--- a/host/lib/usrp/usrp2/usrp2_impl.cpp
+++ b/host/lib/usrp/usrp2/usrp2_impl.cpp
@@ -103,7 +103,18 @@ static device_addrs_t usrp2_find(const device_addr_t &hint_){
     usrp2_ctrl_data_t ctrl_data_out = usrp2_ctrl_data_t();
     ctrl_data_out.proto_ver = uhd::htonx<boost::uint32_t>(USRP2_FW_COMPAT_NUM);
     ctrl_data_out.id = uhd::htonx<boost::uint32_t>(USRP2_CTRL_ID_WAZZUP_BRO);
-    udp_transport->send(boost::asio::buffer(&ctrl_data_out, sizeof(ctrl_data_out)));
+    try
+    {
+        udp_transport->send(boost::asio::buffer(&ctrl_data_out, sizeof(ctrl_data_out)));
+    }
+    catch(const std::exception &ex)
+    {
+        UHD_MSG(error) << "USRP2 Network discovery error " << ex.what() << std::endl;
+    }
+    catch(...)
+    {
+        UHD_MSG(error) << "USRP2 Network discovery unknown error " << std::endl;
+    }
 
     //loop and recieve until the timeout
     boost::uint8_t usrp2_ctrl_data_in_mem[udp_simple::mtu]; //allocate max bytes for recv
-- 
cgit v1.2.3