Well yes, these are not errors. My bad for naming the variable as 'error'.

~Arjun

On Thu, Nov 17, 2011 at 11:50 PM, Michael S. Zick <open...@morethan.org>wrote:

> 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 <whuaq...@gmail.com>
> 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 <arjun...@gmail.com> 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                    openssl-users@openssl.org
> Automated List Manager                           majord...@openssl.org
>

Reply via email to