From e09631edf158b2013e944468992f282cf445b382 Mon Sep 17 00:00:00 2001 From: Sven Schwermer Date: Tue, 1 Apr 2025 20:40:41 +0200 Subject: [PATCH] Fix CoAP ping response over unreliable transport As per RFC 7252, the CoAP ping (empty, confirmable message) must be responded to with a reset message. Resolves #603 --- udp/client/conn.go | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/udp/client/conn.go b/udp/client/conn.go index 6e1703c4..184249df 100644 --- a/udp/client/conn.go +++ b/udp/client/conn.go @@ -646,15 +646,9 @@ func (cc *Conn) sendPong(w *responsewriter.ResponseWriter[*Conn], r *pool.Messag if err := w.SetResponse(codes.Empty, message.TextPlain, nil); err != nil { cc.errors(fmt.Errorf("cannot send pong response: %w", err)) } - if r.Type() == message.Confirmable { - w.Message().SetType(message.Acknowledgement) - w.Message().SetMessageID(r.MessageID()) - } else { - if w.Message().Type() != message.Reset { - w.Message().SetType(message.NonConfirmable) - } - w.Message().SetMessageID(cc.GetMessageID()) - } + w.Message().SetType(message.Reset) + w.Message().SetMessageID(r.MessageID()) + } func (cc *Conn) handle(w *responsewriter.ResponseWriter[*Conn], m *pool.Message) {