dev->address = sock->peer_address;
cc = SSL_read(sock->ssl, read_base, read_count);
- printf("SSL read res %d\n", cc);
if (cc <= 0) {
int err = SSL_get_error(sock->ssl, cc);
- printf("err %d\n", err);
if (err == SSL_ERROR_WANT_READ) {
sock->tlsstate |= TLSSTATE_RWR;
dev->result = ISC_R_WOULDBLOCK;
dev->result = ISC_R_WOULDBLOCK;
return (DOIO_SOFT);
} else {
- printf("Hard err in read %d\n", cc);
return (DOIO_HARD);
}
}
send_base = (void *) (dev->region.base + dev->n);
cc = SSL_write(sock->ssl, send_base, write_count);
- printf("SSL write res %d\n", cc);
if (cc <= 0) {
int err = SSL_get_error(sock->ssl, cc);
- printf("err %d\n", err);
if (err == SSL_ERROR_WANT_READ) {
sock->tlsstate |= TLSSTATE_WWR;
dev->result = ISC_R_WOULDBLOCK;
/*
* Fill in the done event details and send it off.
*/
- printf("Accept done %d %p\n", result, sock->ssl_ctx);
if (result == ISC_R_SUCCESS && sock->ssl_ctx != NULL) {
/*
* This socket might be handled by different FD, we can't
ns->tlsstate = TLSSTATE_RWR;
ns->tlsaccepting = 1;
ns->type = isc_sockettype_tls;
- printf("Pushing TLS ACCEPT to %p\n", ns);
ISC_LIST_APPEND(ns->accept_list, dev, ev_link);
select_poke(ns->manager, ns->threadid, ns->fd,
SELECT_POKE_READ);
isc_refcount_increment(&sock->references);
- printf("process_fd %d sock->type %d readable %d writeable %d connecting %d\n", sock->fd, sock->type, readable, writeable, sock->connecting);
if (!sock->listener && !sock->connecting && sock->type == isc_sockettype_tls) {
if (readable) {
if (sock->tlsstate & TLSSTATE_RWR) {
socket_recv(isc__socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
unsigned int flags)
{
- printf("socket recv\n");
int io_state;
bool have_lock = false;
isc_task_t *ntask = NULL;
if (ISC_LIST_EMPTY(sock->recv_list)) {
if (sock->type == isc_sockettype_tls) {
- printf("Direct recv\n");
io_state = doio_tls_recv(sock, dev);
} else {
io_state = doio_recv(sock, dev);
switch (io_state) {
case DOIO_SOFT:
- printf("Soft\n");
/*
* We couldn't read all or part of the request right now, so
* queue it.
case DOIO_HARD:
case DOIO_SUCCESS:
- printf("Succ\n");
if ((flags & ISC_SOCKFLAG_IMMEDIATE) == 0)
send_recvdone_event(sock, &dev);
break;
abort();
}
int cc = SSL_connect(sock->ssl);
- printf("SSL_Connect returned %d\n", cc);
if (cc < 0) {
int err = SSL_get_error(sock->ssl, cc);
if (err == SSL_ERROR_WANT_READ) {
- printf("Want read\n");
if (!wanted_read) {
watch_fd(&sock->manager->threads[sock->threadid], sock->fd,
SELECT_POKE_READ);
sock->tlsstate |= TLSSTATE_WWR;
goto finish;
} else if (err == SSL_ERROR_WANT_WRITE) {
- printf("Want write\n");
if (!wanted_write) {
watch_fd(&sock->manager->threads[sock->threadid], sock->fd,
SELECT_POKE_WRITE);
result = ISC_R_SUCCESS;
}
do {
- printf("Send connectdone\n");
sock->tlsconnecting = 0;
dev->result = result;
send_connectdone_event(sock, &dev);
bool wanted_write = sock->tlsstate & (TLSSTATE_RWW | TLSSTATE_WWW);
sock->tlsstate &= ~(TLSSTATE_WWR | TLSSTATE_WWW);
- printf("TLS ACCEPT SOCK %p\n", sock);
dev = ISC_LIST_HEAD(sock->accept_list);
if (dev == NULL) {
abort();
sock->ssl = SSL_new(sock->ssl_ctx);
SSL_set_fd(sock->ssl, sock->fd);
SSL_set_accept_state(sock->ssl);
-// SSL_set_connect_state(sock->ssl);
}
int cc = SSL_accept(sock->ssl);
- printf("SSL_Accept returned %d\n", cc);
if (cc <= 0) {
int err = SSL_get_error(sock->ssl, cc);
if (err == SSL_ERROR_WANT_READ) {
- printf("Want read\n");
if (!wanted_read) {
watch_fd(&sock->manager->threads[sock->threadid], sock->fd,
SELECT_POKE_READ);
watch_unwatch(sock, wanted_read, wanted_write);
return;
} else if (err == SSL_ERROR_WANT_WRITE) {
- printf("Want write\n");
if (!wanted_write) {
watch_fd(&sock->manager->threads[sock->threadid], sock->fd,
SELECT_POKE_WRITE);
watch_unwatch(sock, wanted_read, wanted_write);
return;
} else {
- printf("Other SSL error in connect %d %d\n", cc, err);
result = ISC_R_CONNECTIONRESET;
}
isc_result_t
isc_socket_maketls(isc_socket_t *sock0, const char* cert_path, const char* key_path) {
- printf("Maketls\n");
isc__socket_t *sock = (isc__socket_t*) sock0;
const SSL_METHOD *meth;