Skip to content

Commit

Permalink
avformat/libsrt: fix checking connection result in non-blocking mode
Browse files Browse the repository at this point in the history
After f8990c5 we properly set non-blocking
mode which makes the connect() call return always 0 even if no connection can
be established.

Fix this by always doing a poll after calling connect(). Also there was some
leftover copy paste code which checks for various errors which are simply not
possible with SRT.

Signed-off-by: Marton Balint <cus@passwd.hu>
  • Loading branch information
cus committed Feb 23, 2020
1 parent 006744b commit aab9133
Showing 1 changed file with 13 additions and 28 deletions.
41 changes: 13 additions & 28 deletions libavformat/libsrt.c
Expand Up @@ -250,34 +250,19 @@ static int libsrt_listen_connect(int eid, int fd, const struct sockaddr *addr, s
if (libsrt_socket_nonblock(fd, 1) < 0)
av_log(h, AV_LOG_DEBUG, "ff_socket_nonblock failed\n");

while ((ret = srt_connect(fd, addr, addrlen))) {
ret = libsrt_neterrno(h);
switch (ret) {
case AVERROR(EINTR):
if (ff_check_interrupt(&h->interrupt_callback))
return AVERROR_EXIT;
continue;
case AVERROR(EINPROGRESS):
case AVERROR(EAGAIN):
ret = libsrt_network_wait_fd_timeout(h, eid, fd, 1, timeout, &h->interrupt_callback);
if (ret < 0)
return ret;
ret = srt_getlasterror(NULL);
srt_clearlasterror();
if (ret != 0) {
char buf[128];
ret = AVERROR(ret);
av_strerror(ret, buf, sizeof(buf));
if (will_try_next)
av_log(h, AV_LOG_WARNING,
"Connection to %s failed (%s), trying next address\n",
h->filename, buf);
else
av_log(h, AV_LOG_ERROR, "Connection to %s failed: %s\n",
h->filename, buf);
}
default:
return ret;
ret = srt_connect(fd, addr, addrlen);
if (ret < 0)
return libsrt_neterrno(h);

ret = libsrt_network_wait_fd_timeout(h, eid, fd, 1, timeout, &h->interrupt_callback);
if (ret < 0) {
if (will_try_next) {
av_log(h, AV_LOG_WARNING,
"Connection to %s failed (%s), trying next address\n",
h->filename, av_err2str(ret));
} else {
av_log(h, AV_LOG_ERROR, "Connection to %s failed: %s\n",
h->filename, av_err2str(ret));
}
}
return ret;
Expand Down

0 comments on commit aab9133

Please sign in to comment.