diff --git a/xCAT-nbroot/overlay/bin/dodestiny b/xCAT-nbroot/overlay/bin/dodestiny
index 988a9abc6..c994ac2e2 100755
--- a/xCAT-nbroot/overlay/bin/dodestiny
+++ b/xCAT-nbroot/overlay/bin/dodestiny
@@ -70,10 +70,15 @@ while :; do
         echo "<serial>$SERIAL</serial>"
       fi
       echo "</xcatrequest>" ) > /tmp/discout
-      cat /tmp/discout | udpcat.awk $XCATMASTER $XCATPORT
-      usleep 5000000 #Give the preferred method 5 seconds to complete before resorting
-      cat /tmp/discout | udpcat.awk `cat /tmp/dhcpserver` $XCATPORT
-      usleep 25000000
+      cat /tmp/discout | udpcat.awk $XCATMASTER $XCATPORT & #can't figure out how to make a hung gawk behave..
+      if usleep 8000000 #Give the preferred method 5 seconds to complete before resorting
+      then
+        #if usleep succeeded, that means it wasn't killed and therefore, no answer yet
+        killall udpcat.awk #reap hung ones
+        cat /tmp/discout | udpcat.awk `cat /tmp/dhcpserver` $XCATPORT &
+        usleep 8000000
+      fi
+      killall udpcat.awk #reap hung ones
     done
     #Discovery complete, restart requested.
     exec /bin/restart