fix: return 461 if client requested an invalid transport method

This commit is contained in:
fmcloudconsulting
2024-12-17 17:28:13 +01:00
committed by GitHub
parent 29f7f1a57d
commit fd125ecc68

View File

@@ -150,6 +150,10 @@ func (c *Conn) Accept() error {
const transport = "RTP/AVP/TCP;unicast" const transport = "RTP/AVP/TCP;unicast"
// Test if client requests unicast with TCP transport, otherwise return 461 Transport not supported
// This allows smart clients who initially requested UDP to fall back on TCP transport.
if strings.HasPrefix(tr, transport) {
c.session = core.RandString(8, 10) c.session = core.RandString(8, 10)
c.state = StateSetup c.state = StateSetup
@@ -173,6 +177,9 @@ func (c *Conn) Accept() error {
} else { } else {
res.Header.Set("Transport", tr) res.Header.Set("Transport", tr)
} }
else {
res.Status = "461 Unsupported transport"
}
if err = c.WriteResponse(res); err != nil { if err = c.WriteResponse(res); err != nil {
return err return err