Как использовать Erlang ssl:close/2

У меня есть сервер SSL, и я хочу понизить его версию после получения первого ssl:recv до необработанного gen_tcp. Предполагая, что это можно использовать для этого, я не могу найти пример того, как это использовать. И я еще не очень хорошо разбираюсь в документации Erlang/OTP http://erlang.org/doc/man/ssl.html#close-2

Я немного запутался с NewController::pid() из документации:

How = timeout() | {NewController::pid(), timeout()}

person Mike5050    schedule 09.08.2017    source источник


Ответы (1)


NewController::pid() здесь относится к процессу, который вы хотите установить как «управляющий процесс» для TCP-сокета пониженной версии. gen_tcp функции в сокете будут работать, только если они вызываются из этого процесса. Вам нужно отправить self() здесь, если вы не хотите использовать сокет TCP с пониженной версией из другого процесса.

Единственный пример, который я смог найти, когда ssl:close/2 используется с кортежем в качестве второго аргумента: -L4812" rel="nofollow noreferrer">этот тест. Вот упрощенная версия этого кода для начала:

% Assuming `SSLSocket` is the SSL socket.
{ok, TCPSocket} = ssl:close(SSLSocket, {self(), 10000}),
% You can use `TCPSocket` with `gen_tcp` now.
gen_tcp:send(TCPSocket, "foo"),
person Dogbert    schedule 10.08.2017
comment
Я получаю сообщение об ошибке, тайм-аут, когда я это делаю. В последнем случае транспортное соединение будет передано процессу NewController после получения предупреждения о закрытии TLS от однорангового узла. -- Нужно ли партнеру (клиенту) отправить что-то особенное? - person Mike5050; 10.08.2017