aboutsummaryrefslogtreecommitdiffstats
path: root/tun/tun_windows.go
diff options
context:
space:
mode:
Diffstat (limited to 'tun/tun_windows.go')
-rw-r--r--tun/tun_windows.go32
1 files changed, 17 insertions, 15 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
- }
+ 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 {