mirror of https://git.ffmpeg.org/ffmpeg.git
rtsp: Resend new keepalive commands if they used stale auth
These commands are sent asynchronously, not waiting for the reply. This reply is parsed later by ff_rtsp_tcp_read_packet or udp_read_packet. If the reply indicates that we used stale authentication and need to use a new nonce, resend a new keepalive command immediately. This is the only request sent asynchronously, so currently there's no other command that needs to be resent in the same way. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
2f96cc1fc4
commit
cdf9108b6a
|
@ -335,7 +335,8 @@ retry:
|
|||
rt->packets++;
|
||||
|
||||
/* send dummy request to keep TCP connection alive */
|
||||
if ((av_gettime() - rt->last_cmd_time) / 1000000 >= rt->timeout / 2) {
|
||||
if ((av_gettime() - rt->last_cmd_time) / 1000000 >= rt->timeout / 2 ||
|
||||
rt->auth_state.stale) {
|
||||
if (rt->server_type == RTSP_SERVER_WMS ||
|
||||
(rt->server_type != RTSP_SERVER_REAL &&
|
||||
rt->get_parameter_supported)) {
|
||||
|
@ -343,6 +344,10 @@ retry:
|
|||
} else {
|
||||
ff_rtsp_send_cmd_async(s, "OPTIONS", "*", NULL);
|
||||
}
|
||||
/* The stale flag should be reset when creating the auth response in
|
||||
* ff_rtsp_send_cmd_async, but reset it here just in case we never
|
||||
* called the auth code (if we didn't have any credentials set). */
|
||||
rt->auth_state.stale = 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue