Skip to content

Instantly share code, notes, and snippets.

@mjm
Created October 25, 2024 23:52
Show Gist options
  • Save mjm/490abd286e526fceaeb0e373414e1214 to your computer and use it in GitHub Desktop.
Save mjm/490abd286e526fceaeb0e373414e1214 to your computer and use it in GitHub Desktop.
UDS + UDP unexpected messages
defmodule UdsBlockExample do
def test_socket() do
{:ok, socket} = :gen_udp.open(0, [:local, {:active, false}])
for i <- 0..100000 do
packet = ["#{i} hello " |> List.duplicate(100), "\n"]
:gen_udp.send(socket, {:local, "/tmp/test.sock"}, 0, packet)
receive do
{:inet_reply, _port, _ref} = msg ->
raise "Got unexpected inet reply message: #{inspect(msg)}"
after
0 -> nil
end
end
:gen_udp.close(socket)
end
def test_listen() do
{:ok, socket} = :gen_udp.open(0, [:local, :binary, {:ifaddr, {:local, "/tmp/test.sock"}}])
listen_loop(socket)
end
defp listen_loop(socket) do
receive do
{:udp, _socket, peer_ip, peer_port, packet} ->
IO.puts("Got packet from #{inspect(peer_ip)} #{inspect(peer_port)}: #{byte_size(packet)} bytes")
listen_loop(socket)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment