[erlang-questions] Unimplemented {buffer, integer()} option in ssl module - bug?

Ingela Andin <>
Fri Dec 2 11:28:05 CET 2016


2016-12-01 12:37 GMT+01:00 Richard Jones <>:

> The {buffer, integer()} option from gen_tcp is useful for breaking up
> incoming data into manageable sizes, especially when in {packet, line}
> mode.
>
> The docs suggest (kinda) that the gen_tcp options should also work
> when connecting via the ssl module, but this isn'

always the case -
> the buffer option is silently ignored by ssl:connect
>

Actually it is not ignored it just is not has no noticeable affect to you.

Is this

a bug? Tested on erl 17, 18, 19
>
>
For this option to work as expected for you it needs to be emulated by the
ssl process as are packet related options. So it is a missing feature.

Regards  Ingela Erlang/OTP- team



> Examples follow using netcat/socat as a server. Note that gen_tcp
> breaks the incoming data into 3 messages, ssl delivers as one large
> message.
>
> Non-SSL example:
> ----------------
>
> $ echo "12345678901234567890123" | nc -l 1234
>
> 1> {ok, _} = gen_tcp:connect("localhost", 1234, [
>  binary,
>  {packet, line},
>  {buffer, 10},
>  {active, true}]).
>
> {ok,#Port<0.1180>}
>
> 2> flush().
>
> Shell got {tcp,#Port<0.1180>,<<"1234567890">>}
> Shell got {tcp,#Port<0.1180>,<<"1234567890">>}
> Shell got {tcp,#Port<0.1180>,<<"123\n">>}
> Shell got {tcp_closed,#Port<0.1180>}
> ok
>
> SSL example:
> ------------
>
> $ echo "12345678901234567890123" | socat STDIO
> OPENSSL-LISTEN:1234,reuseaddr,cert=/some.pem,cafile=/some.crt,verify=0
>
> 1> {ok, _} = ssl:connect("localhost", 1234, [
>   binary,
>   {packet, line},
>   {buffer, 10},
>   {active, true},
>   {verify, verify_none}]).
>
> {ok,{sslsocket,{gen_tcp,#Port<0.1179>,tls_connection,
>                         undefined},
>                <0.54.0>}}
>
> 2> flush().
>
> Shell got {ssl,{sslsocket,{gen_tcp,#Port<0.1179>,tls_connection,
> undefined},
>                           <0.54.0>},
>                <<"12345678901234567890123\n">>}
> Shell got {ssl_closed,
>               {sslsocket,
>                   {gen_tcp,#Port<0.1179>,tls_connection,undefined},
>                   <0.54.0>}}
> ok
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20161202/473d96fa/attachment.html>


More information about the erlang-questions mailing list