[FFmpeg-devel] [PATCH] avio: Check for FF_NETERROR(EAGAIN) in retry_transfer_wrapper

Luca Barbato lu_zero
Sun Feb 27 14:56:53 CET 2011


On 02/22/2011 06:43 PM, Ronald S. Bultje wrote:
> Hi,
> 
> On Tue, Feb 22, 2011 at 8:42 AM, Martin Storsj? <martin at martin.st> wrote:
>> On Tue, 22 Feb 2011, Martin Storsj? wrote:
>>
>>> On Tue, 22 Feb 2011, M?ns Rullg?rd wrote:
>>>
>>>>> diff --git a/libavformat/network.h b/libavformat/network.h
>>>>> index d6aee93..c575975 100644
>>>>> --- a/libavformat/network.h
>>>>> +++ b/libavformat/network.h
>>>>> @@ -27,9 +27,21 @@
>>>>>  #include <winsock2.h>
>>>>>  #include <ws2tcpip.h>
>>>>>
>>>>> -#define ff_neterrno() (-WSAGetLastError())
>>>>> -#define FF_NETERROR(err) (-WSA##err)
>>>>> -#define WSAEAGAIN WSAEWOULDBLOCK
>>>>> +static inline int ff_neterrno() {
>>>>> +    int err = WSAGetLastError();
>>>>> +    switch (err) {
>>>>> +    case WSAEWOULDBLOCK:
>>>>> +        return AVERROR(EAGAIN);
>>>>> +    case WSAEINTR:
>>>>> +        return AVERROR(EINTR);
>>>>> +    }
>>>>> +    return -err;
>>>>> +}
>>>>> +
>>>>> +#define EPROTONOSUPPORT WSAEPROTONOSUPPORT
>>>>> +#define ETIMEDOUT WSAETIMEDOUT
>>>>> +#define ECONNREFUSED WSAECONNREFUSED
>>>>> +#define EINPROGRESS WSAEINPROGRESS
>>>>
>>>> Are we certain these are never defined on Windows, or should they have
>>>> some ifdefs?  Also, a little vertical alignment wouldn't hurt.
>>>
>>> I guess you never can be certain, but they don't exist in neither mingw32
>>> nor in Visual Studio. (mingw64 seems to have them defined, mapping to the
>>> WSAE* codes just as we do, but within #if 0.) If they later turn out to be
>>> defined in some platform update, we can always add ifdefs around them and
>>> add mapping in ff_neterrno() for them.
>>>
>>> Aligned them vertically at least, and moved them up above ff_neterrno(),
>>> which would be needed if we later will have to remap them.
>>
>> And this time featuring the actual attachment...
> 
> Queued this version.

Queue ping.


-- 

Luca Barbato
Gentoo/linux
http://dev.gentoo.org/~lu_zero




More information about the ffmpeg-devel mailing list