ofproto: Fix potential leak during flow mods.
[sliver-openvswitch.git] / utilities / ovs-lib.in
index 0b6f42f..48d0c36 100644 (file)
@@ -41,11 +41,6 @@ ovs_ctl_log () {
     echo "$@" >> "${logdir}/ovs-ctl.log"
 }
 
-stdintoexitstatus () {
-    read exitstatus
-    return $exitstatus
-}
-
 ovs_ctl () {
     case "$@" in
         *"=strace"*)
@@ -54,15 +49,21 @@ ovs_ctl () {
             # pipe). So, do not log the o/p to ovs-ctl.log.
             "${datadir}/scripts/ovs-ctl" "$@"
         ;;
+        "status")
+            # In case of the command 'status', we should return the exit status
+            # of ovs-ctl. It is also useful to document the o/p in ovs-ctl.log.
+            display=`"${datadir}/scripts/ovs-ctl" "$@" 2>&1`
+            rc=$?
+            if test -w "${logdir}/ovs-ctl.log"; then
+                 echo "${display}" | tee -a "${logdir}/ovs-ctl.log"
+            else
+                 echo "${display}"
+            fi
+            return ${rc}
+        ;;
         *)
-            # Tee ovs-ctl output to ovs-ctl.log and yield ovs-ctl's exit
-            # status. See (line wrapped)
-            # http://unix.stackexchange.com/questions/14270/\
-            # get-exit-status-of-process-thats-piped-to-another/70675#70675
             echo "`date -u`:$@" >> "${logdir}/ovs-ctl.log"
-            ( ( ( ( ("${datadir}/scripts/ovs-ctl" "$@"  2>&1 ; echo $? >&3) \
-            | tee -a "${logdir}/ovs-ctl.log") >&4) 3>&1) | stdintoexitstatus) \
-            4>&1
+            "${datadir}/scripts/ovs-ctl" "$@" 2>&1 | tee -a "${logdir}/ovs-ctl.log"
         ;;
     esac
 }