My client can not receive data in blocking mode
John Unsworth
John.Unsworth at synchronoss.com
Fri Sep 27 13:48:02 UTC 2019
You do not say what OS you are running on. Solaris 11 has a known problem with not reporting queued data. This was fixed by SRU-28.
Regards,
John Unsworth
________________________________
From: openssl-users <openssl-users-bounces at openssl.org> on behalf of 路连峰 <llf at e-code.net>
Sent: Monday, September 23, 2019 4:55 am
To: openssl-users
Subject: My client can not receive data in blocking mode
Hello
I'm using openssl as client in blocking mode , i have a problem .
Sometimes my program can't receive data , and acctually server has been sent the data to me.
I can only receive the data by sending another request . Then the data i expected arrived with a new data sent by server .
------------------------------------------------------------------------------
bool can_read()
{
if(SSL_pending(m_ssl))
return true;
struct timeval tv = {0 , 100};
FD_ZERO(&m_rfds);
FD_SET(m_socket.fd(), &m_rfds);
int ret = select( m_socket.fd()+1, &m_rfds , NULL, NULL, &tv);
return ret > 0 ;
}
//this is the main process
int try_receive(char * buf , int len )
{
if( !can_read())
return -1;
return SSL_read(m_ssl, buf, len);
}
-------------------------------------------------------------------------------
Above is my code , my program get `false` from `can_read` although the server has sent response data
I really appreciate your help.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mta.openssl.org/pipermail/openssl-users/attachments/20190927/f1ca5f98/attachment-0001.html>
More information about the openssl-users
mailing list