On Thu November 17 2011, Arjun SM wrote:
> Hi,
> Thanks for the reply.
> I have called the ssl_connect() function again after checking for
> SSL_ERROR_WANT_READ
> and SSL_ERROR_WANT_WRITE. But I wanted to know if I can optimize my code.
> Below is my code
>
> int counter = 6;
> while (status < 0 && --counter >0 )
> {
> if(status < 0)
> {
> error=SSL_get_error(ssl,status);
> if(error == SSL_ERROR_WANT_READ || error ==
> SSL_ERROR_WANT_WRITE)
> {
> MessageLog.Write("****SSL 1st Connect error ", error);
>
But these two cases are __not__ errors,
you just need to 'read' or 'write' as indicated so the protocol can advance.
Mike
> usleep(2000000);
> status = SSL_connect(ssl);
> error=SSL_get_error(ssl,status);
> MessageLog.Write("****SSL 2nd Connect error ", error);
> }
> else
> {
> break;
> }
> }
> } // end of while
>
> I would try for some time and break out saying unable to connect. I am sure
> I can optimize this code by using select() but I am unable to make it work.
> If there is a better approach please do share.
>
> ~Arjun
>
> On Tue, Nov 15, 2011 at 9:04 PM, Huaqing Wang <[email protected]> wrote:
>
> > Hi, Arjun,
> >
> > For non-blocking case, you have to handle SSL_ERROR_WANT_READ and
> > SSL_ERROR_WANT_WRITE
> > In that case you need to redo *SSL_connect.*
> > *
> > *
> > Huaqing
> >
> > On Tue, Nov 15, 2011 at 5:51 AM, Arjun SM <[email protected]> wrote:
> >
> >> Hi all,
> >> I am newbie to openssl any help is greatly appreciated.
> >>
> >> I have a requirement of fetching the Common name (domin name ) from the
> >> certificate that I request from any HTTPS websites. I followed the regular
> >> method of
> >>
> >> 1. establish a connection with the ip address using *connect() *system
> >> call.
> >> 2. Use *SSL_connect()* system call to perform handshake.
> >> 3. Use *SSL_get_peer_certificate()* to get the certificate.
> >>
> >> The problem I faced was that, the connect() call would at times return a
> >> errno 4 (EINTR) error . So i changed code from blocking to non-blocking
> >> sockets and used select() call to have a valid connection and return an
> >> appropriate file descriptor.
> >> Now the ssl_connect() call returns SSL_ERROR_WANT_READ
> >> or SSL_ERROR_WANT_WRITE error. I am unable to make my code work by adding a
> >> select() even on ssl_connect() call.
> >>
> >> If any one can please help as to how I need to use the ssl_connect() by
> >> polling that would be of great help. preferred language would be C/C++
> >>
> >> thanks,
> >> ~Arjun
> >>
> >>
> >>
> >>
> >>
> >
> >
> > --
> > Thank you.
> > Best Regards,
> > Michael(Huaqing) Wang
> >
> >
>
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [email protected]
Automated List Manager [email protected]