tun: windows: registration of write buffer no longer required

This commit is contained in:
Jason A. Donenfeld 2019-07-05 07:54:25 +02:00
parent d8448f8a02
commit 5c3d333f10
2 changed files with 1 additions and 14 deletions

View file

@ -2,8 +2,6 @@
This is an implementation of WireGuard in Go. This is an implementation of WireGuard in Go.
***WARNING:*** This is a work in progress and not ready for prime time, with no official "releases" yet. It is extremely rough around the edges and leaves much to be desired. There are bugs and we are not yet in a position to make claims about its security. Beware.
## Usage ## Usage
Most Linux kernel WireGuard users are used to adding an interface with `ip link add wg0 type wireguard`. With wireguard-go, instead simply run: Most Linux kernel WireGuard users are used to adding an interface with `ip link add wg0 type wireguard`. With wireguard-go, instead simply run:

View file

@ -11,11 +11,11 @@ import (
"io" "io"
"os" "os"
"sync" "sync"
"sync/atomic"
"time" "time"
"unsafe" "unsafe"
"golang.org/x/sys/windows" "golang.org/x/sys/windows"
"golang.zx2c4.com/wireguard/tun/wintun" "golang.zx2c4.com/wireguard/tun/wintun"
) )
@ -42,7 +42,6 @@ type NativeTun struct {
wt *wintun.Wintun wt *wintun.Wintun
tunFileRead *os.File tunFileRead *os.File
tunFileWrite *os.File tunFileWrite *os.File
haveRegisteredWriteBuffer int32
tunLock sync.Mutex tunLock sync.Mutex
close bool close bool
rdBuff *exchgBufRead rdBuff *exchgBufRead
@ -142,7 +141,6 @@ func (tun *NativeTun) openTUN() error {
} }
return err return err
} }
atomic.StoreInt32(&tun.haveRegisteredWriteBuffer, 0)
} }
return nil return nil
} }
@ -321,15 +319,6 @@ func (tun *NativeTun) Flush() error {
return err return err
} }
if atomic.CompareAndSwapInt32(&tun.haveRegisteredWriteBuffer, 0, 1) {
firstSize := (*uint32)(unsafe.Pointer(&tun.wrBuff.data[0]))
saved := *firstSize
*firstSize = 0
// Set the maximum buffer length with an invalid write.
tun.tunFileWrite.Write(tun.wrBuff.data[:])
*firstSize = saved
}
for { for {
_, err = file.Write(tun.wrBuff.data[:tun.wrBuff.offset]) _, err = file.Write(tun.wrBuff.data[:tun.wrBuff.offset])
if err != nil { if err != nil {