From a80db5e65e4c202bae184a32120017782549fdac Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Fri, 22 Mar 2019 12:44:14 +0100 Subject: tun: windows: Make writing persistent too Signed-off-by: Simon Rozman --- tun/tun_windows.go | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) (limited to 'tun') 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 - } + for { + // 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 + // 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 err + return nil } - return nil } func (tun *NativeTun) putTunPacket(buff []byte) error { -- cgit v1.2.3-59-g8ed1b