From a80db5e65e4c202bae184a32120017782549fdac Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Fri, 22 Mar 2019 12:44:14 +0100 Subject: [PATCH] tun: windows: Make writing persistent too Signed-off-by: Simon Rozman --- tun/tun_windows.go | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/tun/tun_windows.go b/tun/tun_windows.go index ce6ec8c..9888e86 100644 --- a/tun/tun_windows.go +++ b/tun/tun_windows.go @@ -284,24 +284,26 @@ func (tun *NativeTun) Flush() error { return nil } - // Get TUN data pipe. - _, file, err := tun.getTUN() - if err != nil { - return err - } - - // Flush write buffer. - _, err = file.Write(tun.wrBuff.data[:tun.wrBuff.offset]) - tun.wrBuff.packetNum = 0 - tun.wrBuff.offset = 0 - if err != nil { - if tun.shouldReopenHandle(err) { - tun.closeTUN() - return nil + for { + // Get TUN data pipe. + _, file, err := tun.getTUN() + if err != nil { + return err } - return err + + // Flush write buffer. + _, err = file.Write(tun.wrBuff.data[:tun.wrBuff.offset]) + tun.wrBuff.packetNum = 0 + tun.wrBuff.offset = 0 + if err != nil { + if tun.shouldReopenHandle(err) { + tun.closeTUN() + continue + } + return err + } + return nil } - return nil } func (tun *NativeTun) putTunPacket(buff []byte) error {