AlexxIT/go2rtc · error
empty response on RTSP request
Error message
empty response on RTSP request
What it means
RTSP ReadResponse guard: the status line read from the server is an empty string. The server accepted the connection but sent a blank first line — typically a dead/closing connection, a keepalive artifact, or a non-RTSP responder; parsing cannot even begin.
Solutions
- Reconnect and resend the RTSP request; blank lines after socket close are common
- Verify the target actually speaks RTSP on that port
- Check for idle-timeout keepalives (OPTIONS/SETUP with GET_PARAMETER) to prevent server-side closes
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at pkg/tcp/textproto.go:51 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of AlexxIT/go2rtc@c245815e75 (2026-09-07).
Data as JSON: /api/errors/0a0392ccf9c4de7f.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/tcp/textproto.go:51
s += string(r.Body)
}
return s
}
func (r *Response) Write(w io.Writer) (err error) {
_, err = w.Write([]byte(r.String()))
return
}
func ReadResponse(r *bufio.Reader) (*Response, error) {
tp := textproto.NewReader(r)
line, err := tp.ReadLine()
if err != nil {
return nil, err
}
if line == "" {
return nil, errors.New("empty response on RTSP request")
}
ss := strings.SplitN(line, " ", 3)
if len(ss) != 3 {
return nil, fmt.Errorf("malformed response: %s", line)
}
res := &Response{
Status: ss[1] + " " + ss[2],
Proto: ss[0],
}
res.StatusCode, err = strconv.Atoi(ss[1])
if err != nil {
return nil, err
}
res.Header, err = tp.ReadMIMEHeader()View on GitHub (pinned to c245815e75)