aboutsummaryrefslogtreecommitdiffstats
path: root/src/send.go
diff options
context:
space:
mode:
authorMathias Hall-Andersen <mathias@hall-andersen.dk>2017-10-16 21:33:47 +0200
committerMathias Hall-Andersen <mathias@hall-andersen.dk>2017-10-16 21:33:47 +0200
commite86d03dca23e5adcbd1c7bd30157bc7d19a932d7 (patch)
tree5792ecf8bad5a76c96033ceeef32a91df7d344b2 /src/send.go
parentAdded new UDPBind interface (diff)
downloadwireguard-go-e86d03dca23e5adcbd1c7bd30157bc7d19a932d7.tar.xz
wireguard-go-e86d03dca23e5adcbd1c7bd30157bc7d19a932d7.zip
Initial implementation of source caching
Yet untested.
Diffstat (limited to 'src/send.go')
-rw-r--r--src/send.go19
1 files changed, 5 insertions, 14 deletions
diff --git a/src/send.go b/src/send.go
index 5c88ead..e37a736 100644
--- a/src/send.go
+++ b/src/send.go
@@ -105,24 +105,15 @@ func addToEncryptionQueue(
}
}
-func (peer *Peer) SendBuffer(buffer []byte) (int, error) {
+func (peer *Peer) SendBuffer(buffer []byte) error {
peer.device.net.mutex.RLock()
defer peer.device.net.mutex.RUnlock()
-
peer.mutex.RLock()
defer peer.mutex.RUnlock()
-
- endpoint := peer.endpoint
- if endpoint == nil {
- return 0, errors.New("No known endpoint for peer")
+ if !peer.endpoint.set {
+ return errors.New("No known endpoint for peer")
}
-
- conn := peer.device.net.conn
- if conn == nil {
- return 0, errors.New("No UDP socket for device")
- }
-
- return conn.WriteToUDP(buffer, endpoint)
+ return peer.device.net.bind.Send(buffer, &peer.endpoint.value)
}
/* Reads packets from the TUN and inserts
@@ -343,7 +334,7 @@ func (peer *Peer) RoutineSequentialSender() {
// send message and return buffer to pool
length := uint64(len(elem.packet))
- _, err := peer.SendBuffer(elem.packet)
+ err := peer.SendBuffer(elem.packet)
device.PutMessageBuffer(elem.buffer)
if err != nil {
logDebug.Println("Failed to send authenticated packet to peer", peer.String())