Age | Commit message (Collapse) | Author |
|
There is no reason to have a larger buffer than this as
the recvmsg call will never return more data.
OTP-15206
|
|
|
|
|
|
The old testcase did not test anything at all, it seems like
it was written with the non-smp emulator inmind.
|
|
|
|
|
|
For some reason doing a gen_udp:open(0, [inet6,{ipv6_v6only,true}])
works on some systems where ipv6 is disabled. So instead we
explicitly require the localhost ip to do the test at which seems
to work better.
ipv6 was disabled in sysctl using the line net.ipv6.conf.all.disable_ipv6=1
when this behaviour was found.
|
|
Conflicts:
lib/kernel/test/gen_tcp_api_SUITE.erl
lib/kernel/test/gen_udp_SUITE.erl
|
|
* raimo/uds-support/OTP-13643:
Update test cases after daily builds
Return eafnosupport when not supported
Add AF_LOCAL test cases
Handle 'undefined' in fdopen
|
|
|
|
|
|
Most systems alias localhost to both the ipv4 and ipv6 localhost
address, but in some cases localhost6 is used instead.
|
|
|
|
|
|
|
|
While we are it, also re-ident the files.
|
|
Remove out-commented code. Make sure that comments that are not
at the end of a line starts with two '%' characters and not just
one. That will become important later when we'll remove all
?line macros and ask Emacs to re-indent the files.
|
|
|
|
Those clause are obsolete and never used by common_test.
|
|
|
|
|
|
As a first step to removing the test_server application as
as its own separate application, change the inclusion of
test_server.hrl to an inclusion of ct.hrl and remove the
inclusion of test_server_line.hrl.
|
|
|
|
Conflicts:
erts/doc/src/notes.xml
erts/preloaded/ebin/prim_inet.beam
erts/vsn.mk
lib/kernel/doc/src/notes.xml
lib/kernel/vsn.mk
|
|
Update testcase for gen_udp:open/2 with option fd
|
|
Add the {active,N} socket option, where N is an integer in the range
-32768..32767, to allow a caller to specify the number of data messages to
be delivered to the controlling process. Once the socket's delivered
message count either reaches 0 or is explicitly set to 0 with
inet:setopts/2 or by including {active,0} as an option when the socket is
created, the socket transitions to passive ({active, false}) mode and the
socket's controlling process receives a message to inform it of the
transition. TCP sockets receive {tcp_passive,Socket}, UDP sockets receive
{udp_passive,Socket} and SCTP sockets receive {sctp_passive,Socket}.
The socket's delivered message counter defaults to 0, but it can be set
using {active,N} via any gen_tcp, gen_udp, or gen_sctp function that takes
socket options as arguments, or via inet:setopts/2. New N values are added
to the socket's current counter value, and negative numbers can be used to
reduce the counter value. Specifying a number that would cause the socket's
counter value to go above 32767 causes an einval error. If a negative
number is specified such that the counter value would become negative, the
socket's counter value is set to 0 and the socket transitions to passive
mode. If the counter value is already 0 and inet:setopts(Socket,
[{active,0}]) is specified, the counter value remains at 0 but the
appropriate passive mode transition message is generated for the socket.
This commit contains a modified preloaded prim_inet.beam due to changes in
prim_inet.erl.
Add tests for {active,N} mode for TCP, UDP, and SCTP sockets.
Add documentation for {active,N} mode for inet, gen_tcp, gen_udp, and
gen_sctp.
|
|
|
|
|
|
|
|
The type is marked as a binary() or a string() but in practice it can
be an iodata(). The test suite was updated to confirm the gen_tcp/2
and gen_udp:send/4 functions accept iodata() (iolists) packets.
|
|
If an IPv4 fd is opened as an IPv6 socket, unexpected behaviour can
occur. For example, if an IPv4 UDP socket is opened and passed into
Erlang as an IPv6 socket, the first 3 bytes (corresponding to 1 byte
representing the protocol family, 2 bytes set to the port) are stripped
from the payload. The cause of the UDP payload truncation happens in
inet_drv.c:packet_inet_input when a call to inet_get_address fails
silently because the family is set to PF_INET6 but the buffer len is
the size of an IPv4 struct sockaddr_in.
Prevent this behaviour by checking that the protocol family of the file
descriptor matches the family of the requested Erlang socket.
{ok, S1} = gen_udp:open(0, [binary, inet]),
{ok, FD} = inet:getfd(S1),
{ok, Port} = inet:port(S1),
{ok, S} = gen_udp:open(Port, [binary, {fd, FD}, inet6]),
{ok, C} = gen_udp:open(0, [binary]),
Msg = <<1,2,3,4,5>>,
gen_udp:send(C, "127.0.0.1", Port, Msg),
receive
{udp, S, _, _, Msg} -> ok;
{udp, S, _, _, NewMsg} -> {error, Msg, NewMsg}
end.
This test results in: {error,<<1,2,3,4,5>>,<<4,5>>}
Thanks to Andrew Tunnell-Jones for finding the bug and the test case!
|
|
|
|
* raimo/kernel-implicit_inet6-testcase:
Improve implicit_inet6 testcase skip conditions
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Conflicts:
lib/kernel/test/gen_sctp_SUITE.erl
|
|
Debug and patch by Per Hedeland for R13B04 on erlang-patches:
Connected UDP (and handling of any other errors in UDP recv())
is broken in passive mode for all SCTP-enabled builds.
|
|
|