Hi,

I tried to setup an SSL server with libevent. But the read/write callbacks
are not invoked after the handshake phase.
Please see the code below.

Thanks,
W Shao

The listener callback is as follows:

void listener_cb(struct evconnlistener *listener, evutil_socket_t fd,
       struct sockaddr *sa, int socklen, void *user_data) {
  struct event_base *base = (struct event_base*) user_data;
  struct bufferevent *bev;

  BIO *sbio=BIO_new_socket(fd,BIO_NOCLOSE);
  ssl=SSL_new(ctx);

  SSL_set_bio(ssl,sbio,sbio);

  bev = bufferevent_openssl_socket_new(base, fd, ssl,
BUFFEREVENT_SSL_ACCEPTING,
       BEV_OPT_CLOSE_ON_FREE);
  if (!bev) {
    fprintf(stderr, "Error constructing bufferevent!");
    event_base_loopbreak(base);
    return;
  }

  // Question:
  //  Do I need to call SSL_accept at some point?

 bev = bufferevent_openssl_filter_new(base,
       bev,
       ssl,
       BUFFEREVENT_SSL_OPEN,
       BEV_OPT_CLOSE_ON_FREE);

  if (!bev) {
    perror("Bufferevent_openssl_new");
  }

  bufferevent_setcb(bev, readcb, writecb, eventcb, NULL);
  bufferevent_enable(bev, EV_WRITE);
  bufferevent_enable(bev, EV_READ);
}

Reply via email to