diff options
author | Alexey Shchepin <alexey@process-one.net> | 2004-07-26 22:37:24 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2004-07-26 22:37:24 +0000 |
commit | e10fc255aab1b37cf682bd7c9d5c13a0db6c9c2e (patch) | |
tree | 922b3d6cdf4766b2c95cb282c3119bee63b3536d /src/tls | |
parent | *** empty log message *** (diff) |
* src/tls/tls.erl: Updated
SVN Revision: 249
Diffstat (limited to 'src/tls')
-rw-r--r-- | src/tls/tls.erl | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/src/tls/tls.erl b/src/tls/tls.erl index 58d035c8e..96275d3f0 100644 --- a/src/tls/tls.erl +++ b/src/tls/tls.erl @@ -12,7 +12,12 @@ -behaviour(gen_server). --export([start/0, start_link/0, tcp_to_tls/2, tls_to_tcp/1, test/0]). +-export([start/0, start_link/0, + tcp_to_tls/2, tls_to_tcp/1, + send/2, + recv/2, recv/3, + close/1, + test/0]). %% Internal exports, call-back functions. -export([init/1, @@ -101,15 +106,47 @@ recv(Socket, Length) -> recv(#tlssock{tcpsock = TCPSocket, tlsport = Port}, Length, Timeout) -> case gen_tcp:recv(TCPSocket, Length, Timeout) of {ok, Packet} -> - todo; + case port_control(Port, ?SET_ENCRYPTED_INPUT, Packet) of + [0] -> + case port_control(Port, ?GET_DECRYPTED_INPUT, []) of + [0 | In] -> + case port_control(Port, ?GET_ENCRYPTED_OUTPUT, []) of + [0 | Out] -> + case gen_tcp:send(TCPSocket, Out) of + ok -> + {ok, In}; + Error -> + Error + end; + [1 | Error] -> + {error, Error} + end; + [1 | Error] -> + {error, Error} + end; + [1 | Error] -> + {error, Error} + end; {error, _Reason} = Error -> Error end. -send(#tlssock) -> - +send(#tlssock{tcpsock = TCPSocket, tlsport = Port}, Packet) -> + case port_control(Port, ?SET_DECRYPTED_OUTPUT, Packet) of + [0] -> + case port_control(Port, ?GET_ENCRYPTED_OUTPUT, []) of + [0 | Out] -> + gen_tcp:send(TCPSocket, Out); + [1 | Error] -> + {error, Error} + end; + [1 | Error] -> + {error, Error} + end. -close(#tlssock) -> - + +close(#tlssock{tcpsock = TCPSocket, tlsport = Port}) -> + gen_tcp:close(TCPSocket), + port_close(Port). test() -> |