* [FFmpeg-devel] [PATCH 1/2] avformat/utils: handle errors > 0 in avformat_network_init()
@ 2024-04-19 16:59 Andrew Sayers
2024-04-19 16:59 ` [FFmpeg-devel] [PATCH 2/2] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
2024-04-19 17:04 ` [FFmpeg-devel] [PATCH 1/2] avformat/utils: handle errors > 0 in avformat_network_init() James Almer
0 siblings, 2 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-04-19 16:59 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
---
libavformat/utils.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 4dded7aea4..855723a406 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -560,7 +560,7 @@ int avformat_network_init(void)
{
#if CONFIG_NETWORK
int ret;
- if ((ret = ff_network_init()) < 0)
+ if ((ret = ff_network_init()))
return ret;
if ((ret = ff_tls_init()) < 0)
return ret;
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH 2/2] avformat/avformat: Document return codes for av_format_(de)init
2024-04-19 16:59 [FFmpeg-devel] [PATCH 1/2] avformat/utils: handle errors > 0 in avformat_network_init() Andrew Sayers
@ 2024-04-19 16:59 ` Andrew Sayers
2024-04-19 17:04 ` [FFmpeg-devel] [PATCH 1/2] avformat/utils: handle errors > 0 in avformat_network_init() James Almer
1 sibling, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-04-19 16:59 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
---
libavformat/avformat.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 8afdcd9fd0..0feaeded0e 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -1944,12 +1944,16 @@ const char *avformat_license(void);
* This function will be deprecated once support for older GnuTLS and
* OpenSSL libraries is removed, and this function has no purpose
* anymore.
+ *
+ * @return 0 on success, !=0 on error.
*/
int avformat_network_init(void);
/**
* Undo the initialization done by avformat_network_init. Call it only
* once for each time you called avformat_network_init.
+ *
+ * @return 0 on success, !=0 on error.
*/
int avformat_network_deinit(void);
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] avformat/utils: handle errors > 0 in avformat_network_init()
2024-04-19 16:59 [FFmpeg-devel] [PATCH 1/2] avformat/utils: handle errors > 0 in avformat_network_init() Andrew Sayers
2024-04-19 16:59 ` [FFmpeg-devel] [PATCH 2/2] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
@ 2024-04-19 17:04 ` James Almer
2024-04-19 17:23 ` [FFmpeg-devel] [PATCH v2 1/2] avformat/network: Return a proper negative error code from ff_network_init() Andrew Sayers
1 sibling, 1 reply; 34+ messages in thread
From: James Almer @ 2024-04-19 17:04 UTC (permalink / raw)
To: ffmpeg-devel
On 4/19/2024 1:59 PM, Andrew Sayers wrote:
> ---
> libavformat/utils.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavformat/utils.c b/libavformat/utils.c
> index 4dded7aea4..855723a406 100644
> --- a/libavformat/utils.c
> +++ b/libavformat/utils.c
> @@ -560,7 +560,7 @@ int avformat_network_init(void)
> {
> #if CONFIG_NETWORK
> int ret;
> - if ((ret = ff_network_init()) < 0)
> + if ((ret = ff_network_init()))
ff_network_init() needs to be fixed to return negative error values
instead. This change will make it return 1 on error on Windows.
> return ret;
> if ((ret = ff_tls_init()) < 0)
> return ret;
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v2 1/2] avformat/network: Return a proper negative error code from ff_network_init()
2024-04-19 17:04 ` [FFmpeg-devel] [PATCH 1/2] avformat/utils: handle errors > 0 in avformat_network_init() James Almer
@ 2024-04-19 17:23 ` Andrew Sayers
2024-04-19 17:23 ` [FFmpeg-devel] [PATCH v2 2/2] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
2024-04-19 17:37 ` [FFmpeg-devel] [PATCH v2 1/2] avformat/network: Return a proper negative error code from ff_network_init() James Almer
0 siblings, 2 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-04-19 17:23 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
---
libavformat/network.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libavformat/network.c b/libavformat/network.c
index f752efc411..d518bb0541 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -63,7 +63,7 @@ int ff_network_init(void)
if (WSAStartup(MAKEWORD(1,1), &wsaData))
return 0;
#endif
- return 1;
+ return -1;
}
int ff_network_wait_fd(int fd, int write)
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v2 2/2] avformat/avformat: Document return codes for av_format_(de)init
2024-04-19 17:23 ` [FFmpeg-devel] [PATCH v2 1/2] avformat/network: Return a proper negative error code from ff_network_init() Andrew Sayers
@ 2024-04-19 17:23 ` Andrew Sayers
2024-04-19 17:37 ` [FFmpeg-devel] [PATCH v2 1/2] avformat/network: Return a proper negative error code from ff_network_init() James Almer
1 sibling, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-04-19 17:23 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
---
libavformat/avformat.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 8afdcd9fd0..ea816a0b22 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -1944,12 +1944,16 @@ const char *avformat_license(void);
* This function will be deprecated once support for older GnuTLS and
* OpenSSL libraries is removed, and this function has no purpose
* anymore.
+ *
+ * @return 0 on success, <0 on error.
*/
int avformat_network_init(void);
/**
* Undo the initialization done by avformat_network_init. Call it only
* once for each time you called avformat_network_init.
+ *
+ * @return 0 on success, <0 on error.
*/
int avformat_network_deinit(void);
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [FFmpeg-devel] [PATCH v2 1/2] avformat/network: Return a proper negative error code from ff_network_init()
2024-04-19 17:23 ` [FFmpeg-devel] [PATCH v2 1/2] avformat/network: Return a proper negative error code from ff_network_init() Andrew Sayers
2024-04-19 17:23 ` [FFmpeg-devel] [PATCH v2 2/2] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
@ 2024-04-19 17:37 ` James Almer
2024-04-19 19:07 ` [FFmpeg-devel] [PATCH v3 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno Andrew Sayers
1 sibling, 1 reply; 34+ messages in thread
From: James Almer @ 2024-04-19 17:37 UTC (permalink / raw)
To: ffmpeg-devel
On 4/19/2024 2:23 PM, Andrew Sayers wrote:
> ---
> libavformat/network.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavformat/network.c b/libavformat/network.c
> index f752efc411..d518bb0541 100644
> --- a/libavformat/network.c
> +++ b/libavformat/network.c
> @@ -63,7 +63,7 @@ int ff_network_init(void)
> if (WSAStartup(MAKEWORD(1,1), &wsaData))
> return 0;
> #endif
> - return 1;
> + return -1;
This will make avformat_network_init() fail on all targets but Windows.
Also, there are a lot of ff_network_init() callers that check for 0 as
failure and anything else as success.
What needs to be done is to make ff_network_init() return ff_neterrno()
on WSAStartup() failure and 0 on success on Windows, and 0 for every
other target (where there's no chance of failure), and the callers be
adapted to check for < 0 and propagate the returned error value if so.
> }
>
> int ff_network_wait_fd(int fd, int write)
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v3 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno
2024-04-19 17:37 ` [FFmpeg-devel] [PATCH v2 1/2] avformat/network: Return a proper negative error code from ff_network_init() James Almer
@ 2024-04-19 19:07 ` Andrew Sayers
2024-04-19 19:08 ` [FFmpeg-devel] [PATCH v3 2/3] avformat/network: Return 0/AVERROR from ff_network_init() Andrew Sayers
` (3 more replies)
0 siblings, 4 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-04-19 19:07 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
For example, WSAStartup()'s documentation says:
"A call to the WSAGetLastError function is not needed and should not be used"
---
libavformat/network.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/libavformat/network.c b/libavformat/network.c
index f752efc411..fb70f9cafc 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -121,9 +121,14 @@ void ff_network_close(void)
}
#if HAVE_WINSOCK2_H
+
+}
int ff_neterrno(void)
{
- int err = WSAGetLastError();
+ return ff_neterrno2(WSAGetLastError());
+}
+int ff_neterrno2(int err)
+{
switch (err) {
case WSAEWOULDBLOCK:
return AVERROR(EAGAIN);
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v3 2/3] avformat/network: Return 0/AVERROR from ff_network_init()
2024-04-19 19:07 ` [FFmpeg-devel] [PATCH v3 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno Andrew Sayers
@ 2024-04-19 19:08 ` Andrew Sayers
2024-04-19 19:08 ` [FFmpeg-devel] [PATCH v3 3/3] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
` (2 subsequent siblings)
3 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-04-19 19:08 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
---
libavformat/avio.c | 4 ++--
libavformat/network.c | 7 +++----
libavformat/rtsp.c | 12 ++++++------
libavformat/rtspdec.c | 4 ++--
libavformat/sapdec.c | 4 ++--
libavformat/sapenc.c | 4 ++--
6 files changed, 17 insertions(+), 18 deletions(-)
diff --git a/libavformat/avio.c b/libavformat/avio.c
index d109f3adff..f82edec779 100644
--- a/libavformat/avio.c
+++ b/libavformat/avio.c
@@ -123,8 +123,8 @@ static int url_alloc_for_protocol(URLContext **puc, const URLProtocol *up,
int err;
#if CONFIG_NETWORK
- if (up->flags & URL_PROTOCOL_FLAG_NETWORK && !ff_network_init())
- return AVERROR(EIO);
+ if (up->flags & URL_PROTOCOL_FLAG_NETWORK && (err=ff_network_init())<0)
+ return err;
#endif
if ((flags & AVIO_FLAG_READ) && !up->url_read) {
av_log(NULL, AV_LOG_ERROR,
diff --git a/libavformat/network.c b/libavformat/network.c
index fb70f9cafc..134869a63f 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -59,11 +59,10 @@ int ff_network_init(void)
{
#if HAVE_WINSOCK2_H
WSADATA wsaData;
-
- if (WSAStartup(MAKEWORD(1,1), &wsaData))
- return 0;
+ return ff_neterrno2(WSAStartup(MAKEWORD(1,1), &wsaData));
+#else
+ return 0;
#endif
- return 1;
}
int ff_network_wait_fd(int fd, int write)
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index b0c61ee00a..3db4ed11c2 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -1740,8 +1740,8 @@ int ff_rtsp_connect(AVFormatContext *s)
return AVERROR(EINVAL);
}
- if (!ff_network_init())
- return AVERROR(EIO);
+ if ((err = ff_network_init())<0)
+ return err;
if (s->max_delay < 0) /* Not set by the caller */
s->max_delay = s->iformat ? DEFAULT_REORDERING_DELAY : 0;
@@ -2395,8 +2395,8 @@ static int sdp_read_header(AVFormatContext *s)
char url[MAX_URL_SIZE];
AVBPrint bp;
- if (!ff_network_init())
- return AVERROR(EIO);
+ if ((err = ff_network_init())<0)
+ return err;
if (s->max_delay < 0) /* Not set by the caller */
s->max_delay = DEFAULT_REORDERING_DELAY;
@@ -2522,8 +2522,8 @@ static int rtp_read_header(AVFormatContext *s)
AVBPrint sdp;
AVDictionary *opts = NULL;
- if (!ff_network_init())
- return AVERROR(EIO);
+ if ((ret = ff_network_init())<0)
+ return ret;
opts = map_to_opts(rt);
ret = ffurl_open_whitelist(&in, s->url, AVIO_FLAG_READ,
diff --git a/libavformat/rtspdec.c b/libavformat/rtspdec.c
index 10078ce2fa..3b0829694e 100644
--- a/libavformat/rtspdec.c
+++ b/libavformat/rtspdec.c
@@ -663,8 +663,8 @@ static int rtsp_listen(AVFormatContext *s)
int ret;
enum RTSPMethod methodcode;
- if (!ff_network_init())
- return AVERROR(EIO);
+ if ((ret = ff_network_init())<0)
+ return ret;
/* extract hostname and port */
av_url_split(proto, sizeof(proto), auth, sizeof(auth), host, sizeof(host),
diff --git a/libavformat/sapdec.c b/libavformat/sapdec.c
index 357c0dd514..719c26c6b8 100644
--- a/libavformat/sapdec.c
+++ b/libavformat/sapdec.c
@@ -70,8 +70,8 @@ static int sap_read_header(AVFormatContext *s)
int port;
int ret, i;
- if (!ff_network_init())
- return AVERROR(EIO);
+ if ((ret = ff_network_init())<0)
+ return ret;
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &port,
path, sizeof(path), s->url);
diff --git a/libavformat/sapenc.c b/libavformat/sapenc.c
index 87a834a8d8..3305122524 100644
--- a/libavformat/sapenc.c
+++ b/libavformat/sapenc.c
@@ -80,8 +80,8 @@ static int sap_write_header(AVFormatContext *s)
int udp_fd;
AVDictionaryEntry* title = av_dict_get(s->metadata, "title", NULL, 0);
- if (!ff_network_init())
- return AVERROR(EIO);
+ if ((ret = ff_network_init())<0)
+ return ret;
/* extract hostname and port */
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &base_port,
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v3 3/3] avformat/avformat: Document return codes for av_format_(de)init
2024-04-19 19:07 ` [FFmpeg-devel] [PATCH v3 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno Andrew Sayers
2024-04-19 19:08 ` [FFmpeg-devel] [PATCH v3 2/3] avformat/network: Return 0/AVERROR from ff_network_init() Andrew Sayers
@ 2024-04-19 19:08 ` Andrew Sayers
2024-04-20 7:57 ` [FFmpeg-devel] [PATCH v3 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno Stefano Sabatini
2024-05-05 19:59 ` [FFmpeg-devel] [PATCH v3 " Marton Balint
3 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-04-19 19:08 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
---
libavformat/avformat.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 8afdcd9fd0..f624fb1e2e 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -1944,12 +1944,16 @@ const char *avformat_license(void);
* This function will be deprecated once support for older GnuTLS and
* OpenSSL libraries is removed, and this function has no purpose
* anymore.
+ *
+ * @return 0 for success or AVERROR code
*/
int avformat_network_init(void);
/**
* Undo the initialization done by avformat_network_init. Call it only
* once for each time you called avformat_network_init.
+ *
+ * @return 0 for success or AVERROR code
*/
int avformat_network_deinit(void);
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [FFmpeg-devel] [PATCH v3 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno
2024-04-19 19:07 ` [FFmpeg-devel] [PATCH v3 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno Andrew Sayers
2024-04-19 19:08 ` [FFmpeg-devel] [PATCH v3 2/3] avformat/network: Return 0/AVERROR from ff_network_init() Andrew Sayers
2024-04-19 19:08 ` [FFmpeg-devel] [PATCH v3 3/3] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
@ 2024-04-20 7:57 ` Stefano Sabatini
2024-04-20 13:24 ` [FFmpeg-devel] [PATCH v4 " Andrew Sayers
2024-05-05 19:59 ` [FFmpeg-devel] [PATCH v3 " Marton Balint
3 siblings, 1 reply; 34+ messages in thread
From: Stefano Sabatini @ 2024-04-20 7:57 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Andrew Sayers
On date Friday 2024-04-19 20:07:59 +0100, Andrew Sayers wrote:
> For example, WSAStartup()'s documentation says:
>
> "A call to the WSAGetLastError function is not needed and should not be used"
> ---
> libavformat/network.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
missing declaration in network.h?
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v4 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno
2024-04-20 7:57 ` [FFmpeg-devel] [PATCH v3 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno Stefano Sabatini
@ 2024-04-20 13:24 ` Andrew Sayers
2024-04-20 13:25 ` [FFmpeg-devel] [PATCH v4 2/3] avformat/network: Return 0/AVERROR from ff_network_init() Andrew Sayers
` (2 more replies)
0 siblings, 3 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-04-20 13:24 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
For example, WSAStartup()'s documentation says:
"A call to the WSAGetLastError function is not needed and should not be used"
---
libavformat/network.c | 5 ++++-
libavformat/network.h | 2 ++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/libavformat/network.c b/libavformat/network.c
index f752efc411..f295957aa5 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -123,7 +123,10 @@ void ff_network_close(void)
#if HAVE_WINSOCK2_H
int ff_neterrno(void)
{
- int err = WSAGetLastError();
+ return ff_neterrno2(WSAGetLastError());
+}
+int ff_neterrno2(int err)
+{
switch (err) {
case WSAEWOULDBLOCK:
return AVERROR(EAGAIN);
diff --git a/libavformat/network.h b/libavformat/network.h
index ca214087fc..84348f52a4 100644
--- a/libavformat/network.h
+++ b/libavformat/network.h
@@ -58,6 +58,7 @@
#define setsockopt(a, b, c, d, e) setsockopt(a, b, c, (const char*) d, e)
int ff_neterrno(void);
+int ff_neterrno2(int err);
#else
#include <sys/types.h>
#include <sys/socket.h>
@@ -66,6 +67,7 @@ int ff_neterrno(void);
#include <netdb.h>
#define ff_neterrno() AVERROR(errno)
+#define ff_neterrno2(ERRNO) AVERROR(ERRNO)
#endif /* HAVE_WINSOCK2_H */
#if HAVE_ARPA_INET_H
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v4 2/3] avformat/network: Return 0/AVERROR from ff_network_init()
2024-04-20 13:24 ` [FFmpeg-devel] [PATCH v4 " Andrew Sayers
@ 2024-04-20 13:25 ` Andrew Sayers
2024-05-05 20:05 ` Marton Balint
2024-04-20 13:25 ` [FFmpeg-devel] [PATCH v4 3/3] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
2024-04-27 8:46 ` [FFmpeg-devel] [PATCH v4 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno Andrew Sayers
2 siblings, 1 reply; 34+ messages in thread
From: Andrew Sayers @ 2024-04-20 13:25 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
---
libavformat/avio.c | 4 ++--
libavformat/network.c | 7 +++----
libavformat/rtsp.c | 12 ++++++------
libavformat/rtspdec.c | 4 ++--
libavformat/sapdec.c | 4 ++--
libavformat/sapenc.c | 4 ++--
6 files changed, 17 insertions(+), 18 deletions(-)
diff --git a/libavformat/avio.c b/libavformat/avio.c
index d109f3adff..f82edec779 100644
--- a/libavformat/avio.c
+++ b/libavformat/avio.c
@@ -123,8 +123,8 @@ static int url_alloc_for_protocol(URLContext **puc, const URLProtocol *up,
int err;
#if CONFIG_NETWORK
- if (up->flags & URL_PROTOCOL_FLAG_NETWORK && !ff_network_init())
- return AVERROR(EIO);
+ if (up->flags & URL_PROTOCOL_FLAG_NETWORK && (err=ff_network_init())<0)
+ return err;
#endif
if ((flags & AVIO_FLAG_READ) && !up->url_read) {
av_log(NULL, AV_LOG_ERROR,
diff --git a/libavformat/network.c b/libavformat/network.c
index f295957aa5..c1b0e69362 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -59,11 +59,10 @@ int ff_network_init(void)
{
#if HAVE_WINSOCK2_H
WSADATA wsaData;
-
- if (WSAStartup(MAKEWORD(1,1), &wsaData))
- return 0;
+ return ff_neterrno2(WSAStartup(MAKEWORD(1,1), &wsaData));
+#else
+ return 0;
#endif
- return 1;
}
int ff_network_wait_fd(int fd, int write)
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index b0c61ee00a..3db4ed11c2 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -1740,8 +1740,8 @@ int ff_rtsp_connect(AVFormatContext *s)
return AVERROR(EINVAL);
}
- if (!ff_network_init())
- return AVERROR(EIO);
+ if ((err = ff_network_init())<0)
+ return err;
if (s->max_delay < 0) /* Not set by the caller */
s->max_delay = s->iformat ? DEFAULT_REORDERING_DELAY : 0;
@@ -2395,8 +2395,8 @@ static int sdp_read_header(AVFormatContext *s)
char url[MAX_URL_SIZE];
AVBPrint bp;
- if (!ff_network_init())
- return AVERROR(EIO);
+ if ((err = ff_network_init())<0)
+ return err;
if (s->max_delay < 0) /* Not set by the caller */
s->max_delay = DEFAULT_REORDERING_DELAY;
@@ -2522,8 +2522,8 @@ static int rtp_read_header(AVFormatContext *s)
AVBPrint sdp;
AVDictionary *opts = NULL;
- if (!ff_network_init())
- return AVERROR(EIO);
+ if ((ret = ff_network_init())<0)
+ return ret;
opts = map_to_opts(rt);
ret = ffurl_open_whitelist(&in, s->url, AVIO_FLAG_READ,
diff --git a/libavformat/rtspdec.c b/libavformat/rtspdec.c
index 10078ce2fa..3b0829694e 100644
--- a/libavformat/rtspdec.c
+++ b/libavformat/rtspdec.c
@@ -663,8 +663,8 @@ static int rtsp_listen(AVFormatContext *s)
int ret;
enum RTSPMethod methodcode;
- if (!ff_network_init())
- return AVERROR(EIO);
+ if ((ret = ff_network_init())<0)
+ return ret;
/* extract hostname and port */
av_url_split(proto, sizeof(proto), auth, sizeof(auth), host, sizeof(host),
diff --git a/libavformat/sapdec.c b/libavformat/sapdec.c
index 357c0dd514..719c26c6b8 100644
--- a/libavformat/sapdec.c
+++ b/libavformat/sapdec.c
@@ -70,8 +70,8 @@ static int sap_read_header(AVFormatContext *s)
int port;
int ret, i;
- if (!ff_network_init())
- return AVERROR(EIO);
+ if ((ret = ff_network_init())<0)
+ return ret;
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &port,
path, sizeof(path), s->url);
diff --git a/libavformat/sapenc.c b/libavformat/sapenc.c
index 87a834a8d8..3305122524 100644
--- a/libavformat/sapenc.c
+++ b/libavformat/sapenc.c
@@ -80,8 +80,8 @@ static int sap_write_header(AVFormatContext *s)
int udp_fd;
AVDictionaryEntry* title = av_dict_get(s->metadata, "title", NULL, 0);
- if (!ff_network_init())
- return AVERROR(EIO);
+ if ((ret = ff_network_init())<0)
+ return ret;
/* extract hostname and port */
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &base_port,
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v4 3/3] avformat/avformat: Document return codes for av_format_(de)init
2024-04-20 13:24 ` [FFmpeg-devel] [PATCH v4 " Andrew Sayers
2024-04-20 13:25 ` [FFmpeg-devel] [PATCH v4 2/3] avformat/network: Return 0/AVERROR from ff_network_init() Andrew Sayers
@ 2024-04-20 13:25 ` Andrew Sayers
2024-04-27 8:46 ` [FFmpeg-devel] [PATCH v4 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno Andrew Sayers
2 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-04-20 13:25 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
---
libavformat/avformat.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 8afdcd9fd0..f624fb1e2e 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -1944,12 +1944,16 @@ const char *avformat_license(void);
* This function will be deprecated once support for older GnuTLS and
* OpenSSL libraries is removed, and this function has no purpose
* anymore.
+ *
+ * @return 0 for success or AVERROR code
*/
int avformat_network_init(void);
/**
* Undo the initialization done by avformat_network_init. Call it only
* once for each time you called avformat_network_init.
+ *
+ * @return 0 for success or AVERROR code
*/
int avformat_network_deinit(void);
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [FFmpeg-devel] [PATCH v4 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno
2024-04-20 13:24 ` [FFmpeg-devel] [PATCH v4 " Andrew Sayers
2024-04-20 13:25 ` [FFmpeg-devel] [PATCH v4 2/3] avformat/network: Return 0/AVERROR from ff_network_init() Andrew Sayers
2024-04-20 13:25 ` [FFmpeg-devel] [PATCH v4 3/3] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
@ 2024-04-27 8:46 ` Andrew Sayers
2 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-04-27 8:46 UTC (permalink / raw)
To: ffmpeg-devel
On Sat, Apr 20, 2024 at 02:24:59PM +0100, Andrew Sayers wrote:
> For example, WSAStartup()'s documentation says:
>
> "A call to the WSAGetLastError function is not needed and should not be used"
> ---
> libavformat/network.c | 5 ++++-
> libavformat/network.h | 2 ++
> 2 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/libavformat/network.c b/libavformat/network.c
> index f752efc411..f295957aa5 100644
> --- a/libavformat/network.c
> +++ b/libavformat/network.c
> @@ -123,7 +123,10 @@ void ff_network_close(void)
> #if HAVE_WINSOCK2_H
> int ff_neterrno(void)
> {
> - int err = WSAGetLastError();
> + return ff_neterrno2(WSAGetLastError());
> +}
> +int ff_neterrno2(int err)
> +{
> switch (err) {
> case WSAEWOULDBLOCK:
> return AVERROR(EAGAIN);
> diff --git a/libavformat/network.h b/libavformat/network.h
> index ca214087fc..84348f52a4 100644
> --- a/libavformat/network.h
> +++ b/libavformat/network.h
> @@ -58,6 +58,7 @@
> #define setsockopt(a, b, c, d, e) setsockopt(a, b, c, (const char*) d, e)
>
> int ff_neterrno(void);
> +int ff_neterrno2(int err);
> #else
> #include <sys/types.h>
> #include <sys/socket.h>
> @@ -66,6 +67,7 @@ int ff_neterrno(void);
> #include <netdb.h>
>
> #define ff_neterrno() AVERROR(errno)
> +#define ff_neterrno2(ERRNO) AVERROR(ERRNO)
> #endif /* HAVE_WINSOCK2_H */
>
> #if HAVE_ARPA_INET_H
Ping? Still applies, and I'm not aware of any further changes needed.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [FFmpeg-devel] [PATCH v3 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno
2024-04-19 19:07 ` [FFmpeg-devel] [PATCH v3 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno Andrew Sayers
` (2 preceding siblings ...)
2024-04-20 7:57 ` [FFmpeg-devel] [PATCH v3 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno Stefano Sabatini
@ 2024-05-05 19:59 ` Marton Balint
2024-05-07 13:41 ` Andrew Sayers
3 siblings, 1 reply; 34+ messages in thread
From: Marton Balint @ 2024-05-05 19:59 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On Fri, 19 Apr 2024, Andrew Sayers wrote:
> For example, WSAStartup()'s documentation says:
>
> "A call to the WSAGetLastError function is not needed and should not be used"
> ---
> libavformat/network.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/libavformat/network.c b/libavformat/network.c
> index f752efc411..fb70f9cafc 100644
> --- a/libavformat/network.c
> +++ b/libavformat/network.c
> @@ -121,9 +121,14 @@ void ff_network_close(void)
> }
>
> #if HAVE_WINSOCK2_H
> +
> +}
> int ff_neterrno(void)
> {
> - int err = WSAGetLastError();
> + return ff_neterrno2(WSAGetLastError());
> +}
> +int ff_neterrno2(int err)
ff_neterror(int err) would be a better name, since it has nothing to do
with errno.
Regards.
Marton
> +{
> switch (err) {
> case WSAEWOULDBLOCK:
> return AVERROR(EAGAIN);
> --
> 2.43.0
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [FFmpeg-devel] [PATCH v4 2/3] avformat/network: Return 0/AVERROR from ff_network_init()
2024-04-20 13:25 ` [FFmpeg-devel] [PATCH v4 2/3] avformat/network: Return 0/AVERROR from ff_network_init() Andrew Sayers
@ 2024-05-05 20:05 ` Marton Balint
2024-05-07 13:12 ` Andrew Sayers
0 siblings, 1 reply; 34+ messages in thread
From: Marton Balint @ 2024-05-05 20:05 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On Sat, 20 Apr 2024, Andrew Sayers wrote:
> ---
> libavformat/avio.c | 4 ++--
> libavformat/network.c | 7 +++----
> libavformat/rtsp.c | 12 ++++++------
> libavformat/rtspdec.c | 4 ++--
> libavformat/sapdec.c | 4 ++--
> libavformat/sapenc.c | 4 ++--
> 6 files changed, 17 insertions(+), 18 deletions(-)
>
> diff --git a/libavformat/avio.c b/libavformat/avio.c
> index d109f3adff..f82edec779 100644
> --- a/libavformat/avio.c
> +++ b/libavformat/avio.c
> @@ -123,8 +123,8 @@ static int url_alloc_for_protocol(URLContext **puc, const URLProtocol *up,
> int err;
>
> #if CONFIG_NETWORK
> - if (up->flags & URL_PROTOCOL_FLAG_NETWORK && !ff_network_init())
> - return AVERROR(EIO);
> + if (up->flags & URL_PROTOCOL_FLAG_NETWORK && (err=ff_network_init())<0)
> + return err;
> #endif
> if ((flags & AVIO_FLAG_READ) && !up->url_read) {
> av_log(NULL, AV_LOG_ERROR,
> diff --git a/libavformat/network.c b/libavformat/network.c
> index f295957aa5..c1b0e69362 100644
> --- a/libavformat/network.c
> +++ b/libavformat/network.c
> @@ -59,11 +59,10 @@ int ff_network_init(void)
> {
> #if HAVE_WINSOCK2_H
> WSADATA wsaData;
> -
> - if (WSAStartup(MAKEWORD(1,1), &wsaData))
> - return 0;
> + return ff_neterrno2(WSAStartup(MAKEWORD(1,1), &wsaData));
> +#else
> + return 0;
> #endif
> - return 1;
> }
>
> int ff_network_wait_fd(int fd, int write)
> diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
> index b0c61ee00a..3db4ed11c2 100644
> --- a/libavformat/rtsp.c
> +++ b/libavformat/rtsp.c
> @@ -1740,8 +1740,8 @@ int ff_rtsp_connect(AVFormatContext *s)
> return AVERROR(EINVAL);
> }
>
> - if (!ff_network_init())
> - return AVERROR(EIO);
> + if ((err = ff_network_init())<0)
> + return err;
Assignments in if conditions should be avoided. So this should be expanded
to:
err = ff_network_init();
if (err < 0)
return err;
Same for the rest of the checks later.
Thanks,
Marton
>
> if (s->max_delay < 0) /* Not set by the caller */
> s->max_delay = s->iformat ? DEFAULT_REORDERING_DELAY : 0;
> @@ -2395,8 +2395,8 @@ static int sdp_read_header(AVFormatContext *s)
> char url[MAX_URL_SIZE];
> AVBPrint bp;
>
> - if (!ff_network_init())
> - return AVERROR(EIO);
> + if ((err = ff_network_init())<0)
> + return err;
>
> if (s->max_delay < 0) /* Not set by the caller */
> s->max_delay = DEFAULT_REORDERING_DELAY;
> @@ -2522,8 +2522,8 @@ static int rtp_read_header(AVFormatContext *s)
> AVBPrint sdp;
> AVDictionary *opts = NULL;
>
> - if (!ff_network_init())
> - return AVERROR(EIO);
> + if ((ret = ff_network_init())<0)
> + return ret;
>
> opts = map_to_opts(rt);
> ret = ffurl_open_whitelist(&in, s->url, AVIO_FLAG_READ,
> diff --git a/libavformat/rtspdec.c b/libavformat/rtspdec.c
> index 10078ce2fa..3b0829694e 100644
> --- a/libavformat/rtspdec.c
> +++ b/libavformat/rtspdec.c
> @@ -663,8 +663,8 @@ static int rtsp_listen(AVFormatContext *s)
> int ret;
> enum RTSPMethod methodcode;
>
> - if (!ff_network_init())
> - return AVERROR(EIO);
> + if ((ret = ff_network_init())<0)
> + return ret;
>
> /* extract hostname and port */
> av_url_split(proto, sizeof(proto), auth, sizeof(auth), host, sizeof(host),
> diff --git a/libavformat/sapdec.c b/libavformat/sapdec.c
> index 357c0dd514..719c26c6b8 100644
> --- a/libavformat/sapdec.c
> +++ b/libavformat/sapdec.c
> @@ -70,8 +70,8 @@ static int sap_read_header(AVFormatContext *s)
> int port;
> int ret, i;
>
> - if (!ff_network_init())
> - return AVERROR(EIO);
> + if ((ret = ff_network_init())<0)
> + return ret;
>
> av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &port,
> path, sizeof(path), s->url);
> diff --git a/libavformat/sapenc.c b/libavformat/sapenc.c
> index 87a834a8d8..3305122524 100644
> --- a/libavformat/sapenc.c
> +++ b/libavformat/sapenc.c
> @@ -80,8 +80,8 @@ static int sap_write_header(AVFormatContext *s)
> int udp_fd;
> AVDictionaryEntry* title = av_dict_get(s->metadata, "title", NULL, 0);
>
> - if (!ff_network_init())
> - return AVERROR(EIO);
> + if ((ret = ff_network_init())<0)
> + return ret;
>
> /* extract hostname and port */
> av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &base_port,
> --
> 2.43.0
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [FFmpeg-devel] [PATCH v4 2/3] avformat/network: Return 0/AVERROR from ff_network_init()
2024-05-05 20:05 ` Marton Balint
@ 2024-05-07 13:12 ` Andrew Sayers
0 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-05-07 13:12 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On Sun, May 05, 2024 at 10:05:36PM +0200, Marton Balint wrote:
>
>
> On Sat, 20 Apr 2024, Andrew Sayers wrote:
>
> > ---
> > libavformat/avio.c | 4 ++--
> > libavformat/network.c | 7 +++----
> > libavformat/rtsp.c | 12 ++++++------
> > libavformat/rtspdec.c | 4 ++--
> > libavformat/sapdec.c | 4 ++--
> > libavformat/sapenc.c | 4 ++--
> > 6 files changed, 17 insertions(+), 18 deletions(-)
> >
> > diff --git a/libavformat/avio.c b/libavformat/avio.c
> > index d109f3adff..f82edec779 100644
> > --- a/libavformat/avio.c
> > +++ b/libavformat/avio.c
> > @@ -123,8 +123,8 @@ static int url_alloc_for_protocol(URLContext **puc, const URLProtocol *up,
> > int err;
> >
> > #if CONFIG_NETWORK
> > - if (up->flags & URL_PROTOCOL_FLAG_NETWORK && !ff_network_init())
> > - return AVERROR(EIO);
> > + if (up->flags & URL_PROTOCOL_FLAG_NETWORK && (err=ff_network_init())<0)
> > + return err;
> > #endif
> > if ((flags & AVIO_FLAG_READ) && !up->url_read) {
> > av_log(NULL, AV_LOG_ERROR,
> > diff --git a/libavformat/network.c b/libavformat/network.c
> > index f295957aa5..c1b0e69362 100644
> > --- a/libavformat/network.c
> > +++ b/libavformat/network.c
> > @@ -59,11 +59,10 @@ int ff_network_init(void)
> > {
> > #if HAVE_WINSOCK2_H
> > WSADATA wsaData;
> > -
> > - if (WSAStartup(MAKEWORD(1,1), &wsaData))
> > - return 0;
> > + return ff_neterrno2(WSAStartup(MAKEWORD(1,1), &wsaData));
> > +#else
> > + return 0;
> > #endif
> > - return 1;
> > }
> >
> > int ff_network_wait_fd(int fd, int write)
> > diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
> > index b0c61ee00a..3db4ed11c2 100644
> > --- a/libavformat/rtsp.c
> > +++ b/libavformat/rtsp.c
> > @@ -1740,8 +1740,8 @@ int ff_rtsp_connect(AVFormatContext *s)
> > return AVERROR(EINVAL);
> > }
> >
> > - if (!ff_network_init())
> > - return AVERROR(EIO);
> > + if ((err = ff_network_init())<0)
> > + return err;
>
> Assignments in if conditions should be avoided. So this should be expanded
> to:
>
> err = ff_network_init();
> if (err < 0)
> return err;
>
> Same for the rest of the checks later.
>
> Thanks,
> Marton
Assignments in if conditions seem to be the standard in that file, so I figured
it was better to have one ugly standard than two competing ones. But I agree
they're not good, so I'll propose a new patch in a few days if nobody objects.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [FFmpeg-devel] [PATCH v3 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno
2024-05-05 19:59 ` [FFmpeg-devel] [PATCH v3 " Marton Balint
@ 2024-05-07 13:41 ` Andrew Sayers
2024-05-07 21:05 ` Marton Balint
0 siblings, 1 reply; 34+ messages in thread
From: Andrew Sayers @ 2024-05-07 13:41 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On Sun, May 05, 2024 at 09:59:28PM +0200, Marton Balint wrote:
>
>
> On Fri, 19 Apr 2024, Andrew Sayers wrote:
>
> > For example, WSAStartup()'s documentation says:
> >
> > "A call to the WSAGetLastError function is not needed and should not be used"
> > ---
> > libavformat/network.c | 7 ++++++-
> > 1 file changed, 6 insertions(+), 1 deletion(-)
> >
> > diff --git a/libavformat/network.c b/libavformat/network.c
> > index f752efc411..fb70f9cafc 100644
> > --- a/libavformat/network.c
> > +++ b/libavformat/network.c
> > @@ -121,9 +121,14 @@ void ff_network_close(void)
> > }
> >
> > #if HAVE_WINSOCK2_H
> > +
> > +}
> > int ff_neterrno(void)
> > {
> > - int err = WSAGetLastError();
> > + return ff_neterrno2(WSAGetLastError());
> > +}
> > +int ff_neterrno2(int err)
>
> ff_neterror(int err) would be a better name, since it has nothing to do with
> errno.
>
> Regards.
> Marton
Not sure which one you're proposing to rename, but if the original
ff_neterrno() was documented, I think it would say something like:
/*
* @brief AVERROR for the latest network function
* @return AVERROR based on `WSAGetLastError()` (Windows) or `errno` (otherwise)
*/
... and neterrno2 would be something like:
/*
* @brief ff_neterrno()-style AVERROR
* @param err error code (usually an errno or Windows Sockets Error Code)
* @return AVERROR equivalent to err
*/
So neither necessarily have anything to do with errno. How about adding the
above documentation then doing s/ff_neterrno(2?)/ff_neterror\1/g ?
Note: this was supposed to be a quick patch documenting the existing behaviour
of a single function, and has now scope-crept up to a fairly sizeable refactor
of a barely-related function. I don't mind working on this sort of thing in
principle, but would like to land this particular patch before things get too
much further out of hand.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [FFmpeg-devel] [PATCH v3 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno
2024-05-07 13:41 ` Andrew Sayers
@ 2024-05-07 21:05 ` Marton Balint
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 0/5] avformat/network: improve ff_neterrno() Andrew Sayers
0 siblings, 1 reply; 34+ messages in thread
From: Marton Balint @ 2024-05-07 21:05 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On Tue, 7 May 2024, Andrew Sayers wrote:
> On Sun, May 05, 2024 at 09:59:28PM +0200, Marton Balint wrote:
>>
>>
>> On Fri, 19 Apr 2024, Andrew Sayers wrote:
>>
>>> For example, WSAStartup()'s documentation says:
>>>
>>> "A call to the WSAGetLastError function is not needed and should not be used"
>>> ---
>>> libavformat/network.c | 7 ++++++-
>>> 1 file changed, 6 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/libavformat/network.c b/libavformat/network.c
>>> index f752efc411..fb70f9cafc 100644
>>> --- a/libavformat/network.c
>>> +++ b/libavformat/network.c
>>> @@ -121,9 +121,14 @@ void ff_network_close(void)
>>> }
>>>
>>> #if HAVE_WINSOCK2_H
>>> +
>>> +}
>>> int ff_neterrno(void)
>>> {
>>> - int err = WSAGetLastError();
>>> + return ff_neterrno2(WSAGetLastError());
>>> +}
>>> +int ff_neterrno2(int err)
>>
>> ff_neterror(int err) would be a better name, since it has nothing to do with
>> errno.
>>
>> Regards.
>> Marton
>
> Not sure which one you're proposing to rename,
> but if the original
> ff_neterrno() was documented, I think it would say something like:
>
> /*
> * @brief AVERROR for the latest network function
> * @return AVERROR based on `WSAGetLastError()` (Windows) or `errno` (otherwise)
> */
>
> ... and neterrno2 would be something like:
>
> /*
> * @brief ff_neterrno()-style AVERROR
> * @param err error code (usually an errno or Windows Sockets Error Code)
> * @return AVERROR equivalent to err
> */
>
> So neither necessarily have anything to do with errno. How about adding the
> above documentation then doing s/ff_neterrno(2?)/ff_neterror\1/g ?
Okay, indeed that makes the most sense. Since the function renames will
affect a lot of existing files, it should be a separate patch with no
functional changes.
Thanks,
Marton
>
> Note: this was supposed to be a quick patch documenting the existing behaviour
> of a single function, and has now scope-crept up to a fairly sizeable refactor
> of a barely-related function. I don't mind working on this sort of thing in
> principle, but would like to land this particular patch before things get too
> much further out of hand.
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v4 0/5] avformat/network: improve ff_neterrno()
2024-05-07 21:05 ` Marton Balint
@ 2024-05-16 9:33 ` Andrew Sayers
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 1/5] Add documentation for ff_neterrno() Andrew Sayers
` (4 more replies)
0 siblings, 5 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-05-16 9:33 UTC (permalink / raw)
To: ffmpeg-devel
I've prepended two patches - one with just the documentation,
the other with just the code. The latter was generated automatically
with the command specified in the commit message, so e.g. rebase conflicts
can be resolved by throwing away the old commit and rerunning the command.
As discussed, this also fixes the assigns in if-statements.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v4 1/5] Add documentation for ff_neterrno()
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 0/5] avformat/network: improve ff_neterrno() Andrew Sayers
@ 2024-05-16 9:33 ` Andrew Sayers
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 2/5] Rename "ff_neterrno()" to "ff_neterror()" Andrew Sayers
` (3 subsequent siblings)
4 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-05-16 9:33 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
---
libavformat/network.h | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/libavformat/network.h b/libavformat/network.h
index ca214087fc..728c20c9bb 100644
--- a/libavformat/network.h
+++ b/libavformat/network.h
@@ -57,6 +57,11 @@
#define getsockopt(a, b, c, d, e) getsockopt(a, b, c, (char*) d, e)
#define setsockopt(a, b, c, d, e) setsockopt(a, b, c, (const char*) d, e)
+/*
+ * @brief AVERROR for the latest network function
+ * @return platform-specific AVERROR value
+ * @note Error is based on WSAGetLastError() (Windows) or `errno` (otherwise)
+ */
int ff_neterrno(void);
#else
#include <sys/types.h>
@@ -65,6 +70,11 @@ int ff_neterrno(void);
#include <netinet/tcp.h>
#include <netdb.h>
+/*
+ * @brief AVERROR for the latest network function
+ * @return platform-specific AVERROR value
+ * @note Error is based on WSAGetLastError() (Windows) or `errno` (otherwise)
+ */
#define ff_neterrno() AVERROR(errno)
#endif /* HAVE_WINSOCK2_H */
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v4 2/5] Rename "ff_neterrno()" to "ff_neterror()"
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 0/5] avformat/network: improve ff_neterrno() Andrew Sayers
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 1/5] Add documentation for ff_neterrno() Andrew Sayers
@ 2024-05-16 9:33 ` Andrew Sayers
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 3/5] avformat/network: add ff_neterror2() for cases where we already have an error Andrew Sayers
` (2 subsequent siblings)
4 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-05-16 9:33 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
This function does not check errno on Windows, so the old name was misleading.
Actual command:
sed -i -e 's/ff_neterrno/ff_neterror/g' $( git grep -l ff_neterrno )
---
libavformat/network.c | 24 ++++++++++++------------
libavformat/network.h | 4 ++--
libavformat/rtpproto.c | 8 ++++----
libavformat/sctp.c | 10 +++++-----
libavformat/tcp.c | 8 ++++----
libavformat/udp.c | 32 ++++++++++++++++----------------
libavformat/unix.c | 6 +++---
libavformat/url.h | 2 +-
8 files changed, 47 insertions(+), 47 deletions(-)
diff --git a/libavformat/network.c b/libavformat/network.c
index f752efc411..5d0d05c5f1 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -72,7 +72,7 @@ int ff_network_wait_fd(int fd, int write)
struct pollfd p = { .fd = fd, .events = ev, .revents = 0 };
int ret;
ret = poll(&p, 1, POLLING_TIME);
- return ret < 0 ? ff_neterrno() : p.revents & (ev | POLLERR | POLLHUP) ? 0 : AVERROR(EAGAIN);
+ return ret < 0 ? ff_neterror() : p.revents & (ev | POLLERR | POLLHUP) ? 0 : AVERROR(EAGAIN);
}
int ff_network_wait_fd_timeout(int fd, int write, int64_t timeout, AVIOInterruptCB *int_cb)
@@ -121,7 +121,7 @@ void ff_network_close(void)
}
#if HAVE_WINSOCK2_H
-int ff_neterrno(void)
+int ff_neterror(void)
{
int err = WSAGetLastError();
switch (err) {
@@ -168,7 +168,7 @@ static int ff_poll_interrupt(struct pollfd *p, nfds_t nfds, int timeout,
ret = poll(p, nfds, POLLING_TIME);
if (ret != 0) {
if (ret < 0)
- ret = ff_neterrno();
+ ret = ff_neterror();
if (ret == AVERROR(EINTR))
continue;
break;
@@ -217,11 +217,11 @@ int ff_listen(int fd, const struct sockaddr *addr,
}
ret = bind(fd, addr, addrlen);
if (ret)
- return ff_neterrno();
+ return ff_neterror();
ret = listen(fd, 1);
if (ret)
- return ff_neterrno();
+ return ff_neterror();
return ret;
}
@@ -236,7 +236,7 @@ int ff_accept(int fd, int timeout, URLContext *h)
ret = accept(fd, NULL, NULL);
if (ret < 0)
- return ff_neterrno();
+ return ff_neterror();
if (ff_socket_nonblock(ret, 1) < 0)
av_log(h, AV_LOG_DEBUG, "ff_socket_nonblock failed\n");
@@ -267,7 +267,7 @@ int ff_listen_connect(int fd, const struct sockaddr *addr,
av_log(h, AV_LOG_DEBUG, "ff_socket_nonblock failed\n");
while ((ret = connect(fd, addr, addrlen))) {
- ret = ff_neterrno();
+ ret = ff_neterror();
switch (ret) {
case AVERROR(EINTR):
if (ff_check_interrupt(&h->interrupt_callback))
@@ -280,7 +280,7 @@ int ff_listen_connect(int fd, const struct sockaddr *addr,
return ret;
optlen = sizeof(ret);
if (getsockopt (fd, SOL_SOCKET, SO_ERROR, &ret, &optlen))
- ret = AVUNERROR(ff_neterrno());
+ ret = AVUNERROR(ff_neterror());
if (ret != 0) {
char errbuf[100];
ret = AVERROR(ret);
@@ -365,7 +365,7 @@ static int start_connect_attempt(struct ConnectionAttempt *attempt,
attempt->fd = ff_socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol, h);
if (attempt->fd < 0)
- return ff_neterrno();
+ return ff_neterror();
attempt->deadline_us = av_gettime_relative() + timeout_ms * 1000;
attempt->addr = ai;
@@ -381,7 +381,7 @@ static int start_connect_attempt(struct ConnectionAttempt *attempt,
}
while ((ret = connect(attempt->fd, ai->ai_addr, ai->ai_addrlen))) {
- ret = ff_neterrno();
+ ret = ff_neterror();
switch (ret) {
case AVERROR(EINTR):
if (ff_check_interrupt(&h->interrupt_callback)) {
@@ -478,7 +478,7 @@ int ff_connect_parallel(struct addrinfo *addrs, int timeout_ms_per_address,
// a successful connection or an error).
optlen = sizeof(last_err);
if (getsockopt(attempts[i].fd, SOL_SOCKET, SO_ERROR, &last_err, &optlen))
- last_err = ff_neterrno();
+ last_err = ff_neterror();
else if (last_err != 0)
last_err = AVERROR(last_err);
if (last_err == 0) {
@@ -587,6 +587,6 @@ int ff_http_match_no_proxy(const char *no_proxy, const char *hostname)
void ff_log_net_error(void *ctx, int level, const char* prefix)
{
char errbuf[100];
- av_strerror(ff_neterrno(), errbuf, sizeof(errbuf));
+ av_strerror(ff_neterror(), errbuf, sizeof(errbuf));
av_log(ctx, level, "%s: %s\n", prefix, errbuf);
}
diff --git a/libavformat/network.h b/libavformat/network.h
index 728c20c9bb..f338694212 100644
--- a/libavformat/network.h
+++ b/libavformat/network.h
@@ -62,7 +62,7 @@
* @return platform-specific AVERROR value
* @note Error is based on WSAGetLastError() (Windows) or `errno` (otherwise)
*/
-int ff_neterrno(void);
+int ff_neterror(void);
#else
#include <sys/types.h>
#include <sys/socket.h>
@@ -75,7 +75,7 @@ int ff_neterrno(void);
* @return platform-specific AVERROR value
* @note Error is based on WSAGetLastError() (Windows) or `errno` (otherwise)
*/
-#define ff_neterrno() AVERROR(errno)
+#define ff_neterror() AVERROR(errno)
#endif /* HAVE_WINSOCK2_H */
#if HAVE_ARPA_INET_H
diff --git a/libavformat/rtpproto.c b/libavformat/rtpproto.c
index b1cdf061f0..e8963307f3 100644
--- a/libavformat/rtpproto.c
+++ b/libavformat/rtpproto.c
@@ -410,8 +410,8 @@ static int rtp_read(URLContext *h, uint8_t *buf, int size)
len = recvfrom(p[i].fd, buf, size, 0,
(struct sockaddr *)addrs[i], addr_lens[i]);
if (len < 0) {
- if (ff_neterrno() == AVERROR(EAGAIN) ||
- ff_neterrno() == AVERROR(EINTR))
+ if (ff_neterror() == AVERROR(EAGAIN) ||
+ ff_neterror() == AVERROR(EINTR))
continue;
return AVERROR(EIO);
}
@@ -422,7 +422,7 @@ static int rtp_read(URLContext *h, uint8_t *buf, int size)
} else if (n == 0 && h->rw_timeout > 0 && --runs <= 0) {
return AVERROR(ETIMEDOUT);
} else if (n < 0) {
- if (ff_neterrno() == AVERROR(EINTR))
+ if (ff_neterror() == AVERROR(EINTR))
continue;
return AVERROR(EIO);
}
@@ -492,7 +492,7 @@ static int rtp_write(URLContext *h, const uint8_t *buf, int size)
ret = sendto(fd, buf, size, 0, (struct sockaddr *) source,
*source_len);
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
if (RTP_PT_IS_RTCP(buf[1])) {
diff --git a/libavformat/sctp.c b/libavformat/sctp.c
index 9d9e90097e..7170a716e7 100644
--- a/libavformat/sctp.c
+++ b/libavformat/sctp.c
@@ -222,7 +222,7 @@ static int sctp_open(URLContext *h, const char *uri, int flags)
restart:
fd = ff_socket(cur_ai->ai_family, SOCK_STREAM, IPPROTO_SCTP, h);
if (fd < 0) {
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail;
}
@@ -261,7 +261,7 @@ restart:
av_log(h, AV_LOG_ERROR,
"SCTP ERROR: Unable to initialize socket max streams %d\n",
s->max_streams);
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail1;
}
}
@@ -296,7 +296,7 @@ static int sctp_wait_fd(int fd, int write)
int ret;
ret = poll(&p, 1, 100);
- return ret < 0 ? ff_neterrno() : p.revents & ev ? 0 : AVERROR(EAGAIN);
+ return ret < 0 ? ff_neterror() : p.revents & ev ? 0 : AVERROR(EAGAIN);
}
static int sctp_read(URLContext *h, uint8_t *buf, int size)
@@ -319,7 +319,7 @@ static int sctp_read(URLContext *h, uint8_t *buf, int size)
} else
ret = recv(s->fd, buf, size, 0);
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
static int sctp_write(URLContext *h, const uint8_t *buf, int size)
@@ -345,7 +345,7 @@ static int sctp_write(URLContext *h, const uint8_t *buf, int size)
} else
ret = send(s->fd, buf, size, MSG_NOSIGNAL);
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
static int sctp_close(URLContext *h)
diff --git a/libavformat/tcp.c b/libavformat/tcp.c
index 755e3af242..2c12ee78ad 100644
--- a/libavformat/tcp.c
+++ b/libavformat/tcp.c
@@ -226,7 +226,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
cur_ai->ai_socktype,
cur_ai->ai_protocol, h);
if (fd < 0) {
- ret = ff_neterrno();
+ ret = ff_neterror();
cur_ai = cur_ai->ai_next;
}
}
@@ -296,7 +296,7 @@ static int tcp_read(URLContext *h, uint8_t *buf, int size)
ret = recv(s->fd, buf, size, 0);
if (ret == 0)
return AVERROR_EOF;
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
static int tcp_write(URLContext *h, const uint8_t *buf, int size)
@@ -310,7 +310,7 @@ static int tcp_write(URLContext *h, const uint8_t *buf, int size)
return ret;
}
ret = send(s->fd, buf, size, MSG_NOSIGNAL);
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
static int tcp_shutdown(URLContext *h, int flags)
@@ -357,7 +357,7 @@ static int tcp_get_window_size(URLContext *h)
#endif
if (getsockopt(s->fd, SOL_SOCKET, SO_RCVBUF, &avail, &avail_len)) {
- return ff_neterrno();
+ return ff_neterror();
}
return avail;
}
diff --git a/libavformat/udp.c b/libavformat/udp.c
index c1ebdd1222..aca3ed9ceb 100644
--- a/libavformat/udp.c
+++ b/libavformat/udp.c
@@ -190,7 +190,7 @@ static int udp_set_multicast_ttl(int sockfd, int mcastTTL,
ff_log_net_error(logctx, AV_LOG_DEBUG, "setsockopt(IPV4/IPV6 MULTICAST TTL)");
if (setsockopt(sockfd, protocol, cmd, &ttl, sizeof(ttl)) < 0) {
ff_log_net_error(logctx, AV_LOG_ERROR, "setsockopt(IPV4/IPV6 MULTICAST TTL)");
- return ff_neterrno();
+ return ff_neterror();
}
}
@@ -211,7 +211,7 @@ static int udp_join_multicast_group(int sockfd, struct sockaddr *addr,
mreq.imr_interface.s_addr = INADDR_ANY;
if (setsockopt(sockfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (const void *)&mreq, sizeof(mreq)) < 0) {
ff_log_net_error(logctx, AV_LOG_ERROR, "setsockopt(IP_ADD_MEMBERSHIP)");
- return ff_neterrno();
+ return ff_neterror();
}
}
#endif
@@ -224,7 +224,7 @@ static int udp_join_multicast_group(int sockfd, struct sockaddr *addr,
mreq6.ipv6mr_interface = 0;
if (setsockopt(sockfd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &mreq6, sizeof(mreq6)) < 0) {
ff_log_net_error(logctx, AV_LOG_ERROR, "setsockopt(IPV6_ADD_MEMBERSHIP)");
- return ff_neterrno();
+ return ff_neterror();
}
}
#endif
@@ -294,7 +294,7 @@ static int udp_set_multicast_sources(URLContext *h,
ff_log_net_error(h, AV_LOG_ERROR, "setsockopt(MCAST_JOIN_SOURCE_GROUP)");
else
ff_log_net_error(h, AV_LOG_ERROR, "setsockopt(MCAST_BLOCK_SOURCE)");
- return ff_neterrno();
+ return ff_neterror();
}
}
return 0;
@@ -326,7 +326,7 @@ static int udp_set_multicast_sources(URLContext *h,
ff_log_net_error(h, AV_LOG_ERROR, "setsockopt(IP_ADD_SOURCE_MEMBERSHIP)");
else
ff_log_net_error(h, AV_LOG_ERROR, "setsockopt(IP_BLOCK_SOURCE)");
- return ff_neterrno();
+ return ff_neterror();
}
}
#else
@@ -508,8 +508,8 @@ static void *circular_buffer_task_rx( void *_URLContext)
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &old_cancelstate);
pthread_mutex_lock(&s->mutex);
if (len < 0) {
- if (ff_neterrno() != AVERROR(EAGAIN) && ff_neterrno() != AVERROR(EINTR)) {
- s->circular_buffer_error = ff_neterrno();
+ if (ff_neterror() != AVERROR(EAGAIN) && ff_neterror() != AVERROR(EINTR)) {
+ s->circular_buffer_error = ff_neterror();
goto end;
}
continue;
@@ -621,7 +621,7 @@ static void *circular_buffer_task_tx( void *_URLContext)
len -= ret;
p += ret;
} else {
- ret = ff_neterrno();
+ ret = ff_neterror();
if (ret != AVERROR(EAGAIN) && ret != AVERROR(EINTR)) {
pthread_mutex_lock(&s->mutex);
s->circular_buffer_error = ret;
@@ -797,7 +797,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
if (s->reuse_socket > 0 || (s->is_multicast && s->reuse_socket < 0)) {
s->reuse_socket = 1;
if (setsockopt (udp_fd, SOL_SOCKET, SO_REUSEADDR, &(s->reuse_socket), sizeof(s->reuse_socket)) != 0) {
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail;
}
}
@@ -805,7 +805,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
if (s->is_broadcast) {
#ifdef SO_BROADCAST
if (setsockopt (udp_fd, SOL_SOCKET, SO_BROADCAST, &(s->is_broadcast), sizeof(s->is_broadcast)) != 0) {
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail;
}
#else
@@ -829,7 +829,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
if (dscp >= 0) {
dscp <<= 2;
if (setsockopt (udp_fd, IPPROTO_IP, IP_TOS, &dscp, sizeof(dscp)) != 0) {
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail;
}
}
@@ -846,7 +846,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
/* the bind is needed to give a port to the socket now */
if (bind_ret < 0 && bind(udp_fd,(struct sockaddr *)&my_addr, len) < 0) {
ff_log_net_error(h, AV_LOG_ERROR, "bind failed");
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail;
}
@@ -890,7 +890,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
tmp = s->buffer_size;
if (setsockopt(udp_fd, SOL_SOCKET, SO_SNDBUF, &tmp, sizeof(tmp)) < 0) {
ff_log_net_error(h, AV_LOG_ERROR, "setsockopt(SO_SNDBUF)");
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail;
}
} else {
@@ -914,7 +914,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
if (s->is_connected) {
if (connect(udp_fd, (struct sockaddr *) &s->dest_addr, s->dest_addr_len)) {
ff_log_net_error(h, AV_LOG_ERROR, "connect");
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail;
}
}
@@ -1045,7 +1045,7 @@ static int udp_read(URLContext *h, uint8_t *buf, int size)
}
ret = recvfrom(s->udp_fd, buf, size, 0, (struct sockaddr *)&addr, &addr_len);
if (ret < 0)
- return ff_neterrno();
+ return ff_neterror();
if (ff_ip_check_source_lists(&addr, &s->filters))
return AVERROR(EINTR);
return ret;
@@ -1098,7 +1098,7 @@ static int udp_write(URLContext *h, const uint8_t *buf, int size)
} else
ret = send(s->udp_fd, buf, size, 0);
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
static int udp_close(URLContext *h)
diff --git a/libavformat/unix.c b/libavformat/unix.c
index 5704155cf0..d1b4e6a5ca 100644
--- a/libavformat/unix.c
+++ b/libavformat/unix.c
@@ -70,7 +70,7 @@ static int unix_open(URLContext *h, const char *filename, int flags)
av_strlcpy(s->addr.sun_path, filename, sizeof(s->addr.sun_path));
if ((fd = ff_socket(AF_UNIX, s->type, 0, h)) < 0)
- return ff_neterrno();
+ return ff_neterror();
if (s->timeout < 0 && h->rw_timeout)
s->timeout = h->rw_timeout / 1000;
@@ -113,7 +113,7 @@ static int unix_read(URLContext *h, uint8_t *buf, int size)
ret = recv(s->fd, buf, size, 0);
if (!ret && s->type == SOCK_STREAM)
return AVERROR_EOF;
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
static int unix_write(URLContext *h, const uint8_t *buf, int size)
@@ -127,7 +127,7 @@ static int unix_write(URLContext *h, const uint8_t *buf, int size)
return ret;
}
ret = send(s->fd, buf, size, MSG_NOSIGNAL);
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
static int unix_close(URLContext *h)
diff --git a/libavformat/url.h b/libavformat/url.h
index 0784d77b64..a6b48d06d9 100644
--- a/libavformat/url.h
+++ b/libavformat/url.h
@@ -150,7 +150,7 @@ int ffurl_open_whitelist(URLContext **puc, const char *filename, int flags,
*
* @param s server context
* @param c client context, must be unallocated.
- * @return >= 0 on success, ff_neterrno() on failure.
+ * @return >= 0 on success, ff_neterror() on failure.
*/
int ffurl_accept(URLContext *s, URLContext **c);
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v4 3/5] avformat/network: add ff_neterror2() for cases where we already have an error
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 0/5] avformat/network: improve ff_neterrno() Andrew Sayers
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 1/5] Add documentation for ff_neterrno() Andrew Sayers
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 2/5] Rename "ff_neterrno()" to "ff_neterror()" Andrew Sayers
@ 2024-05-16 9:33 ` Andrew Sayers
2024-05-16 10:42 ` Rémi Denis-Courmont
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 4/5] avformat/network: Return 0/AVERROR from ff_network_init() Andrew Sayers
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 5/5] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
4 siblings, 1 reply; 34+ messages in thread
From: Andrew Sayers @ 2024-05-16 9:33 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
For example, WSAStartup()'s documentation says:
"A call to the WSAGetLastError function is not needed and should not be used"
---
libavformat/network.c | 5 ++++-
libavformat/network.h | 12 ++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/libavformat/network.c b/libavformat/network.c
index 5d0d05c5f1..351dc34bb6 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -123,7 +123,10 @@ void ff_network_close(void)
#if HAVE_WINSOCK2_H
int ff_neterror(void)
{
- int err = WSAGetLastError();
+ return ff_neterror2(WSAGetLastError());
+}
+int ff_neterror2(int err)
+{
switch (err) {
case WSAEWOULDBLOCK:
return AVERROR(EAGAIN);
diff --git a/libavformat/network.h b/libavformat/network.h
index f338694212..7c8f81a050 100644
--- a/libavformat/network.h
+++ b/libavformat/network.h
@@ -63,6 +63,12 @@
* @note Error is based on WSAGetLastError() (Windows) or `errno` (otherwise)
*/
int ff_neterror(void);
+/*
+ * @brief ff_neterror()-style AVERROR
+ * @param err error code (usually an errno or Windows Sockets Error Code)
+ * @note Windows Sockets Error Codes are only supported in Windows
+ */
+int ff_neterror2(int err);
#else
#include <sys/types.h>
#include <sys/socket.h>
@@ -76,6 +82,12 @@ int ff_neterror(void);
* @note Error is based on WSAGetLastError() (Windows) or `errno` (otherwise)
*/
#define ff_neterror() AVERROR(errno)
+/*
+ * @brief ff_neterror()-style AVERROR
+ * @param err error code (usually an errno or Windows Sockets Error Code)
+ * @note Windows Sockets Error Codes are only supported in Windows
+ */
+#define ff_neterror2(ERRNO) AVERROR(ERRNO)
#endif /* HAVE_WINSOCK2_H */
#if HAVE_ARPA_INET_H
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v4 4/5] avformat/network: Return 0/AVERROR from ff_network_init()
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 0/5] avformat/network: improve ff_neterrno() Andrew Sayers
` (2 preceding siblings ...)
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 3/5] avformat/network: add ff_neterror2() for cases where we already have an error Andrew Sayers
@ 2024-05-16 9:33 ` Andrew Sayers
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 5/5] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
4 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-05-16 9:33 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
---
libavformat/avio.c | 7 +++++--
libavformat/network.c | 7 +++----
libavformat/rtsp.c | 14 ++++++++------
libavformat/rtspdec.c | 5 +++--
libavformat/sapdec.c | 5 +++--
libavformat/sapenc.c | 5 +++--
6 files changed, 25 insertions(+), 18 deletions(-)
diff --git a/libavformat/avio.c b/libavformat/avio.c
index d109f3adff..8c94bfeb14 100644
--- a/libavformat/avio.c
+++ b/libavformat/avio.c
@@ -123,8 +123,11 @@ static int url_alloc_for_protocol(URLContext **puc, const URLProtocol *up,
int err;
#if CONFIG_NETWORK
- if (up->flags & URL_PROTOCOL_FLAG_NETWORK && !ff_network_init())
- return AVERROR(EIO);
+ if (up->flags & URL_PROTOCOL_FLAG_NETWORK) {
+ err = ff_network_init();
+ if (err<0)
+ return err;
+ }
#endif
if ((flags & AVIO_FLAG_READ) && !up->url_read) {
av_log(NULL, AV_LOG_ERROR,
diff --git a/libavformat/network.c b/libavformat/network.c
index 351dc34bb6..643294efe4 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -59,11 +59,10 @@ int ff_network_init(void)
{
#if HAVE_WINSOCK2_H
WSADATA wsaData;
-
- if (WSAStartup(MAKEWORD(1,1), &wsaData))
- return 0;
+ return ff_neterror2(WSAStartup(MAKEWORD(1,1), &wsaData));
+#else
+ return 0;
#endif
- return 1;
}
int ff_network_wait_fd(int fd, int write)
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index b0c61ee00a..d50d0b7fc0 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -1740,8 +1740,9 @@ int ff_rtsp_connect(AVFormatContext *s)
return AVERROR(EINVAL);
}
- if (!ff_network_init())
- return AVERROR(EIO);
+ err = ff_network_init();
+ if (err<0)
+ return err;
if (s->max_delay < 0) /* Not set by the caller */
s->max_delay = s->iformat ? DEFAULT_REORDERING_DELAY : 0;
@@ -2395,8 +2396,9 @@ static int sdp_read_header(AVFormatContext *s)
char url[MAX_URL_SIZE];
AVBPrint bp;
- if (!ff_network_init())
- return AVERROR(EIO);
+ err = ff_network_init();
+ if (err<0)
+ return err;
if (s->max_delay < 0) /* Not set by the caller */
s->max_delay = DEFAULT_REORDERING_DELAY;
@@ -2522,8 +2524,8 @@ static int rtp_read_header(AVFormatContext *s)
AVBPrint sdp;
AVDictionary *opts = NULL;
- if (!ff_network_init())
- return AVERROR(EIO);
+ if ((ret = ff_network_init())<0)
+ return ret;
opts = map_to_opts(rt);
ret = ffurl_open_whitelist(&in, s->url, AVIO_FLAG_READ,
diff --git a/libavformat/rtspdec.c b/libavformat/rtspdec.c
index 10078ce2fa..1b4b478170 100644
--- a/libavformat/rtspdec.c
+++ b/libavformat/rtspdec.c
@@ -663,8 +663,9 @@ static int rtsp_listen(AVFormatContext *s)
int ret;
enum RTSPMethod methodcode;
- if (!ff_network_init())
- return AVERROR(EIO);
+ ret = ff_network_init();
+ if (ret<0)
+ return ret;
/* extract hostname and port */
av_url_split(proto, sizeof(proto), auth, sizeof(auth), host, sizeof(host),
diff --git a/libavformat/sapdec.c b/libavformat/sapdec.c
index 357c0dd514..393e544556 100644
--- a/libavformat/sapdec.c
+++ b/libavformat/sapdec.c
@@ -70,8 +70,9 @@ static int sap_read_header(AVFormatContext *s)
int port;
int ret, i;
- if (!ff_network_init())
- return AVERROR(EIO);
+ ret = ff_network_init();
+ if (ret<0)
+ return ret;
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &port,
path, sizeof(path), s->url);
diff --git a/libavformat/sapenc.c b/libavformat/sapenc.c
index 87a834a8d8..5760e3a0c2 100644
--- a/libavformat/sapenc.c
+++ b/libavformat/sapenc.c
@@ -80,8 +80,9 @@ static int sap_write_header(AVFormatContext *s)
int udp_fd;
AVDictionaryEntry* title = av_dict_get(s->metadata, "title", NULL, 0);
- if (!ff_network_init())
- return AVERROR(EIO);
+ ret = ff_network_init();
+ if (ret<0)
+ return ret;
/* extract hostname and port */
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &base_port,
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v4 5/5] avformat/avformat: Document return codes for av_format_(de)init
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 0/5] avformat/network: improve ff_neterrno() Andrew Sayers
` (3 preceding siblings ...)
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 4/5] avformat/network: Return 0/AVERROR from ff_network_init() Andrew Sayers
@ 2024-05-16 9:33 ` Andrew Sayers
4 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-05-16 9:33 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
---
libavformat/avformat.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 8afdcd9fd0..f624fb1e2e 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -1944,12 +1944,16 @@ const char *avformat_license(void);
* This function will be deprecated once support for older GnuTLS and
* OpenSSL libraries is removed, and this function has no purpose
* anymore.
+ *
+ * @return 0 for success or AVERROR code
*/
int avformat_network_init(void);
/**
* Undo the initialization done by avformat_network_init. Call it only
* once for each time you called avformat_network_init.
+ *
+ * @return 0 for success or AVERROR code
*/
int avformat_network_deinit(void);
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [FFmpeg-devel] [PATCH v4 3/5] avformat/network: add ff_neterror2() for cases where we already have an error
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 3/5] avformat/network: add ff_neterror2() for cases where we already have an error Andrew Sayers
@ 2024-05-16 10:42 ` Rémi Denis-Courmont
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 0/6] avformat/network: improve ff_neterrno() Andrew Sayers
0 siblings, 1 reply; 34+ messages in thread
From: Rémi Denis-Courmont @ 2024-05-16 10:42 UTC (permalink / raw)
To: FFmpeg development discussions and patches
Le 16 mai 2024 12:33:36 GMT+03:00, Andrew Sayers <ffmpeg-devel@pileofstuff.org> a écrit :
>For example, WSAStartup()'s documentation says:
>
> "A call to the WSAGetLastError function is not needed and should not be used"
>---
> libavformat/network.c | 5 ++++-
> libavformat/network.h | 12 ++++++++++++
> 2 files changed, 16 insertions(+), 1 deletion(-)
>
>diff --git a/libavformat/network.c b/libavformat/network.c
>index 5d0d05c5f1..351dc34bb6 100644
>--- a/libavformat/network.c
>+++ b/libavformat/network.c
>@@ -123,7 +123,10 @@ void ff_network_close(void)
> #if HAVE_WINSOCK2_H
> int ff_neterror(void)
> {
>- int err = WSAGetLastError();
>+ return ff_neterror2(WSAGetLastError());
>+}
>+int ff_neterror2(int err)
Err, please. Keep this to the Windows back-end. Nothing good is going to happen with a function that does nothing (on other platforms) and has a nondescript numbered name.
>+{
> switch (err) {
> case WSAEWOULDBLOCK:
> return AVERROR(EAGAIN);
>diff --git a/libavformat/network.h b/libavformat/network.h
>index f338694212..7c8f81a050 100644
>--- a/libavformat/network.h
>+++ b/libavformat/network.h
>@@ -63,6 +63,12 @@
> * @note Error is based on WSAGetLastError() (Windows) or `errno` (otherwise)
> */
> int ff_neterror(void);
>+/*
>+ * @brief ff_neterror()-style AVERROR
>+ * @param err error code (usually an errno or Windows Sockets Error Code)
>+ * @note Windows Sockets Error Codes are only supported in Windows
>+ */
>+int ff_neterror2(int err);
> #else
> #include <sys/types.h>
> #include <sys/socket.h>
>@@ -76,6 +82,12 @@ int ff_neterror(void);
> * @note Error is based on WSAGetLastError() (Windows) or `errno` (otherwise)
> */
> #define ff_neterror() AVERROR(errno)
>+/*
>+ * @brief ff_neterror()-style AVERROR
>+ * @param err error code (usually an errno or Windows Sockets Error Code)
>+ * @note Windows Sockets Error Codes are only supported in Windows
>+ */
>+#define ff_neterror2(ERRNO) AVERROR(ERRNO)
> #endif /* HAVE_WINSOCK2_H */
>
> #if HAVE_ARPA_INET_H
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v5 0/6] avformat/network: improve ff_neterrno()
2024-05-16 10:42 ` Rémi Denis-Courmont
@ 2024-05-16 11:59 ` Andrew Sayers
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 1/6] Add documentation for ff_neterrno() Andrew Sayers
` (6 more replies)
0 siblings, 7 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-05-16 11:59 UTC (permalink / raw)
To: ffmpeg-devel
On Thu, May 16, 2024 at 01:42:23PM +0300, Rémi Denis-Courmont wrote:
> Err, please. Keep this to the Windows back-end. Nothing good is going to happen with a function that does nothing (on other platforms) and has a nondescript numbered name.
I have no strong opinion either way, and it feels rather bikesheddable.
Here's a version with the offending part moved to its own patch -
I'm happy for whoever applies this to decide whether they want to
keep or chuck patch 4/6 :)
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v5 1/6] Add documentation for ff_neterrno()
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 0/6] avformat/network: improve ff_neterrno() Andrew Sayers
@ 2024-05-16 11:59 ` Andrew Sayers
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 2/6] Rename "ff_neterrno()" to "ff_neterror()" Andrew Sayers
` (5 subsequent siblings)
6 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-05-16 11:59 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
---
libavformat/network.h | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/libavformat/network.h b/libavformat/network.h
index ca214087fc..728c20c9bb 100644
--- a/libavformat/network.h
+++ b/libavformat/network.h
@@ -57,6 +57,11 @@
#define getsockopt(a, b, c, d, e) getsockopt(a, b, c, (char*) d, e)
#define setsockopt(a, b, c, d, e) setsockopt(a, b, c, (const char*) d, e)
+/*
+ * @brief AVERROR for the latest network function
+ * @return platform-specific AVERROR value
+ * @note Error is based on WSAGetLastError() (Windows) or `errno` (otherwise)
+ */
int ff_neterrno(void);
#else
#include <sys/types.h>
@@ -65,6 +70,11 @@ int ff_neterrno(void);
#include <netinet/tcp.h>
#include <netdb.h>
+/*
+ * @brief AVERROR for the latest network function
+ * @return platform-specific AVERROR value
+ * @note Error is based on WSAGetLastError() (Windows) or `errno` (otherwise)
+ */
#define ff_neterrno() AVERROR(errno)
#endif /* HAVE_WINSOCK2_H */
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v5 2/6] Rename "ff_neterrno()" to "ff_neterror()"
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 0/6] avformat/network: improve ff_neterrno() Andrew Sayers
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 1/6] Add documentation for ff_neterrno() Andrew Sayers
@ 2024-05-16 11:59 ` Andrew Sayers
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 3/6] avformat/network: add ff_neterror2() for cases that don't use WSAGetLastError Andrew Sayers
` (4 subsequent siblings)
6 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-05-16 11:59 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
This function does not check errno on Windows, so the old name was misleading.
Actual command:
sed -i -e 's/ff_neterrno/ff_neterror/g' $( git grep -l ff_neterrno )
---
libavformat/network.c | 24 ++++++++++++------------
libavformat/network.h | 4 ++--
libavformat/rtpproto.c | 8 ++++----
libavformat/sctp.c | 10 +++++-----
libavformat/tcp.c | 8 ++++----
libavformat/udp.c | 32 ++++++++++++++++----------------
libavformat/unix.c | 6 +++---
libavformat/url.h | 2 +-
8 files changed, 47 insertions(+), 47 deletions(-)
diff --git a/libavformat/network.c b/libavformat/network.c
index f752efc411..5d0d05c5f1 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -72,7 +72,7 @@ int ff_network_wait_fd(int fd, int write)
struct pollfd p = { .fd = fd, .events = ev, .revents = 0 };
int ret;
ret = poll(&p, 1, POLLING_TIME);
- return ret < 0 ? ff_neterrno() : p.revents & (ev | POLLERR | POLLHUP) ? 0 : AVERROR(EAGAIN);
+ return ret < 0 ? ff_neterror() : p.revents & (ev | POLLERR | POLLHUP) ? 0 : AVERROR(EAGAIN);
}
int ff_network_wait_fd_timeout(int fd, int write, int64_t timeout, AVIOInterruptCB *int_cb)
@@ -121,7 +121,7 @@ void ff_network_close(void)
}
#if HAVE_WINSOCK2_H
-int ff_neterrno(void)
+int ff_neterror(void)
{
int err = WSAGetLastError();
switch (err) {
@@ -168,7 +168,7 @@ static int ff_poll_interrupt(struct pollfd *p, nfds_t nfds, int timeout,
ret = poll(p, nfds, POLLING_TIME);
if (ret != 0) {
if (ret < 0)
- ret = ff_neterrno();
+ ret = ff_neterror();
if (ret == AVERROR(EINTR))
continue;
break;
@@ -217,11 +217,11 @@ int ff_listen(int fd, const struct sockaddr *addr,
}
ret = bind(fd, addr, addrlen);
if (ret)
- return ff_neterrno();
+ return ff_neterror();
ret = listen(fd, 1);
if (ret)
- return ff_neterrno();
+ return ff_neterror();
return ret;
}
@@ -236,7 +236,7 @@ int ff_accept(int fd, int timeout, URLContext *h)
ret = accept(fd, NULL, NULL);
if (ret < 0)
- return ff_neterrno();
+ return ff_neterror();
if (ff_socket_nonblock(ret, 1) < 0)
av_log(h, AV_LOG_DEBUG, "ff_socket_nonblock failed\n");
@@ -267,7 +267,7 @@ int ff_listen_connect(int fd, const struct sockaddr *addr,
av_log(h, AV_LOG_DEBUG, "ff_socket_nonblock failed\n");
while ((ret = connect(fd, addr, addrlen))) {
- ret = ff_neterrno();
+ ret = ff_neterror();
switch (ret) {
case AVERROR(EINTR):
if (ff_check_interrupt(&h->interrupt_callback))
@@ -280,7 +280,7 @@ int ff_listen_connect(int fd, const struct sockaddr *addr,
return ret;
optlen = sizeof(ret);
if (getsockopt (fd, SOL_SOCKET, SO_ERROR, &ret, &optlen))
- ret = AVUNERROR(ff_neterrno());
+ ret = AVUNERROR(ff_neterror());
if (ret != 0) {
char errbuf[100];
ret = AVERROR(ret);
@@ -365,7 +365,7 @@ static int start_connect_attempt(struct ConnectionAttempt *attempt,
attempt->fd = ff_socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol, h);
if (attempt->fd < 0)
- return ff_neterrno();
+ return ff_neterror();
attempt->deadline_us = av_gettime_relative() + timeout_ms * 1000;
attempt->addr = ai;
@@ -381,7 +381,7 @@ static int start_connect_attempt(struct ConnectionAttempt *attempt,
}
while ((ret = connect(attempt->fd, ai->ai_addr, ai->ai_addrlen))) {
- ret = ff_neterrno();
+ ret = ff_neterror();
switch (ret) {
case AVERROR(EINTR):
if (ff_check_interrupt(&h->interrupt_callback)) {
@@ -478,7 +478,7 @@ int ff_connect_parallel(struct addrinfo *addrs, int timeout_ms_per_address,
// a successful connection or an error).
optlen = sizeof(last_err);
if (getsockopt(attempts[i].fd, SOL_SOCKET, SO_ERROR, &last_err, &optlen))
- last_err = ff_neterrno();
+ last_err = ff_neterror();
else if (last_err != 0)
last_err = AVERROR(last_err);
if (last_err == 0) {
@@ -587,6 +587,6 @@ int ff_http_match_no_proxy(const char *no_proxy, const char *hostname)
void ff_log_net_error(void *ctx, int level, const char* prefix)
{
char errbuf[100];
- av_strerror(ff_neterrno(), errbuf, sizeof(errbuf));
+ av_strerror(ff_neterror(), errbuf, sizeof(errbuf));
av_log(ctx, level, "%s: %s\n", prefix, errbuf);
}
diff --git a/libavformat/network.h b/libavformat/network.h
index 728c20c9bb..f338694212 100644
--- a/libavformat/network.h
+++ b/libavformat/network.h
@@ -62,7 +62,7 @@
* @return platform-specific AVERROR value
* @note Error is based on WSAGetLastError() (Windows) or `errno` (otherwise)
*/
-int ff_neterrno(void);
+int ff_neterror(void);
#else
#include <sys/types.h>
#include <sys/socket.h>
@@ -75,7 +75,7 @@ int ff_neterrno(void);
* @return platform-specific AVERROR value
* @note Error is based on WSAGetLastError() (Windows) or `errno` (otherwise)
*/
-#define ff_neterrno() AVERROR(errno)
+#define ff_neterror() AVERROR(errno)
#endif /* HAVE_WINSOCK2_H */
#if HAVE_ARPA_INET_H
diff --git a/libavformat/rtpproto.c b/libavformat/rtpproto.c
index b1cdf061f0..e8963307f3 100644
--- a/libavformat/rtpproto.c
+++ b/libavformat/rtpproto.c
@@ -410,8 +410,8 @@ static int rtp_read(URLContext *h, uint8_t *buf, int size)
len = recvfrom(p[i].fd, buf, size, 0,
(struct sockaddr *)addrs[i], addr_lens[i]);
if (len < 0) {
- if (ff_neterrno() == AVERROR(EAGAIN) ||
- ff_neterrno() == AVERROR(EINTR))
+ if (ff_neterror() == AVERROR(EAGAIN) ||
+ ff_neterror() == AVERROR(EINTR))
continue;
return AVERROR(EIO);
}
@@ -422,7 +422,7 @@ static int rtp_read(URLContext *h, uint8_t *buf, int size)
} else if (n == 0 && h->rw_timeout > 0 && --runs <= 0) {
return AVERROR(ETIMEDOUT);
} else if (n < 0) {
- if (ff_neterrno() == AVERROR(EINTR))
+ if (ff_neterror() == AVERROR(EINTR))
continue;
return AVERROR(EIO);
}
@@ -492,7 +492,7 @@ static int rtp_write(URLContext *h, const uint8_t *buf, int size)
ret = sendto(fd, buf, size, 0, (struct sockaddr *) source,
*source_len);
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
if (RTP_PT_IS_RTCP(buf[1])) {
diff --git a/libavformat/sctp.c b/libavformat/sctp.c
index 9d9e90097e..7170a716e7 100644
--- a/libavformat/sctp.c
+++ b/libavformat/sctp.c
@@ -222,7 +222,7 @@ static int sctp_open(URLContext *h, const char *uri, int flags)
restart:
fd = ff_socket(cur_ai->ai_family, SOCK_STREAM, IPPROTO_SCTP, h);
if (fd < 0) {
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail;
}
@@ -261,7 +261,7 @@ restart:
av_log(h, AV_LOG_ERROR,
"SCTP ERROR: Unable to initialize socket max streams %d\n",
s->max_streams);
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail1;
}
}
@@ -296,7 +296,7 @@ static int sctp_wait_fd(int fd, int write)
int ret;
ret = poll(&p, 1, 100);
- return ret < 0 ? ff_neterrno() : p.revents & ev ? 0 : AVERROR(EAGAIN);
+ return ret < 0 ? ff_neterror() : p.revents & ev ? 0 : AVERROR(EAGAIN);
}
static int sctp_read(URLContext *h, uint8_t *buf, int size)
@@ -319,7 +319,7 @@ static int sctp_read(URLContext *h, uint8_t *buf, int size)
} else
ret = recv(s->fd, buf, size, 0);
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
static int sctp_write(URLContext *h, const uint8_t *buf, int size)
@@ -345,7 +345,7 @@ static int sctp_write(URLContext *h, const uint8_t *buf, int size)
} else
ret = send(s->fd, buf, size, MSG_NOSIGNAL);
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
static int sctp_close(URLContext *h)
diff --git a/libavformat/tcp.c b/libavformat/tcp.c
index 755e3af242..2c12ee78ad 100644
--- a/libavformat/tcp.c
+++ b/libavformat/tcp.c
@@ -226,7 +226,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
cur_ai->ai_socktype,
cur_ai->ai_protocol, h);
if (fd < 0) {
- ret = ff_neterrno();
+ ret = ff_neterror();
cur_ai = cur_ai->ai_next;
}
}
@@ -296,7 +296,7 @@ static int tcp_read(URLContext *h, uint8_t *buf, int size)
ret = recv(s->fd, buf, size, 0);
if (ret == 0)
return AVERROR_EOF;
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
static int tcp_write(URLContext *h, const uint8_t *buf, int size)
@@ -310,7 +310,7 @@ static int tcp_write(URLContext *h, const uint8_t *buf, int size)
return ret;
}
ret = send(s->fd, buf, size, MSG_NOSIGNAL);
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
static int tcp_shutdown(URLContext *h, int flags)
@@ -357,7 +357,7 @@ static int tcp_get_window_size(URLContext *h)
#endif
if (getsockopt(s->fd, SOL_SOCKET, SO_RCVBUF, &avail, &avail_len)) {
- return ff_neterrno();
+ return ff_neterror();
}
return avail;
}
diff --git a/libavformat/udp.c b/libavformat/udp.c
index c1ebdd1222..aca3ed9ceb 100644
--- a/libavformat/udp.c
+++ b/libavformat/udp.c
@@ -190,7 +190,7 @@ static int udp_set_multicast_ttl(int sockfd, int mcastTTL,
ff_log_net_error(logctx, AV_LOG_DEBUG, "setsockopt(IPV4/IPV6 MULTICAST TTL)");
if (setsockopt(sockfd, protocol, cmd, &ttl, sizeof(ttl)) < 0) {
ff_log_net_error(logctx, AV_LOG_ERROR, "setsockopt(IPV4/IPV6 MULTICAST TTL)");
- return ff_neterrno();
+ return ff_neterror();
}
}
@@ -211,7 +211,7 @@ static int udp_join_multicast_group(int sockfd, struct sockaddr *addr,
mreq.imr_interface.s_addr = INADDR_ANY;
if (setsockopt(sockfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (const void *)&mreq, sizeof(mreq)) < 0) {
ff_log_net_error(logctx, AV_LOG_ERROR, "setsockopt(IP_ADD_MEMBERSHIP)");
- return ff_neterrno();
+ return ff_neterror();
}
}
#endif
@@ -224,7 +224,7 @@ static int udp_join_multicast_group(int sockfd, struct sockaddr *addr,
mreq6.ipv6mr_interface = 0;
if (setsockopt(sockfd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &mreq6, sizeof(mreq6)) < 0) {
ff_log_net_error(logctx, AV_LOG_ERROR, "setsockopt(IPV6_ADD_MEMBERSHIP)");
- return ff_neterrno();
+ return ff_neterror();
}
}
#endif
@@ -294,7 +294,7 @@ static int udp_set_multicast_sources(URLContext *h,
ff_log_net_error(h, AV_LOG_ERROR, "setsockopt(MCAST_JOIN_SOURCE_GROUP)");
else
ff_log_net_error(h, AV_LOG_ERROR, "setsockopt(MCAST_BLOCK_SOURCE)");
- return ff_neterrno();
+ return ff_neterror();
}
}
return 0;
@@ -326,7 +326,7 @@ static int udp_set_multicast_sources(URLContext *h,
ff_log_net_error(h, AV_LOG_ERROR, "setsockopt(IP_ADD_SOURCE_MEMBERSHIP)");
else
ff_log_net_error(h, AV_LOG_ERROR, "setsockopt(IP_BLOCK_SOURCE)");
- return ff_neterrno();
+ return ff_neterror();
}
}
#else
@@ -508,8 +508,8 @@ static void *circular_buffer_task_rx( void *_URLContext)
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &old_cancelstate);
pthread_mutex_lock(&s->mutex);
if (len < 0) {
- if (ff_neterrno() != AVERROR(EAGAIN) && ff_neterrno() != AVERROR(EINTR)) {
- s->circular_buffer_error = ff_neterrno();
+ if (ff_neterror() != AVERROR(EAGAIN) && ff_neterror() != AVERROR(EINTR)) {
+ s->circular_buffer_error = ff_neterror();
goto end;
}
continue;
@@ -621,7 +621,7 @@ static void *circular_buffer_task_tx( void *_URLContext)
len -= ret;
p += ret;
} else {
- ret = ff_neterrno();
+ ret = ff_neterror();
if (ret != AVERROR(EAGAIN) && ret != AVERROR(EINTR)) {
pthread_mutex_lock(&s->mutex);
s->circular_buffer_error = ret;
@@ -797,7 +797,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
if (s->reuse_socket > 0 || (s->is_multicast && s->reuse_socket < 0)) {
s->reuse_socket = 1;
if (setsockopt (udp_fd, SOL_SOCKET, SO_REUSEADDR, &(s->reuse_socket), sizeof(s->reuse_socket)) != 0) {
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail;
}
}
@@ -805,7 +805,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
if (s->is_broadcast) {
#ifdef SO_BROADCAST
if (setsockopt (udp_fd, SOL_SOCKET, SO_BROADCAST, &(s->is_broadcast), sizeof(s->is_broadcast)) != 0) {
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail;
}
#else
@@ -829,7 +829,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
if (dscp >= 0) {
dscp <<= 2;
if (setsockopt (udp_fd, IPPROTO_IP, IP_TOS, &dscp, sizeof(dscp)) != 0) {
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail;
}
}
@@ -846,7 +846,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
/* the bind is needed to give a port to the socket now */
if (bind_ret < 0 && bind(udp_fd,(struct sockaddr *)&my_addr, len) < 0) {
ff_log_net_error(h, AV_LOG_ERROR, "bind failed");
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail;
}
@@ -890,7 +890,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
tmp = s->buffer_size;
if (setsockopt(udp_fd, SOL_SOCKET, SO_SNDBUF, &tmp, sizeof(tmp)) < 0) {
ff_log_net_error(h, AV_LOG_ERROR, "setsockopt(SO_SNDBUF)");
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail;
}
} else {
@@ -914,7 +914,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
if (s->is_connected) {
if (connect(udp_fd, (struct sockaddr *) &s->dest_addr, s->dest_addr_len)) {
ff_log_net_error(h, AV_LOG_ERROR, "connect");
- ret = ff_neterrno();
+ ret = ff_neterror();
goto fail;
}
}
@@ -1045,7 +1045,7 @@ static int udp_read(URLContext *h, uint8_t *buf, int size)
}
ret = recvfrom(s->udp_fd, buf, size, 0, (struct sockaddr *)&addr, &addr_len);
if (ret < 0)
- return ff_neterrno();
+ return ff_neterror();
if (ff_ip_check_source_lists(&addr, &s->filters))
return AVERROR(EINTR);
return ret;
@@ -1098,7 +1098,7 @@ static int udp_write(URLContext *h, const uint8_t *buf, int size)
} else
ret = send(s->udp_fd, buf, size, 0);
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
static int udp_close(URLContext *h)
diff --git a/libavformat/unix.c b/libavformat/unix.c
index 5704155cf0..d1b4e6a5ca 100644
--- a/libavformat/unix.c
+++ b/libavformat/unix.c
@@ -70,7 +70,7 @@ static int unix_open(URLContext *h, const char *filename, int flags)
av_strlcpy(s->addr.sun_path, filename, sizeof(s->addr.sun_path));
if ((fd = ff_socket(AF_UNIX, s->type, 0, h)) < 0)
- return ff_neterrno();
+ return ff_neterror();
if (s->timeout < 0 && h->rw_timeout)
s->timeout = h->rw_timeout / 1000;
@@ -113,7 +113,7 @@ static int unix_read(URLContext *h, uint8_t *buf, int size)
ret = recv(s->fd, buf, size, 0);
if (!ret && s->type == SOCK_STREAM)
return AVERROR_EOF;
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
static int unix_write(URLContext *h, const uint8_t *buf, int size)
@@ -127,7 +127,7 @@ static int unix_write(URLContext *h, const uint8_t *buf, int size)
return ret;
}
ret = send(s->fd, buf, size, MSG_NOSIGNAL);
- return ret < 0 ? ff_neterrno() : ret;
+ return ret < 0 ? ff_neterror() : ret;
}
static int unix_close(URLContext *h)
diff --git a/libavformat/url.h b/libavformat/url.h
index 0784d77b64..a6b48d06d9 100644
--- a/libavformat/url.h
+++ b/libavformat/url.h
@@ -150,7 +150,7 @@ int ffurl_open_whitelist(URLContext **puc, const char *filename, int flags,
*
* @param s server context
* @param c client context, must be unallocated.
- * @return >= 0 on success, ff_neterrno() on failure.
+ * @return >= 0 on success, ff_neterror() on failure.
*/
int ffurl_accept(URLContext *s, URLContext **c);
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v5 3/6] avformat/network: add ff_neterror2() for cases that don't use WSAGetLastError
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 0/6] avformat/network: improve ff_neterrno() Andrew Sayers
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 1/6] Add documentation for ff_neterrno() Andrew Sayers
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 2/6] Rename "ff_neterrno()" to "ff_neterror()" Andrew Sayers
@ 2024-05-16 11:59 ` Andrew Sayers
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 4/6] avformat/network: add ff_neterror2() for compatibility with Windows Andrew Sayers
` (3 subsequent siblings)
6 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-05-16 11:59 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
For example, WSAStartup()'s documentation says:
"A call to the WSAGetLastError function is not needed and should not be used"
---
libavformat/network.c | 5 ++++-
libavformat/network.h | 6 ++++++
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/libavformat/network.c b/libavformat/network.c
index 5d0d05c5f1..351dc34bb6 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -123,7 +123,10 @@ void ff_network_close(void)
#if HAVE_WINSOCK2_H
int ff_neterror(void)
{
- int err = WSAGetLastError();
+ return ff_neterror2(WSAGetLastError());
+}
+int ff_neterror2(int err)
+{
switch (err) {
case WSAEWOULDBLOCK:
return AVERROR(EAGAIN);
diff --git a/libavformat/network.h b/libavformat/network.h
index f338694212..1ac067f09f 100644
--- a/libavformat/network.h
+++ b/libavformat/network.h
@@ -63,6 +63,12 @@
* @note Error is based on WSAGetLastError() (Windows) or `errno` (otherwise)
*/
int ff_neterror(void);
+/*
+ * @brief ff_neterror()-style AVERROR
+ * @param err error code (usually an errno or Windows Sockets Error Code)
+ * @note Windows Sockets Error Codes are only supported in Windows
+ */
+int ff_neterror2(int err);
#else
#include <sys/types.h>
#include <sys/socket.h>
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v5 4/6] avformat/network: add ff_neterror2() for compatibility with Windows
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 0/6] avformat/network: improve ff_neterrno() Andrew Sayers
` (2 preceding siblings ...)
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 3/6] avformat/network: add ff_neterror2() for cases that don't use WSAGetLastError Andrew Sayers
@ 2024-05-16 11:59 ` Andrew Sayers
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 5/6] avformat/network: Return 0/AVERROR from ff_network_init() Andrew Sayers
` (2 subsequent siblings)
6 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-05-16 11:59 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
This is not currently used anywhere, but included to avoid
potential future surprises.
---
libavformat/network.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/libavformat/network.h b/libavformat/network.h
index 1ac067f09f..7c8f81a050 100644
--- a/libavformat/network.h
+++ b/libavformat/network.h
@@ -82,6 +82,12 @@ int ff_neterror2(int err);
* @note Error is based on WSAGetLastError() (Windows) or `errno` (otherwise)
*/
#define ff_neterror() AVERROR(errno)
+/*
+ * @brief ff_neterror()-style AVERROR
+ * @param err error code (usually an errno or Windows Sockets Error Code)
+ * @note Windows Sockets Error Codes are only supported in Windows
+ */
+#define ff_neterror2(ERRNO) AVERROR(ERRNO)
#endif /* HAVE_WINSOCK2_H */
#if HAVE_ARPA_INET_H
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v5 5/6] avformat/network: Return 0/AVERROR from ff_network_init()
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 0/6] avformat/network: improve ff_neterrno() Andrew Sayers
` (3 preceding siblings ...)
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 4/6] avformat/network: add ff_neterror2() for compatibility with Windows Andrew Sayers
@ 2024-05-16 11:59 ` Andrew Sayers
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 6/6] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
2024-05-31 9:07 ` [FFmpeg-devel] [PATCH v5 0/6] avformat/network: improve ff_neterrno() Andrew Sayers
6 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-05-16 11:59 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
---
libavformat/avio.c | 7 +++++--
libavformat/network.c | 7 +++----
libavformat/rtsp.c | 14 ++++++++------
libavformat/rtspdec.c | 5 +++--
libavformat/sapdec.c | 5 +++--
libavformat/sapenc.c | 5 +++--
6 files changed, 25 insertions(+), 18 deletions(-)
diff --git a/libavformat/avio.c b/libavformat/avio.c
index d109f3adff..8c94bfeb14 100644
--- a/libavformat/avio.c
+++ b/libavformat/avio.c
@@ -123,8 +123,11 @@ static int url_alloc_for_protocol(URLContext **puc, const URLProtocol *up,
int err;
#if CONFIG_NETWORK
- if (up->flags & URL_PROTOCOL_FLAG_NETWORK && !ff_network_init())
- return AVERROR(EIO);
+ if (up->flags & URL_PROTOCOL_FLAG_NETWORK) {
+ err = ff_network_init();
+ if (err<0)
+ return err;
+ }
#endif
if ((flags & AVIO_FLAG_READ) && !up->url_read) {
av_log(NULL, AV_LOG_ERROR,
diff --git a/libavformat/network.c b/libavformat/network.c
index 351dc34bb6..643294efe4 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -59,11 +59,10 @@ int ff_network_init(void)
{
#if HAVE_WINSOCK2_H
WSADATA wsaData;
-
- if (WSAStartup(MAKEWORD(1,1), &wsaData))
- return 0;
+ return ff_neterror2(WSAStartup(MAKEWORD(1,1), &wsaData));
+#else
+ return 0;
#endif
- return 1;
}
int ff_network_wait_fd(int fd, int write)
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index b0c61ee00a..d50d0b7fc0 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -1740,8 +1740,9 @@ int ff_rtsp_connect(AVFormatContext *s)
return AVERROR(EINVAL);
}
- if (!ff_network_init())
- return AVERROR(EIO);
+ err = ff_network_init();
+ if (err<0)
+ return err;
if (s->max_delay < 0) /* Not set by the caller */
s->max_delay = s->iformat ? DEFAULT_REORDERING_DELAY : 0;
@@ -2395,8 +2396,9 @@ static int sdp_read_header(AVFormatContext *s)
char url[MAX_URL_SIZE];
AVBPrint bp;
- if (!ff_network_init())
- return AVERROR(EIO);
+ err = ff_network_init();
+ if (err<0)
+ return err;
if (s->max_delay < 0) /* Not set by the caller */
s->max_delay = DEFAULT_REORDERING_DELAY;
@@ -2522,8 +2524,8 @@ static int rtp_read_header(AVFormatContext *s)
AVBPrint sdp;
AVDictionary *opts = NULL;
- if (!ff_network_init())
- return AVERROR(EIO);
+ if ((ret = ff_network_init())<0)
+ return ret;
opts = map_to_opts(rt);
ret = ffurl_open_whitelist(&in, s->url, AVIO_FLAG_READ,
diff --git a/libavformat/rtspdec.c b/libavformat/rtspdec.c
index 10078ce2fa..1b4b478170 100644
--- a/libavformat/rtspdec.c
+++ b/libavformat/rtspdec.c
@@ -663,8 +663,9 @@ static int rtsp_listen(AVFormatContext *s)
int ret;
enum RTSPMethod methodcode;
- if (!ff_network_init())
- return AVERROR(EIO);
+ ret = ff_network_init();
+ if (ret<0)
+ return ret;
/* extract hostname and port */
av_url_split(proto, sizeof(proto), auth, sizeof(auth), host, sizeof(host),
diff --git a/libavformat/sapdec.c b/libavformat/sapdec.c
index 357c0dd514..393e544556 100644
--- a/libavformat/sapdec.c
+++ b/libavformat/sapdec.c
@@ -70,8 +70,9 @@ static int sap_read_header(AVFormatContext *s)
int port;
int ret, i;
- if (!ff_network_init())
- return AVERROR(EIO);
+ ret = ff_network_init();
+ if (ret<0)
+ return ret;
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &port,
path, sizeof(path), s->url);
diff --git a/libavformat/sapenc.c b/libavformat/sapenc.c
index 87a834a8d8..5760e3a0c2 100644
--- a/libavformat/sapenc.c
+++ b/libavformat/sapenc.c
@@ -80,8 +80,9 @@ static int sap_write_header(AVFormatContext *s)
int udp_fd;
AVDictionaryEntry* title = av_dict_get(s->metadata, "title", NULL, 0);
- if (!ff_network_init())
- return AVERROR(EIO);
+ ret = ff_network_init();
+ if (ret<0)
+ return ret;
/* extract hostname and port */
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &base_port,
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* [FFmpeg-devel] [PATCH v5 6/6] avformat/avformat: Document return codes for av_format_(de)init
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 0/6] avformat/network: improve ff_neterrno() Andrew Sayers
` (4 preceding siblings ...)
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 5/6] avformat/network: Return 0/AVERROR from ff_network_init() Andrew Sayers
@ 2024-05-16 11:59 ` Andrew Sayers
2024-05-31 9:07 ` [FFmpeg-devel] [PATCH v5 0/6] avformat/network: improve ff_neterrno() Andrew Sayers
6 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-05-16 11:59 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Andrew Sayers
---
libavformat/avformat.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 8afdcd9fd0..f624fb1e2e 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -1944,12 +1944,16 @@ const char *avformat_license(void);
* This function will be deprecated once support for older GnuTLS and
* OpenSSL libraries is removed, and this function has no purpose
* anymore.
+ *
+ * @return 0 for success or AVERROR code
*/
int avformat_network_init(void);
/**
* Undo the initialization done by avformat_network_init. Call it only
* once for each time you called avformat_network_init.
+ *
+ * @return 0 for success or AVERROR code
*/
int avformat_network_deinit(void);
--
2.43.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [FFmpeg-devel] [PATCH v5 0/6] avformat/network: improve ff_neterrno()
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 0/6] avformat/network: improve ff_neterrno() Andrew Sayers
` (5 preceding siblings ...)
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 6/6] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
@ 2024-05-31 9:07 ` Andrew Sayers
6 siblings, 0 replies; 34+ messages in thread
From: Andrew Sayers @ 2024-05-31 9:07 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On Thu, May 16, 2024 at 12:59:05PM +0100, Andrew Sayers wrote:
> On Thu, May 16, 2024 at 01:42:23PM +0300, Rémi Denis-Courmont wrote:
> > Err, please. Keep this to the Windows back-end. Nothing good is going to happen with a function that does nothing (on other platforms) and has a nondescript numbered name.
>
> I have no strong opinion either way, and it feels rather bikesheddable.
> Here's a version with the offending part moved to its own patch -
> I'm happy for whoever applies this to decide whether they want to
> keep or chuck patch 4/6 :)
Ping?
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 34+ messages in thread
end of thread, other threads:[~2024-05-31 9:07 UTC | newest]
Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-19 16:59 [FFmpeg-devel] [PATCH 1/2] avformat/utils: handle errors > 0 in avformat_network_init() Andrew Sayers
2024-04-19 16:59 ` [FFmpeg-devel] [PATCH 2/2] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
2024-04-19 17:04 ` [FFmpeg-devel] [PATCH 1/2] avformat/utils: handle errors > 0 in avformat_network_init() James Almer
2024-04-19 17:23 ` [FFmpeg-devel] [PATCH v2 1/2] avformat/network: Return a proper negative error code from ff_network_init() Andrew Sayers
2024-04-19 17:23 ` [FFmpeg-devel] [PATCH v2 2/2] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
2024-04-19 17:37 ` [FFmpeg-devel] [PATCH v2 1/2] avformat/network: Return a proper negative error code from ff_network_init() James Almer
2024-04-19 19:07 ` [FFmpeg-devel] [PATCH v3 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno Andrew Sayers
2024-04-19 19:08 ` [FFmpeg-devel] [PATCH v3 2/3] avformat/network: Return 0/AVERROR from ff_network_init() Andrew Sayers
2024-04-19 19:08 ` [FFmpeg-devel] [PATCH v3 3/3] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
2024-04-20 7:57 ` [FFmpeg-devel] [PATCH v3 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno Stefano Sabatini
2024-04-20 13:24 ` [FFmpeg-devel] [PATCH v4 " Andrew Sayers
2024-04-20 13:25 ` [FFmpeg-devel] [PATCH v4 2/3] avformat/network: Return 0/AVERROR from ff_network_init() Andrew Sayers
2024-05-05 20:05 ` Marton Balint
2024-05-07 13:12 ` Andrew Sayers
2024-04-20 13:25 ` [FFmpeg-devel] [PATCH v4 3/3] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
2024-04-27 8:46 ` [FFmpeg-devel] [PATCH v4 1/3] avformat/network: add ff_neterrno2() for cases where we already have an errno Andrew Sayers
2024-05-05 19:59 ` [FFmpeg-devel] [PATCH v3 " Marton Balint
2024-05-07 13:41 ` Andrew Sayers
2024-05-07 21:05 ` Marton Balint
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 0/5] avformat/network: improve ff_neterrno() Andrew Sayers
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 1/5] Add documentation for ff_neterrno() Andrew Sayers
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 2/5] Rename "ff_neterrno()" to "ff_neterror()" Andrew Sayers
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 3/5] avformat/network: add ff_neterror2() for cases where we already have an error Andrew Sayers
2024-05-16 10:42 ` Rémi Denis-Courmont
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 0/6] avformat/network: improve ff_neterrno() Andrew Sayers
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 1/6] Add documentation for ff_neterrno() Andrew Sayers
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 2/6] Rename "ff_neterrno()" to "ff_neterror()" Andrew Sayers
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 3/6] avformat/network: add ff_neterror2() for cases that don't use WSAGetLastError Andrew Sayers
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 4/6] avformat/network: add ff_neterror2() for compatibility with Windows Andrew Sayers
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 5/6] avformat/network: Return 0/AVERROR from ff_network_init() Andrew Sayers
2024-05-16 11:59 ` [FFmpeg-devel] [PATCH v5 6/6] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
2024-05-31 9:07 ` [FFmpeg-devel] [PATCH v5 0/6] avformat/network: improve ff_neterrno() Andrew Sayers
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 4/5] avformat/network: Return 0/AVERROR from ff_network_init() Andrew Sayers
2024-05-16 9:33 ` [FFmpeg-devel] [PATCH v4 5/5] avformat/avformat: Document return codes for av_format_(de)init Andrew Sayers
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git