]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/network.h
Merge commit '9446d75941d639f19cfa9ae007eb4c5ca041f200'
[ffmpeg] / libavformat / network.h
index 74e6f0bbccf8b3509a321bbb32f6bef1dc962ba3..f7e19b196e6565deeccac2ed181eaa9c30b68eda 100644 (file)
 #ifndef AVFORMAT_NETWORK_H
 #define AVFORMAT_NETWORK_H
 
+#include <errno.h>
+
 #include "config.h"
+#include "libavutil/error.h"
 #include "os_support.h"
 
 #if HAVE_WINSOCK2_H
@@ -33,7 +36,8 @@
 #define ECONNREFUSED    WSAECONNREFUSED
 #define EINPROGRESS     WSAEINPROGRESS
 
-static inline int ff_neterrno() {
+static inline int ff_neterrno(void)
+{
     int err = WSAGetLastError();
     switch (err) {
     case WSAEWOULDBLOCK:
@@ -78,7 +82,7 @@ static inline int ff_network_wait_fd(int fd, int write)
     struct pollfd p = { .fd = fd, .events = ev, .revents = 0 };
     int ret;
     ret = poll(&p, 1, 100);
-    return ret < 0 ? ff_neterrno() : p.revents & ev ? 0 : AVERROR(EAGAIN);
+    return ret < 0 ? ff_neterrno() : p.revents & (ev | POLLERR | POLLHUP) ? 0 : AVERROR(EAGAIN);
 }
 
 static inline void ff_network_close(void)