From 78c74a7d832d26a9ad8753b889628b24d3bb9913 Mon Sep 17 00:00:00 2001 From: Andrew Ferguson Date: Mon, 11 Nov 2013 17:19:32 -0500 Subject: [PATCH 1/2] potential fix for switch disconnect during send --- lwt/OpenFlow0x01_Switch.ml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lwt/OpenFlow0x01_Switch.ml b/lwt/OpenFlow0x01_Switch.ml index 2d42310..a4e324d 100644 --- a/lwt/OpenFlow0x01_Switch.ml +++ b/lwt/OpenFlow0x01_Switch.ml @@ -40,7 +40,12 @@ let send_to_switch_fd (sock : file_descr) (xid : xid) (msg : msg) : bool Lwt.t = lwt msg_buf = Lwt.wrap2 Message.marshal xid msg in let msg_len = String.length msg_buf in lwt sent = Lwt_unix.write sock msg_buf 0 msg_len in - Lwt.return (sent = msg_len) + try_lwt + Lwt.return (sent = msg_len) + with Unix.Unix_error (err, fn, arg) -> + Printf.printf "[platform0x01] error sending: %s (in %s)\n%!" + (Unix.error_message err) fn; + Lwt.return (false) let switch_handshake_finish (fd : file_descr) : OF.SwitchFeatures.t option Lwt.t = match_lwt send_to_switch_fd fd 0l Message.SwitchFeaturesRequest with From 962360cb33039982eea03e6c02d88b1b0f554080 Mon Sep 17 00:00:00 2001 From: Andrew Ferguson Date: Sun, 17 Nov 2013 14:16:11 -0500 Subject: [PATCH 2/2] actually place exception-throwing line inside try --- lwt/OpenFlow0x01_Switch.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lwt/OpenFlow0x01_Switch.ml b/lwt/OpenFlow0x01_Switch.ml index a4e324d..b255702 100644 --- a/lwt/OpenFlow0x01_Switch.ml +++ b/lwt/OpenFlow0x01_Switch.ml @@ -39,8 +39,8 @@ let rec recv_from_switch_fd (sock : file_descr) : (xid * msg) option Lwt.t = let send_to_switch_fd (sock : file_descr) (xid : xid) (msg : msg) : bool Lwt.t = lwt msg_buf = Lwt.wrap2 Message.marshal xid msg in let msg_len = String.length msg_buf in - lwt sent = Lwt_unix.write sock msg_buf 0 msg_len in try_lwt + lwt sent = Lwt_unix.write sock msg_buf 0 msg_len in Lwt.return (sent = msg_len) with Unix.Unix_error (err, fn, arg) -> Printf.printf "[platform0x01] error sending: %s (in %s)\n%!"