Skip to content

failed to read packet #6

@Lepterion

Description

@Lepterion

Describe the bug
Calling UDPConn.ReadPacket() consistently fails when reading from a Discord voice UDP connection. The method almost never successfully reads a packet once the connection is opened.

Error
The following error is logged on every call to ReadPacket():

failed to read packet: read udp 192.168.0.108:61986->34.0.245.81:50006: wsarecv: A message sent on a datagram socket was larger than the internal message buffer or some other network limit, or the buffer used to receive a datagram into was smaller than the datagram itself.

To Reproduce

  1. Create a voice connection using VoiceManager.CreateConn.
  2. Open the voice connection and set the speaking flag.
  3. Continuously read packets from the voice UDP connection in a goroutine using UDPConn.ReadPacket().
vs := global.Session.VoiceManager.CreateConn(guildID)

err := vs.Open(ctx, channelID, false, false)
if err != nil {
	return fmt.Errorf("failed to open voice connection: %w", err)
}

err = vs.SetSpeaking(ctx, voice.SpeakingFlagMicrophone)
if err != nil {
	return fmt.Errorf("failed to set speaking: %w", err)
}

go func() {
	for {
		_, err := vs.UDP().ReadPacket() // this fails
		if err != nil {
			slog.Error("error reading voice packet", "error", err)
			continue
		}
	}
}()

Expected behavior
UDPConn.ReadPacket() should successfully read incoming UDP voice packets once the voice connection is established.

Disgo Version:

  • v0.19.0-rc.12
  • go 1.25.3 windows/amd64

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions