Add default timeout for do_barrier

And check the result do_barrier in all calls.
diff --git a/src/python/oftest/controller.py b/src/python/oftest/controller.py
index debff35..70b3aad 100644
--- a/src/python/oftest/controller.py
+++ b/src/python/oftest/controller.py
@@ -111,6 +111,7 @@
         self.port = port
         self.dbg_state = "init"
         self.logger = logging.getLogger("controller")
+        self.barrier_to = 15 # Barrier timeout default value; add to config
 
         # Transaction and message type waiting variables 
         #   xid_cv: Condition variable (semaphore) for packet waiters
@@ -161,7 +162,7 @@
                 self.parse_errors += 1
                 return
             if hdr.length == 0:
-                self.logger.info("Header length is zero")
+                self.logger.error("Header length is zero; out of sync")
                 self.parse_errors += 1
                 return
 
@@ -287,7 +288,8 @@
                 return False
 
             if len(pkt) == 0:
-                self.logger.warning("Zero-length switch read")
+                self.logger.warning("Zero-length switch read; closing cxn")
+                return True
 
             self._pkt_handle(pkt)
         else:
@@ -501,7 +503,7 @@
 
         return (msg, pkt)
 
-    def transact(self, msg, timeout=None, zero_xid=False):
+    def transact(self, msg, timeout=-1, zero_xid=False):
         """
         Run a message transaction with the switch
 
@@ -520,15 +522,19 @@
         if not zero_xid and msg.header.xid == 0:
             msg.header.xid = gen_xid()
 
+        if timeout == -1:
+            timeout = self.barrier_to
+        self.logger.debug("Running transaction %d" % msg.header.xid)
         self.xid_cv.acquire()
         if self.xid:
             self.xid_cv.release()
             self.logger.error("Can only run one transaction at a time")
-            return None
+            return (None, None)
 
         self.xid = msg.header.xid
         self.xid_response = None
         self.message_send(msg.pack())
+        self.logger.debug("Waiting for transaction %d" % msg.header.xid)
         self.xid_cv.wait(timeout)
         if self.xid_response:
             (resp, pkt) = self.xid_response