Open
Description
For HTTP/3 I am expected to receive from at least 3 unidi streams.
I wrote a CT test that looks like this:
unidi_create_critical_first(Config) →
{ok, Conn} = quicer:connect("localhost", config(port, Config),
#{alpn ⇒ ["h3"], verify ⇒ none, peer_unidi_stream_count ⇒ 3}, 5000),
{ok, Conn} = quicer:async_accept_stream(Conn, []),
timer:sleep(1000),
ct:pal("~p", [process_info(self(), messages)]),
ct:pal("~p", [process_info(self(), messages)]),
ok.
This prints the following:
----------------------------------------------------
2023-08-30 17:15:57.986
{messages,[{quic,streams_available,#Ref<0.3047038216.2871918595.261224>,
#{bidi_streams => 100,unidi_streams => 3}}]}
----------------------------------------------------
2023-08-30 17:15:57.986
{messages,[{quic,streams_available,#Ref<0.3047038216.2871918595.261224>,
#{bidi_streams => 100,unidi_streams => 3}},
{quic,new_stream,#Ref<0.3047038216.2871918592.249713>,
#{flags => 1,is_orphan => false}},
{quic,new_stream,#Ref<0.3047038216.2871918592.249714>,
#{flags => 1,is_orphan => true}},
{quic,new_stream,#Ref<0.3047038216.2871918592.249715>,
#{flags => 1,is_orphan => true}},
{quic,<<0,4,0>>,
#Ref<0.3047038216.2871918592.249713>,
#{absolute_offset => 0,flags => 0,len => 3}}]}
First thing I notice is that the first ct:pal somehow doesn't print all the messages, I'm not sure why that is. But not important for this issue. If I do a receive I receive all these messages in the order they are printed with no issue.
The first problem is that the single async_accept_stream
call resulted in 3 unidi streams getting accepted. I did not expect that at all.
The second problem is that I am not receiving the data from the two other unidi streams, even if I put more async_accept_stream
calls.