<div dir="ltr"><div>Hello,<br><br></div>I'm trying to create an example where I send some data over ssl then I downgrade the connection and send data over tcp . Unfortunately I'm doing something wrong.<br><br><pre style="background-color:rgb(255,255,255);color:rgb(0,0,0);font-family:"menlo";font-size:9pt">-export([test/<span style="color:rgb(0,0,255)">0</span>])<span style="color:rgb(0,0,128);font-weight:bold">.<br></span><span style="color:rgb(0,0,128);font-weight:bold"><br></span>get_certificate() -><br>    <span style="color:rgb(0,128,0);font-weight:bold">"test/server.pem"</span><span style="color:rgb(0,0,128);font-weight:bold">.<br></span><span style="color:rgb(0,0,128);font-weight:bold"><br></span>-define(<span style="color:rgb(102,14,122)">SSL</span>, ssl)<span style="color:rgb(0,0,128);font-weight:bold">.<br></span><span style="color:rgb(0,0,128);font-weight:bold"><br></span>test() -><br>    ?<span style="color:rgb(102,14,122)">SSL</span>:start(),<br>    <span style="color:rgb(102,14,122)">Port </span>= <span style="color:rgb(0,0,255)">12000</span>,<br>    <span style="color:rgb(102,14,122)">Opt </span>= [<br>        binary,<br>        {exit_on_close, false},<br>        {active, false},<br>        {ciphers, [<span style="color:rgb(0,128,0);font-weight:bold">"AES128-GCM-SHA256"</span>]},<br>        {verify, verify_none}<br>    ],<br><br>    {ok, <span style="color:rgb(102,14,122)">LSocket</span>} = ?<span style="color:rgb(102,14,122)">SSL</span>:listen(<span style="color:rgb(102,14,122)">Port</span>, [{certfile, get_certificate()} | <span style="color:rgb(102,14,122)">Opt</span>]),<br><br>    <span style="color:rgb(102,14,122)">ClientProc </span>= <span style="color:rgb(0,0,128);font-weight:bold">fun</span>() -><br>        {ok, <span style="color:rgb(102,14,122)">CSocket</span>} = ?<span style="color:rgb(102,14,122)">SSL</span>:connect(<span style="color:rgb(0,128,0);font-weight:bold">"127.0.0.1"</span>, <span style="color:rgb(102,14,122)">Port</span>, <span style="color:rgb(102,14,122)">Opt</span>),<br>        ok = ?<span style="color:rgb(102,14,122)">SSL</span>:send(<span style="color:rgb(102,14,122)">CSocket</span>, <<<span style="color:rgb(0,128,0);font-weight:bold">"PING"</span>>>),<br>        {ok, <<<span style="color:rgb(0,128,0);font-weight:bold">"PONG"</span>>> } = ?<span style="color:rgb(102,14,122)">SSL</span>:recv(<span style="color:rgb(102,14,122)">CSocket</span>, <span style="color:rgb(0,0,255)">0</span>),<br>        {ok, <span style="color:rgb(102,14,122)">TcpSocket</span>} = ?<span style="color:rgb(102,14,122)">SSL</span>:close(<span style="color:rgb(102,14,122)">CSocket</span>, {self(), <span style="color:rgb(0,0,255)">3000</span>}),<br>        {ok, <<<span style="color:rgb(0,128,0);font-weight:bold">"PLAIN_DATA"</span>>>} = gen_tcp:recv(<span style="color:rgb(102,14,122)">TcpSocket</span>, <span style="color:rgb(0,0,255)">0</span>),<br>        ok = gen_tcp:send(<span style="color:rgb(102,14,122)">TcpSocket</span>, <<<span style="color:rgb(0,128,0);font-weight:bold">"PLAIN_RESPONSE"</span>>>),<br>        ok = gen_tcp:close(<span style="color:rgb(102,14,122)">CSocket</span>)<br>    <span style="color:rgb(0,0,128);font-weight:bold">end</span>,<br><br>    spawn(<span style="color:rgb(102,14,122)">ClientProc</span>),<br><br>    {ok, <span style="color:rgb(102,14,122)">Socket</span>} = ?<span style="color:rgb(102,14,122)">SSL</span>:transport_accept(<span style="color:rgb(102,14,122)">LSocket</span>, <span style="color:rgb(0,0,255)">5000</span>),<br>    ok = ?<span style="color:rgb(102,14,122)">SSL</span>:ssl_accept(<span style="color:rgb(102,14,122)">Socket</span>),<br>    {ok, <<<span style="color:rgb(0,128,0);font-weight:bold">"PING"</span>>> } = ?<span style="color:rgb(102,14,122)">SSL</span>:recv(<span style="color:rgb(102,14,122)">Socket</span>, <span style="color:rgb(0,0,255)">0</span>),<br>    ok = ?<span style="color:rgb(102,14,122)">SSL</span>:send(<span style="color:rgb(102,14,122)">Socket</span>, <<<span style="color:rgb(0,128,0);font-weight:bold">"PONG"</span>>>),<br>    {ok, <span style="color:rgb(102,14,122)">TcpSocket</span>} = ?<span style="color:rgb(102,14,122)">SSL</span>:close(<span style="color:rgb(102,14,122)">Socket</span>, {self(), <span style="color:rgb(0,0,255)">3000</span>}),<br>    ok = gen_tcp:send(<span style="color:rgb(102,14,122)">TcpSocket</span>, <<<span style="color:rgb(0,128,0);font-weight:bold">"PLAIN_DATA"</span>>>),<br>    {ok, <<<span style="color:rgb(0,128,0);font-weight:bold">"PLAIN_RESPONSE"</span>>>} = gen_tcp:recv(<span style="color:rgb(102,14,122)">TcpSocket</span>, <span style="color:rgb(0,0,255)">0</span>),<br>    ok = gen_tcp:close(<span style="color:rgb(102,14,122)">Socket</span>),<br><br>    ok = ?<span style="color:rgb(102,14,122)">SSL</span>:close(<span style="color:rgb(102,14,122)">LSocket</span>),<br>    true<span style="color:rgb(0,0,128);font-weight:bold">.</span></pre>Any idea why it's not properly working ?<br></div>