Problem reading 'large' responses

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Problem reading 'large' responses

Paul Slootweg
I've got some code that seems to work, except when the server responds with
a 'large' amount of data.

When I call SSL_read() I get a SSL_ERROR_SYSCALL error but no data returned.

I've scoured the archive for related questions, but none of the answers
seem to tell me where I'm going wrong.

The code below is typical of what I'm doing. When SSL_read() fails, it
returns -1, and SSL_get_error() returns 5 (SSL_ERROR_SYSCALL), yet slerr
and errno are 0!

Note this is using blocking sockets and very basic OpenSSL stuff, not
and information gleaned from 

int ser, r;

r = SSL_write(m_ssl, rq.c_str(), rq.length());
ser = SSL_get_error(m_ssl, r);
if (ser == SSL_ERROR_NONE)
     char buf[65536];

     r = SSL_read(m_ssl, buf, sizeof(buf));

     ser = SSL_get_error(m_ssl, r);
     if (ser == SSL_ERROR_NONE)
         fwrite(buf, 1, r, stdout);
         int sslerr = ERR_get_error();

         int se = 0;
         switch (ser)
         case SSL_ERROR_ZERO_RETURN:
         case SSL_ERROR_WANT_READ:
         case SSL_ERROR_WANT_WRITE:
         case SSL_ERROR_WANT_ACCEPT:
         case SSL_ERROR_SYSCALL:
             se = errno;
         case SSL_ERROR_SSL:

OpenSSL Project                       
User Support Mailing List                    [hidden email]
Automated List Manager                           [hidden email]