This commit addresses issue #4502 by implementing proper HTTP error handling for WHIP endpoints, allowing clients to receive detailed error information instead of empty responses. Before this change: - WHIP clients received "Empty reply from server" when publish failed - No way to distinguish between different failure reasons After this change: - WHIP clients receive proper HTTP status codes (400/401/409/500) - Error responses include error code and description - Clients can distinguish between SDP errors, stream busy, auth failures, etc. If success: ``` < HTTP/1.1 201 Created < Content-Type: application/sdp < Location: /rtc/v1/whip/?action=delete&token=77h5570j1&app=live&stream=livestream&session=x209e499:TKxW < Content-Length: 1376 < Server: SRS/7.0.120(Kai) < v=0 ...... ``` If request without SDP: ``` curl 'http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream' -v < HTTP/1.1 400 Bad Request < Content-Type: text/plain; charset=utf-8 < Content-Length: 13 < Server: SRS/7.0.120(Kai) < 5043: RtcInvalidSdp ``` If request with corrupt SDP: ``` curl 'http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream' --data-raw $'invalidsdp' -v < HTTP/1.1 400 Bad Request < Content-Type: text/plain; charset=utf-8 < Content-Length: 18 < Server: SRS/7.0.120(Kai) < 5012: RtcSdpDecode ``` If request with insufficient SDP: ``` curl 'http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream' --data-raw $'v=0' -v < HTTP/1.1 400 Bad Request < Content-Type: text/plain; charset=utf-8 < Content-Length: 21 < Server: SRS/7.0.120(Kai) < 5018: RtcSdpNegotiate ``` If publish to a exists stream: ``` < HTTP/1.1 409 Conflict < Content-Type: text/plain; charset=utf-8 < Content-Length: 16 < Server: SRS/7.0.120(Kai) < 1028: StreamBusy ``` If HTTP hooks or security verify failed: ``` < HTTP/1.1 401 Unauthorized < Content-Type: text/plain; charset=utf-8 < Content-Length: 16 < Server: SRS/7.0.120(Kai) < 1102: SystemAuth ``` Other errors, for exmaple, RTC disabled: ``` < HTTP/1.1 500 Internal Server Error < Content-Type: text/plain; charset=utf-8 < Content-Length: 17 < Server: SRS/7.0.120(Kai) < 5021: RtcDisabled ``` --------- Co-authored-by: OSSRS-AI <winlinam@gmail.com> |
||
|---|---|---|
| .. | ||
| 3rdparty | ||
| auto | ||
| cmake | ||
| conf | ||
| doc | ||
| etc/init.d | ||
| gdb | ||
| packaging/redhat | ||
| research | ||
| scripts | ||
| src | ||
| usr/lib/systemd/system | ||
| .gitignore | ||
| AUTHORS.md | ||
| AUTHORS.txt | ||
| configure | ||
| Dockerfile.builds | ||
| Dockerfile.cov | ||
| Dockerfile.pkg | ||
| Dockerfile.test | ||