[JDEV] SSL on FreeBSD

Dirk-Willem van Gulik dirkx at covalent.net
Wed Oct 10 14:49:45 CDT 2001


On Wed, 10 Oct 2001, Thomas Muldowney wrote:

> Is that against CVS or 1.4.1?

> > To get jabber 1.4.1 to do SSL on FreeBSD I needed to do what is below. It
> > seems that the exit code is more subtle than just ok/nok.

> > diff -c3 -r jabber-1.4.1/jabberd/mio_ssl.c

Source tar of 1.4.1

Dw.

> > jabber-1.4.1.new/jabberd/mio_ssl.c
> > *** jabber-1.4.1/jabberd/mio_ssl.c      Thu Feb  1 12:46:49 2001
> > --- jabber-1.4.1.new/jabberd/mio_ssl.c  Mon Oct  1 13:26:17 2001
> > ***************
> > *** 3,8 ****
> > --- 3,9 ----
> >   #ifdef HAVE_SSL
> >   HASHTABLE ssl__ctxs;
> >
> > + #include <openssl/err.h>
> >
> >   #ifndef NO_RSA
> >   /* This function will generate a temporary key for us */
> > ***************
> > *** 165,183 ****
> >       log_debug(ZONE, "SSL accepting socket with new session %x", ssl);
> >       SSL_set_fd(ssl, fd);
> >       SSL_set_accept_state(ssl);
> > !     if(SSL_accept(ssl) <= 0){
> >           unsigned long e;
> >           static char *buf;
> >
> >           e = ERR_get_error();
> >           buf = ERR_error_string(e, NULL);
> > !         log_debug(ZONE, "Error from SSL: %s", buf);
> >           log_debug(ZONE, "SSL Error in SSL_accept call");
> >           SSL_free(ssl);
> >           close(fd);
> >           return -1;
> >       }
> > !
> >       m->ssl = ssl;
> >
> >       log_debug(ZONE, "Accepted new SSL socket %d for %s", fd, m->ip);
> > --- 166,191 ----
> >       log_debug(ZONE, "SSL accepting socket with new session %x", ssl);
> >       SSL_set_fd(ssl, fd);
> >       SSL_set_accept_state(ssl);
> > ! redo:
> > ! {    int ex = SSL_accept(ssl);
> > !
> > !      if (ex < 0) {
> > !       /* not right - 0 is controlled shutdown; -1 can have more meanings
> > */
> >           unsigned long e;
> >           static char *buf;
> >
> >           e = ERR_get_error();
> > +       if ((e==0) || (e == SSL_ERROR_WANT_READ) || ( e ==
> > SSL_ERROR_WANT_WRITE))
> > +               goto redo;
> > +
> >           buf = ERR_error_string(e, NULL);
> > !         log_debug(ZONE, "Error %d/%d from SSL: %s", ex,e,buf);
> >           log_debug(ZONE, "SSL Error in SSL_accept call");
> >           SSL_free(ssl);
> >           close(fd);
> >           return -1;
> >       }
> > ! }
> >       m->ssl = ssl;
> >
> >       log_debug(ZONE, "Accepted new SSL socket %d for %s", fd, m->ip);
> >
> >
> > _______________________________________________
> > jdev mailing list
> > jdev at jabber.org
> > http://mailman.jabber.org/listinfo/jdev
>




More information about the JDev mailing list