ff_socket_nonblock wraps fcntl.

CC: [email protected]
Bug-Id: CID 1026742 / CID 1026743 /CID 1026744 / CID 1087075
---
 libavformat/network.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/libavformat/network.c b/libavformat/network.c
index 6d308eb..06614e9 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -232,10 +232,14 @@ int ff_socket(int af, int type, int proto)
 int ff_listen_bind(int fd, const struct sockaddr *addr,
                    socklen_t addrlen, int timeout, URLContext *h)
 {
-    int ret;
     int reuse = 1;
     struct pollfd lp = { fd, POLLIN, 0 };
-    setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse));
+    int ret, res;
+
+    ret = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse));
+    if (ret)
+        return ff_neterrno();
+
     ret = bind(fd, addr, addrlen);
     if (ret)
         return ff_neterrno();
@@ -254,7 +258,11 @@ int ff_listen_bind(int fd, const struct sockaddr *addr,
 
     closesocket(fd);
 
-    ff_socket_nonblock(ret, 1);
+    res = ff_socket_nonblock(ret, 1);
+    if (res < 0) {
+        closesocket(ret);
+        return ff_neterrno();
+    }
     return ret;
 }
 
@@ -266,7 +274,9 @@ int ff_listen_connect(int fd, const struct sockaddr *addr,
     int ret;
     socklen_t optlen;
 
-    ff_socket_nonblock(fd, 1);
+    ret = ff_socket_nonblock(fd, 1);
+    if (ret < 0)
+        return ff_neterrno();
 
     while ((ret = connect(fd, addr, addrlen))) {
         ret = ff_neterrno();
-- 
1.9.3 (Apple Git-50)

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to