From c920faf0f0cb7075be3d290389d7b0eac98aae09 Mon Sep 17 00:00:00 2001 From: David Reiss Date: Wed, 11 Jun 2008 01:01:56 +0000 Subject: [PATCH] erlang thrift_client will return {stop, Error} in start_link on a gen_tcp:connect error rather than exiting git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666448 13f79535-47bb-0310-9956-ffa450edef68 --- lib/alterl/src/thrift_client.erl | 43 ++++++++++++---------- lib/alterl/src/thrift_framed_transport.erl | 2 +- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/lib/alterl/src/thrift_client.erl b/lib/alterl/src/thrift_client.erl index 779595cb..a88c22c4 100644 --- a/lib/alterl/src/thrift_client.erl +++ b/lib/alterl/src/thrift_client.erl @@ -65,27 +65,30 @@ close(Client) when is_pid(Client) -> init([Host, Port, Service, Options]) -> State = parse_options(Options, #state{}), - {ok, Sock} = gen_tcp:connect(Host, Port, - [binary, - {packet, 0}, - {active, false}, - {nodelay, true} - ], - State#state.connect_timeout), - - {ok, Transport} = thrift_socket_transport:new(Sock), - {ok, BufTransport} = - case State#state.framed of - true -> thrift_framed_transport:new(Transport); - false -> thrift_buffered_transport:new(Transport) - end, - {ok, Protocol} = thrift_binary_protocol:new(BufTransport, - [{strict_read, State#state.strict_read}, - {strict_write, State#state.strict_write}]), + TcpOptions = [binary, + {packet, 0}, + {active, false}, + {nodelay, true}], + TcpTimeout = State#state.connect_timeout, + + case gen_tcp:connect(Host, Port, TcpOptions, TcpTimeout) of + {ok, Sock} -> + {ok, Transport} = thrift_socket_transport:new(Sock), + {ok, BufTransport} = + case State#state.framed of + true -> thrift_framed_transport:new(Transport); + false -> thrift_buffered_transport:new(Transport) + end, + {ok, Protocol} = thrift_binary_protocol:new(BufTransport, + [{strict_read, State#state.strict_read}, + {strict_write, State#state.strict_write}]), - {ok, State#state{service = Service, - protocol = Protocol, - seqid = 0}}. + {ok, State#state{service = Service, + protocol = Protocol, + seqid = 0}}; + Error -> + {stop, Error} + end. parse_options([], State) -> State; diff --git a/lib/alterl/src/thrift_framed_transport.erl b/lib/alterl/src/thrift_framed_transport.erl index 814e0d94..2e77d73f 100644 --- a/lib/alterl/src/thrift_framed_transport.erl +++ b/lib/alterl/src/thrift_framed_transport.erl @@ -119,7 +119,7 @@ handle_call({read, Len}, _From, State = #framed_transport{wrapped = Wrapped, %% then read the data {ok, Bin} = thrift_transport:read(Wrapped, FrameLen), - {Bin, size(Bin)}; + {Bin, erlang:byte_size(Bin)}; Sz -> {RBuf, Sz} end, -- 2.17.1