Ohh .. ok. But I just want the SSL_connect to succeed because I want to
fetch the certificate of an HTTPS website. So after the success of
SSL_connect() function, I would call SSL_get_peer_certificate().
Since I wait until the SSL_connect() function succeeds I wanted to know if
there is a better approach.

Hope I am able to convey my understandings for these functions. If you feel
that I dont, please help in understanding the same.

~Arjun

On Mon, Nov 21, 2011 at 8:10 PM, Michael S. Zick <open...@morethan.org>wrote:

> On Mon November 21 2011, Arjun SM wrote:
> > Well yes, these are not errors. My bad for naming the variable as
> 'error'.
> >
>
> Not my point -
>
> Your logic shows that you think the connection has failed when it has
> simple not yet finished with its protocol.
>
> Not finished because you didn't respond to the want-write and/or want-read.
> Something which your code must do when using non-blocking sockets.
>
> Mike
> > ~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
> > >
> >
>
>
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> User Support Mailing List                    openssl-users@openssl.org
> Automated List Manager                           majord...@openssl.org
>

Reply via email to