I don't think there is a function for it on TSocket right now. What you can do is call getSocketFD(), and then do something similar to the following with the result:
int optval = 1; socklen_t optlen = sizeof(optval); setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, &optval, optlen); From: Vivek Goel <[email protected]> To: [email protected], Date: 03/15/2013 01:02 AM Subject: Re: Recv timeout not working Can you please tell how can I enable it? I didn't find any property for class TSocket. regards Vivek Goel On Thu, Mar 14, 2013 at 1:10 AM, Ben Craig <[email protected]> wrote: > I think I've heard of this problem before, and I think the fix was to turn > on keep alive. I don't think there are existing hooks for that in thrift > though. Turning on keepalive should also make your clients throw an > exception much faster than one hour. > > > > From: Vivek Goel <[email protected]> > To: [email protected], > Date: 03/13/2013 01:50 PM > Subject: Recv timeout not working > > > > I am using thrift C++ library at both end server and client. > > I am facing problem with recv timeout. I am setting a one hour value for > recv timeout. But it is not working, clients are infinitely waiting on > server restart. > > > My code is: > > ---------------------------------------------------------------------------------------- > boost::shared_ptr<TSocket> socket = boost::shared_ptr<TSocket>( > new TSocket(server_host_, server_port_)); > socket->setConnTimeout(ThriftConf::connection_timeout_); > socket->setRecvTimeout(ThriftConf::recv_timeout_); > socket->setSendTimeout(ThriftConf::send_timeout_); > boost::shared_ptr<TTransport> tr = > boost::shared_ptr<TBufferedTransport>( > new TBufferedTransport(socket)); > boost::shared_ptr<TBinaryProtocol> p = > boost::shared_ptr<TBinaryProtocol>( > new TBinaryProtocol(tr)); > > > ---------------------------------------------------------------------------------------------------- > > Where values are: > (gdb) print ThriftConf::connection_timeout_ > $1 = 360000 > (gdb) print ThriftConf::recv_timeout_ > $2 = 3600000 > (gdb) print ThriftConf::send_timeout_ > $3 = 180000 > > > regards > Vivek Goel > >
