mirror of
https://github.com/amnezia-vpn/amneziawg-go.git
synced 2025-07-28 16:02:50 +02:00
send junk in one batch with other
This commit is contained in:
parent
c1670b484d
commit
ba6bb0bb8f
1 changed files with 11 additions and 12 deletions
|
@ -9,7 +9,6 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
|
@ -125,16 +124,18 @@ func (peer *Peer) SendHandshakeInitiation(isRetry bool) error {
|
||||||
)
|
)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
var sendBuffer [][]byte
|
||||||
// so only packet processed for cookie generation
|
// so only packet processed for cookie generation
|
||||||
var junkedHeader []byte
|
var junkedHeader []byte
|
||||||
if peer.device.isAdvancedSecurityOn() {
|
if peer.device.isAdvancedSecurityOn() {
|
||||||
peer.device.aSecMux.RLock()
|
peer.device.aSecMux.RLock()
|
||||||
err = peer.sendJunkPackets()
|
junks, err := peer.createJunkPackets()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
peer.device.aSecMux.RUnlock()
|
peer.device.aSecMux.RUnlock()
|
||||||
peer.device.log.Errorf("%v - %v", peer, err)
|
peer.device.log.Errorf("%v - %v", peer, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
sendBuffer = append(sendBuffer, junks...)
|
||||||
if peer.device.aSecCfg.initPacketJunkSize != 0 {
|
if peer.device.aSecCfg.initPacketJunkSize != 0 {
|
||||||
buf := make([]byte, 0, peer.device.aSecCfg.initPacketJunkSize)
|
buf := make([]byte, 0, peer.device.aSecCfg.initPacketJunkSize)
|
||||||
writer := bytes.NewBuffer(buf[:0])
|
writer := bytes.NewBuffer(buf[:0])
|
||||||
|
@ -158,7 +159,9 @@ func (peer *Peer) SendHandshakeInitiation(isRetry bool) error {
|
||||||
peer.timersAnyAuthenticatedPacketTraversal()
|
peer.timersAnyAuthenticatedPacketTraversal()
|
||||||
peer.timersAnyAuthenticatedPacketSent()
|
peer.timersAnyAuthenticatedPacketSent()
|
||||||
|
|
||||||
err = peer.SendBuffers([][]byte{junkedHeader})
|
sendBuffer = append(sendBuffer, junkedHeader)
|
||||||
|
|
||||||
|
err = peer.SendBuffers(sendBuffer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
peer.device.log.Errorf(
|
peer.device.log.Errorf(
|
||||||
"%v - Failed to send handshake initiation: %v",
|
"%v - Failed to send handshake initiation: %v",
|
||||||
|
@ -481,9 +484,9 @@ top:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (peer *Peer) sendJunkPackets() error {
|
func (peer *Peer) createJunkPackets() ([][]byte, error) {
|
||||||
if peer.device.aSecCfg.junkPacketCount == 0 {
|
if peer.device.aSecCfg.junkPacketCount == 0 {
|
||||||
return nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
junks := make([][]byte, 0, peer.device.aSecCfg.junkPacketCount)
|
junks := make([][]byte, 0, peer.device.aSecCfg.junkPacketCount)
|
||||||
|
@ -499,15 +502,11 @@ func (peer *Peer) sendJunkPackets() error {
|
||||||
peer,
|
peer,
|
||||||
err,
|
err,
|
||||||
)
|
)
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
junks = append(junks, junk)
|
junks = append(junks, junk)
|
||||||
}
|
}
|
||||||
err := peer.SendBuffers(junks)
|
return junks, nil
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to send junks: %v", err)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (peer *Peer) FlushStagedPackets() {
|
func (peer *Peer) FlushStagedPackets() {
|
||||||
|
|
Loading…
Add table
Reference in a new issue