send junk in one batch with other

This commit is contained in:
Mark Puha 2023-09-13 07:57:16 +02:00
parent c1670b484d
commit ba6bb0bb8f

View file

@ -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() {