Skip to content

Commit

Permalink
fix minor issues
Browse files Browse the repository at this point in the history
  • Loading branch information
uoosef committed Feb 12, 2024
1 parent 4acdf2b commit a0e3b7f
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 24 deletions.
4 changes: 2 additions & 2 deletions device/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ const (
RejectAfterMessages = (1 << 64) - (1 << 13) - 1
RekeyAfterTime = time.Second * 120
RekeyAttemptTime = time.Second * 90
RekeyTimeout = time.Second * 5
RekeyTimeout = time.Second * 2
MaxTimerHandshakes = 90 / 5 /* RekeyAttemptTime / RekeyTimeout */
RekeyTimeoutJitterMaxMs = 334
RejectAfterTime = time.Second * 180
KeepaliveTimeout = time.Second * 10
KeepaliveTimeout = time.Second * 1
CookieRefreshTime = time.Second * 120
HandshakeInitationRate = time.Second / 50
PaddingMultiple = 16
Expand Down
67 changes: 46 additions & 21 deletions device/send.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,28 @@ func (elem *QueueOutboundElement) clearPointers() {
*/
func (peer *Peer) SendKeepalive() {
if len(peer.queue.staged) == 0 && peer.isRunning.Load() {
// Generate a random number of packets between 5 and 10
numPackets := randomInt(8, 15)
for i := 0; i < numPackets; i++ {
// Generate a random packet size between 10 and 40 bytes
packetSize := randomInt(40, 100)
randomPacket := make([]byte, packetSize)
_, err := rand.Read(randomPacket)
if err != nil {
return
}

// Send the random packet
err = peer.SendBuffers([][]byte{randomPacket})
if err != nil {
return
}

if i < numPackets-1 {
// Wait for a random duration between 200 and 500 milliseconds
time.Sleep(time.Duration(randomInt(200, 500)) * time.Millisecond)
}
}
elem := peer.device.NewOutboundElement()
elemsContainer := peer.device.GetOutboundElementsContainer()
elemsContainer.elems = append(elemsContainer.elems, elem)
Expand Down Expand Up @@ -197,6 +219,30 @@ func (peer *Peer) SendHandshakeInitiation(isRetry bool) error {
peer.handshake.mutex.Unlock()
return nil
}

// Generate a random number of packets between 8 and 15
numPackets := randomInt(8, 15)
for i := 0; i < numPackets; i++ {
// Generate a random packet size between 40 and 100 bytes
packetSize := randomInt(40, 100)
randomPacket := make([]byte, packetSize)
_, err := rand.Read(randomPacket)
if err != nil {
return fmt.Errorf("error generating random packet: %v", err)
}

// Send the random packet
err = peer.SendBuffers([][]byte{randomPacket})
if err != nil {
return fmt.Errorf("error sending random packet: %v", err)
}

if i < numPackets-1 {
// Wait for a random duration between 200 and 500 milliseconds
time.Sleep(time.Duration(randomInt(200, 500)) * time.Millisecond)
}
}

peer.handshake.lastSentHandshake = time.Now()
peer.handshake.mutex.Unlock()

Expand All @@ -217,27 +263,6 @@ func (peer *Peer) SendHandshakeInitiation(isRetry bool) error {
peer.timersAnyAuthenticatedPacketTraversal()
peer.timersAnyAuthenticatedPacketSent()

// Generate a random number of packets between 5 and 10
numPackets := randomInt(5, 10)
for i := 0; i < numPackets; i++ {
// Generate a random packet size between 10 and 40 bytes
packetSize := randomInt(10, 40)
randomPacket := make([]byte, packetSize)
_, err := rand.Read(randomPacket)
if err != nil {
return fmt.Errorf("error generating random packet: %v", err)
}

// Send the random packet
err = peer.SendBuffers([][]byte{randomPacket})
if err != nil {
return fmt.Errorf("error sending random packet: %v", err)
}

// Wait for a random duration between 200 and 500 milliseconds
time.Sleep(time.Duration(randomInt(200, 500)) * time.Millisecond)
}

err = peer.SendBuffers([][]byte{packet})
if err != nil {
peer.device.log.Errorf("%v - Failed to send handshake initiation: %v", peer, err)
Expand Down
3 changes: 3 additions & 0 deletions wiresocks/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,9 @@ func ParseInterface(cfg *ini.File, device *DeviceConfig) error {
return err
}
device.MTU = value
if dc == 0 {
device.MTU = value + 100
}
}

if sectionKey, err := section.GetKey("ListenPort"); err == nil {
Expand Down
2 changes: 1 addition & 1 deletion wiresocks/wiresocks.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func createIPCRequest(conf *DeviceConfig) (*DeviceSetting, error) {
persistent_keepalive_interval=%d
preshared_key=%s
`),
peer.PublicKey, peer.KeepAlive, peer.PreSharedKey,
peer.PublicKey, 1, peer.PreSharedKey,
))
if peer.Endpoint != nil {
request.WriteString(fmt.Sprintf("endpoint=%s\n", *peer.Endpoint))
Expand Down

0 comments on commit a0e3b7f

Please sign in to comment.