THRIFT-2842 Erlang thrift client has infinite timeout
Client: Erlang
Patch: Anthony Molinaro
diff --git a/lib/erl/src/thrift_client_util.erl b/lib/erl/src/thrift_client_util.erl
index 02368bf..7a11f3a 100644
--- a/lib/erl/src/thrift_client_util.erl
+++ b/lib/erl/src/thrift_client_util.erl
@@ -40,6 +40,7 @@
 split_options([Opt = {OptKey, _} | Rest], ProtoIn, TransIn)
   when OptKey =:= framed;
        OptKey =:= connect_timeout;
+       OptKey =:= recv_timeout;
        OptKey =:= sockopts ->
     split_options(Rest, ProtoIn, [Opt | TransIn]).
 
diff --git a/lib/erl/src/thrift_socket_transport.erl b/lib/erl/src/thrift_socket_transport.erl
index 5e1ef02..fec0241 100644
--- a/lib/erl/src/thrift_socket_transport.erl
+++ b/lib/erl/src/thrift_socket_transport.erl
@@ -54,7 +54,6 @@
   when is_integer(Len), Len >= 0 ->
     case gen_tcp:recv(Socket, Len, Timeout) of
         Err = {error, timeout} ->
-            error_logger:info_msg("read timeout: peer conn ~p", [inet:peername(Socket)]),
             gen_tcp:close(Socket),
             {This, Err};
         Data ->
@@ -87,7 +86,9 @@
 parse_factory_options([{sockopts, OptList} | Rest], Opts) when is_list(OptList) ->
     parse_factory_options(Rest, Opts#factory_opts{sockopts=OptList});
 parse_factory_options([{connect_timeout, TO} | Rest], Opts) when TO =:= infinity; is_integer(TO) ->
-    parse_factory_options(Rest, Opts#factory_opts{connect_timeout=TO}).
+    parse_factory_options(Rest, Opts#factory_opts{connect_timeout=TO});
+parse_factory_options([{recv_timeout, TO} | Rest], Opts) when TO =:= infinity; is_integer(TO) ->
+    parse_factory_options(Rest, Opts).
 
 
 %%
@@ -108,7 +109,8 @@
                 case catch gen_tcp:connect(Host, Port, SockOpts,
                                            ParsedOpts#factory_opts.connect_timeout) of
                     {ok, Sock} ->
-                        {ok, Transport} = thrift_socket_transport:new(Sock),
+                        {ok, Transport} =
+                          thrift_socket_transport:new(Sock, Options),
                         {ok, BufTransport} =
                             case ParsedOpts#factory_opts.framed of
                                 true  -> thrift_framed_transport:new(Transport);