Project

General

Profile

Actions

Bug #11701

closed

recvmsg for UDP without argument

Added by akr (Akira Tanaka) over 8 years ago. Updated over 8 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:71517]

Description

It seems recvmsg without argument doesn't work well for UDP now.

Following example sends a packet which size is 10000 bytes but
receives a packet which size is 4096 bytes.

% ./ruby -rsocket -ve 's1 = Addrinfo.udp("127.0.0.1", 0).bind             
s2 = s1.connect_address.connect
s2.send("a"*10000, 0)
ret = s1.recvmsg
p ret[0].length
'
ruby 2.3.0dev (2015-11-17 trunk 52613) [x86_64-linux]
4096

ruby-2.3.0-preview1 worked well.
It receives a packet which size is 10000 bytes.

% ruby-2.3.0-preview1 -rsocket -ve 's1 = Addrinfo.udp("127.0.0.1", 0).bind
s2 = s1.connect_address.connect
s2.send("a"*10000, 0)
ret = s1.recvmsg
p ret[0].length
'
ruby 2.3.0preview1 (2015-11-11 trunk 52539) [x86_64-linux]
10000

This behavior (recvmsg without arguments) is documented as follows:

maxmesglen and maxcontrollen can
be nil. In that case, the buffer will be grown until the message is not
truncated. Internally, MSG_PEEK is used and MSG_TRUNC/MSG_CTRUNC are checked.
Actions

Also available in: Atom PDF

Like0
Like0Like0