X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fnetwork.h;h=09cee58a5ca8fe76a1d456f7b671eb559d01b970;hb=2ded57371abead879bcee56da5131e5fac0d17ef;hp=db1b09a91ee602a5512a57fa41b2d548a63d326e;hpb=28306e6d620c109ddd672f7243adfbc2bbb3b18f;p=ffmpeg diff --git a/libavformat/network.h b/libavformat/network.h index db1b09a91ee..09cee58a5ca 100644 --- a/libavformat/network.h +++ b/libavformat/network.h @@ -27,6 +27,7 @@ #include "config.h" #include "libavutil/error.h" #include "os_support.h" +#include "url.h" #if HAVE_UNISTD_H #include @@ -60,7 +61,7 @@ int ff_neterrno(void); #include #define ff_neterrno() AVERROR(errno) -#endif +#endif /* HAVE_WINSOCK2_H */ #if HAVE_ARPA_INET_H #include @@ -90,11 +91,15 @@ struct sockaddr_storage { uint8_t ss_family; #else uint16_t ss_family; -#endif +#endif /* HAVE_STRUCT_SOCKADDR_SA_LEN */ char ss_pad1[6]; int64_t ss_align; char ss_pad2[112]; }; +#endif /* !HAVE_STRUCT_SOCKADDR_STORAGE */ + +#ifndef MSG_NOSIGNAL +#define MSG_NOSIGNAL 0 #endif #if !HAVE_STRUCT_ADDRINFO @@ -108,7 +113,7 @@ struct addrinfo { char *ai_canonname; struct addrinfo *ai_next; }; -#endif +#endif /* !HAVE_STRUCT_ADDRINFO */ /* getaddrinfo constants */ #ifndef EAI_AGAIN @@ -181,12 +186,13 @@ int ff_getnameinfo(const struct sockaddr *sa, int salen, #define getaddrinfo ff_getaddrinfo #define freeaddrinfo ff_freeaddrinfo #define getnameinfo ff_getnameinfo -#endif +#endif /* !HAVE_GETADDRINFO */ + #if !HAVE_GETADDRINFO || HAVE_WINSOCK2_H const char *ff_gai_strerror(int ecode); #undef gai_strerror #define gai_strerror ff_gai_strerror -#endif +#endif /* !HAVE_GETADDRINFO || HAVE_WINSOCK2_H */ #ifndef INADDR_LOOPBACK #define INADDR_LOOPBACK 0x7f000001 @@ -209,7 +215,45 @@ const char *ff_gai_strerror(int ecode); int ff_is_multicast_address(struct sockaddr *addr); +#define POLLING_TIME 100 /// Time in milliseconds between interrupt check + +/** + * Bind to a file descriptor and poll for a connection. + * + * @param fd First argument of bind(). + * @param addr Second argument of bind(). + * @param addrlen Third argument of bind(). + * @param timeout Polling timeout in milliseconds. + * @param h URLContext providing interrupt check + * callback and logging context. + * @return A non-blocking file descriptor on success + * or an AVERROR on failure. + */ int ff_listen_bind(int fd, const struct sockaddr *addr, - socklen_t addrlen, int timeout); + socklen_t addrlen, int timeout, + URLContext *h); + +/** + * Connect to a file descriptor and poll for result. + * + * @param fd First argument of connect(), + * will be set as non-blocking. + * @param addr Second argument of connect(). + * @param addrlen Third argument of connect(). + * @param timeout Polling timeout in milliseconds. + * @param h URLContext providing interrupt check + * callback and logging context. + * @param will_try_next Whether the caller will try to connect to another + * address for the same host name, affecting the form of + * logged errors. + * @return 0 on success, AVERROR on failure. + */ +int ff_listen_connect(int fd, const struct sockaddr *addr, + socklen_t addrlen, int timeout, + URLContext *h, int will_try_next); + +int ff_http_match_no_proxy(const char *no_proxy, const char *hostname); + +int ff_socket(int domain, int type, int protocol); #endif /* AVFORMAT_NETWORK_H */