[vlc-devel] [PATCH 2/2] access/udp: Define MSG_TRUNC on recv call

Steve Lhomme robux4 at ycbcr.xyz
Mon Oct 15 08:06:49 CEST 2018


On 13/10/2018 20:03, Ilkka Ollakka wrote:
> Allows receiving the data size additional to trunced flag.
>
> Tested adjustment of MTU by sending data to localhost via netcat:
>
> cat ~/tmp/myfile.mp3|netcat -u 127.0.0.1 1234
>
> and vlc -Idummy -vv udp://@127.0.0.1:1234 --sout="#stat"
>
> without this patch the rtp input constantly complains about trunced
> input and doesn't adjust the receiving amount.
> ---
>   modules/access/udp.c | 15 +++++++++------
>   1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/modules/access/udp.c b/modules/access/udp.c
> index d84cb7b99a..e2069278ea 100644
> --- a/modules/access/udp.c
> +++ b/modules/access/udp.c
> @@ -231,6 +231,12 @@ static block_t *BlockUDP(stream_t *access, bool *restrict eof)
>           return NULL;
>       }
>   
> +#ifdef __linux__
> +    int trunc_flag = MSG_TRUNC;
> +#else
> +    int trunc_flag = 0;
> +#endif
> +
>       struct iovec iov = {
>           .iov_base = pkt->p_buffer,
>           .iov_len = sys->mtu,
> @@ -238,9 +244,7 @@ static block_t *BlockUDP(stream_t *access, bool *restrict eof)
>       struct msghdr msg = {
>           .msg_iov = &iov,
>           .msg_iovlen = 1,
> -#ifdef __linux__
> -        .msg_flags = MSG_TRUNC,
> -#endif
> +        .msg_flags = trunc_flag,
>       };
>   
>       struct pollfd ufd[1];
> @@ -258,7 +262,8 @@ static block_t *BlockUDP(stream_t *access, bool *restrict eof)
>               goto skip;
>        }
>   
> -    ssize_t len = recvmsg(sys->fd, &msg, 0);
> +    ssize_t len = recvmsg(sys->fd, &msg, trunc_flag);
> +
>       if (len < 0)
>       {
>   skip:
> @@ -266,7 +271,6 @@ skip:
>           return NULL;
>       }
>   
> -#ifdef MSG_TRUNC
>       if (msg.msg_flags & MSG_TRUNC)

You should test against trunc_flag like in the other patch. There's a 
chance MSG_TRUNC is not defined on many platforms.

>       {
>           msg_Err(access, "%zd bytes packet truncated (MTU was %zu)",
> @@ -275,7 +279,6 @@ skip:
>           sys->mtu = len;
>       }
>       else
> -#endif
>           pkt->i_buffer = len;
>   
>       return pkt;
> -- 
> 2.19.0
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel



More information about the vlc-devel mailing list