[vlc-devel] [PATCH 1/2] access/rtp: define MSG_TRUNC on recv call if available.
Rémi Denis-Courmont
remi at remlab.net
Sun Oct 14 11:16:23 CEST 2018
Le lauantaina 13. lokakuuta 2018, 21.04.43 EEST Ilkka Ollakka a écrit :
> Defining the MSG_TRUNC on msghrd does only tell if data is truncated,
> not what the actual data size was.
>
> Tested the adjust of MTU by sending data to localhost via netcat:
>
> cat ~/tmp/myfile.mp3|netcat -u 127.0.0.1 1234
>
> and vlc -Idummy -vv rtp://@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.
I would add 'const', and maybe clarify the description because it took me some
time to figure out what the problem and solution was here.
But looks OK.
> ---
> modules/access/rtp/input.c | 18 +++++++++---------
> 1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/modules/access/rtp/input.c b/modules/access/rtp/input.c
> index f22f6655ab..be23e3b3e6 100644
> --- a/modules/access/rtp/input.c
> +++ b/modules/access/rtp/input.c
> @@ -109,6 +109,12 @@ void *rtp_dgram_thread (void *opaque)
> demux_sys_t *sys = demux->p_sys;
> vlc_tick_t deadline = VLC_TICK_INVALID;
> int rtp_fd = sys->fd;
> +#ifdef __linux__
> + int trunc_flag = MSG_TRUNC;
> +#else
> + int trunc_flag = 0;
> +#endif
> +
> struct iovec iov =
> {
> .iov_len = DEFAULT_MRU,
> @@ -149,17 +155,12 @@ void *rtp_dgram_thread (void *opaque)
> }
>
> iov.iov_base = block->p_buffer;
> -#ifdef __linux__
> - msg.msg_flags = MSG_TRUNC;
> -#else
> - msg.msg_flags = 0;
> -#endif
> + msg.msg_flags = trunc_flag;
>
> - ssize_t len = recvmsg (rtp_fd, &msg, 0);
> + ssize_t len = recvmsg (rtp_fd, &msg, trunc_flag);
> if (len != -1)
> {
> -#ifdef MSG_TRUNC
> - if (msg.msg_flags & MSG_TRUNC)
> + if (msg.msg_flags & trunc_flag )
> {
> msg_Err(demux, "%zd bytes packet truncated (MRU was
> %zu)", len, iov.iov_len);
> @@ -167,7 +168,6 @@ void *rtp_dgram_thread (void *opaque)
> iov.iov_len = len;
> }
> else
> -#endif
> block->i_buffer = len;
>
> rtp_process (demux, block);
--
Rémi Denis-Courmont
http://www.remlab.net/
More information about the vlc-devel
mailing list