Fix receiving voice after client sets extended header bit (#428)
This commit is contained in:
parent
308d058bf1
commit
3c8a0dd940
1 changed files with 6 additions and 1 deletions
7
voice.go
7
voice.go
|
@ -799,7 +799,7 @@ func (v *VoiceConnection) opusReceiver(udpConn *net.UDPConn, close <-chan struct
|
||||||
}
|
}
|
||||||
|
|
||||||
// For now, skip anything except audio.
|
// For now, skip anything except audio.
|
||||||
if rlen < 12 || recvbuf[0] != 0x80 {
|
if rlen < 12 || (recvbuf[0] != 0x80 && recvbuf[0] != 0x90) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -813,6 +813,11 @@ func (v *VoiceConnection) opusReceiver(udpConn *net.UDPConn, close <-chan struct
|
||||||
copy(nonce[:], recvbuf[0:12])
|
copy(nonce[:], recvbuf[0:12])
|
||||||
p.Opus, _ = secretbox.Open(nil, recvbuf[12:rlen], &nonce, &v.op4.SecretKey)
|
p.Opus, _ = secretbox.Open(nil, recvbuf[12:rlen], &nonce, &v.op4.SecretKey)
|
||||||
|
|
||||||
|
if len(p.Opus) > 8 && recvbuf[0] == 0x90 {
|
||||||
|
// Extension bit is set, first 8 bytes is the extended header
|
||||||
|
p.Opus = p.Opus[8:]
|
||||||
|
}
|
||||||
|
|
||||||
if c != nil {
|
if c != nil {
|
||||||
select {
|
select {
|
||||||
case c <- &p:
|
case c <- &p:
|
||||||
|
|
Loading…
Reference in a new issue