diff --git a/discord.go b/discord.go index 8ff77b8..8988850 100644 --- a/discord.go +++ b/discord.go @@ -153,10 +153,24 @@ func discordReceivePCM(v *discordgo.VoiceConnection, die chan bool) { OnError("Error decoding opus data", err) continue } + if len(p.PCM) != 960 { + log.Println("Opus size error") + continue + } discordMutex.Lock() - fromDiscordMap[p.SSRC].pcm <- p.PCM[0:480] - fromDiscordMap[p.SSRC].pcm <- p.PCM[480:960] + select { + case fromDiscordMap[p.SSRC].pcm <- p.PCM[0:480]: + default: + log.Println("fromDiscordMap buffer full. Dropping packet") + discordMutex.Unlock() + continue + } + select { + case fromDiscordMap[p.SSRC].pcm <- p.PCM[480:960]: + default: + log.Println("fromDiscordMap buffer full. Dropping packet") + } discordMutex.Unlock() } } diff --git a/main.go b/main.go index 0c2c690..ac36b1c 100644 --- a/main.go +++ b/main.go @@ -9,6 +9,7 @@ import ( "os" "os/signal" "strconv" + "syscall" "time" "github.com/bwmarrin/discordgo" @@ -88,6 +89,12 @@ func main() { log.Fatalln("missing discord cid") } + // Attempt to set the nice value of the process + err := syscall.Setpriority(syscall.PRIO_PROCESS, os.Getpid(), -5) + if err != nil { + log.Println("Unable to set priority. ", err) + } + // DISCORD Setup discord, err := discordgo.New("Bot " + *discordToken) @@ -131,7 +138,7 @@ func main() { tlsConfig.InsecureSkipVerify = true } - mumble, err := gumble.DialWithDialer(new(net.Dialer),*mumbleAddr+":"+strconv.Itoa(*mumblePort),config, &tlsConfig) + mumble, err := gumble.DialWithDialer(new(net.Dialer), *mumbleAddr+":"+strconv.Itoa(*mumblePort), config, &tlsConfig) if err != nil { log.Println(err)