2016-02-07 44 views
5

piszę ten prosty kod z ssltcp:{aktywny N} tryb Erlang bezpiecznego tcp

ssl:start(). 
{ok, ListenSocket} = ssl:listen(9999, [{certfile, "cert.pem"}, {keyfile, "key.pem"},{reuseaddr, true}]). 
{ok, Socket} = ssl:transport_accept(ListenSocket). 
ssl:ssl_accept(Socket). 
ssl:setopts(Socket, [{active, once}]). 

to działa dobrze, ale kiedy zastąpić {active, once} z {active, 3}, zwraca błąd:

{error,{options,{socket_options,{active,3}}}}

Jak korzystać z trybu {active, N} w bezpiecznym tcp?

Odpowiedz

6

Tryb {active,N} nie jest zaimplementowany do połączeń SSL. Oryginalnie napisałem tryb {active,N} i gdy przyjrzałem się możliwemu wdrożeniu go dla protokołu SSL, odkryłem, że sposób, w jaki gniazda Erlang SSL są implementowane ponad głównymi gniazdami TCP, powoduje zmiany na tych gniazdach pomiędzy trybami aktywnymi i pasywnymi w ramach implementacji protokołu. , a więc implementacja {active,N} dla SSL nie jest po prostu kwestią otwarcia podstawowego gniazda w tym trybie.