Hi, I am rather new to libevent and I am doing the following in a smaller server application: - Create an event loop listening for connections on a given port. - If the first data sent by the client looks like an SSL client Hello, switch the connection to ssl, by installing a filter. - process data as ususal (simply echo it)
When connecting to the server with telnet, all is working. When connecting to the server with the openssl s_client, I do get a successful SSL handshake, but after that, I can only write data to the server and never get anything back, and debug output shows, that clientRead is never called. What am I doing wrong? This is the read callback installed by bufferevent_setcb: static void clientInitialRead(struct bufferevent *bev, void *arg) { connState_t *conn = arg; struct evbuffer *evi = bufferevent_get_input(bev); struct evbuffer_iovec cont; struct bufferevent *bevSsl; evbuffer_peek(evi, -1, NULL, &cont, 1); if (isSslClientHello(&cont, conn)) { bevSsl = bufferevent_openssl_filter_new(conn->global->mainEvents, bev, conn->ssl, BUFFEREVENT_SSL_ACCEPTING, BEV_OPT_DEFER_CALLBACKS); if (!bevSsl) { PA_WARNING("Error creating SSL filter bev"); return; } conn->bev = bevSsl; bufferevent_setcb(bevSsl, clientRead, clientWrite, clientEvent, conn); bufferevent_setwatermark(bevSsl, EV_READ, 0, 16348); bufferevent_enable(bevSsl, EV_READ|EV_WRITE); } else { clientRead(bev, arg); } } And this is the "normal" read callback: static void clientRead(struct bufferevent *bev, void *arg) { connState_t *conn = arg; struct evbuffer *evi = bufferevent_get_input(bev); struct evbuffer *evo = bufferevent_get_output(bev); evbuffer_remove_buffer(evi, evo, evbuffer_get_length(evi)); } -- Nils Rennebarth Software Developer Teldat packetalarm logo Teldat Security GmbH Moenchhaldenstr. 28 D-70191 Stuttgart Tel: +49 711 900300 - 62 Fax: +49 711 900300 - 90 E-Mail: nils.renneba...@teldat.de Location: GmbH Nuernberg, Local Court Nuernberg, HRB 25481 Managing Director: Bernd Buettner Teldat packetalarm banner -------------------------------- The information contained in this e-mail has been carefully researched, but the possibility of it being inapplicable in individual cases cannot be ruled out. We therefore regret that we cannot accept responsibility or liability of any kind whatsoever for the correctness of the information given. Please notify us if you discover that information is inapplicable. *********************************************************************** To unsubscribe, send an e-mail to majord...@freehaven.net with unsubscribe libevent-users in the body.