From 0e4e35a508994820876562ddf083bfc2190a8046 Mon Sep 17 00:00:00 2001 From: lucus Date: Sun, 22 Jan 2017 05:31:42 +0900 Subject: [PATCH] Fix bug handling UDP OTA. --- shadowsocks/udp.go | 1 + shadowsocks/udprelay.go | 1 + 2 files changed, 2 insertions(+) diff --git a/shadowsocks/udp.go b/shadowsocks/udp.go index 898092da..62a55d84 100644 --- a/shadowsocks/udp.go +++ b/shadowsocks/udp.go @@ -92,6 +92,7 @@ func (c *SecurePacketConn) WriteTo(b []byte, dst net.Addr) (n int, err error) { packetLen := len(b) + len(iv) if c.ota { + b[idType] |= OneTimeAuthMask packetLen += lenHmacSha1 key := cipher.key actualHmacSha1Buf := HmacSha1(append(iv, key...), b) diff --git a/shadowsocks/udprelay.go b/shadowsocks/udprelay.go index 37f48589..727efb67 100644 --- a/shadowsocks/udprelay.go +++ b/shadowsocks/udprelay.go @@ -168,6 +168,7 @@ func handleUDPConnection(handle *SecurePacketConn, n int, src net.Addr, receive if addrType&OneTimeAuthMask > 0 { ota = true } + receive[idType] &= ^OneTimeAuthMask compatiblemode := !handle.IsOta() && ota switch addrType & AddrMask {