aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo_tls.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/osmo_tls.c')
-rw-r--r--src/osmo_tls.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/src/osmo_tls.c b/src/osmo_tls.c
index 0be01a6..f1f08ca 100644
--- a/src/osmo_tls.c
+++ b/src/osmo_tls.c
@@ -191,10 +191,9 @@ static int need_handshake(struct osmo_tls_session *tls_session)
if (rc == 0) {
/* handshake is done. start writing if we are allowed to */
LOGP(DTLS, LOGL_NOTICE, "TLS handshake done.\n");
+ osmo_fd_read_enable(&tls_session->wqueue->bfd);
if (!llist_empty(&tls_session->wqueue->msg_queue))
- tls_session->wqueue->bfd.when = BSC_FD_WRITE | BSC_FD_READ;
- else
- tls_session->wqueue->bfd.when = BSC_FD_READ;
+ osmo_fd_write_enable(&tls_session->wqueue->bfd);
tls_session->need_handshake = false;
release_keys(tls_session);
if (tls_session->handshake_done)
@@ -227,7 +226,7 @@ static int tls_read(struct osmo_tls_session *sess)
static int tls_write(struct osmo_tls_session *sess)
{
int rc;
- sess->wqueue->bfd.when &= ~BSC_FD_WRITE;
+ osmo_fd_write_disable(&sess->wqueue->bfd);
if (llist_empty(&sess->wqueue->msg_queue))
return 0;
@@ -252,7 +251,7 @@ static int tls_write(struct osmo_tls_session *sess)
}
if (sess->need_resend || !llist_empty(&sess->wqueue->msg_queue))
- sess->wqueue->bfd.when |= BSC_FD_WRITE;
+ osmo_fd_write_enable(&sess->wqueue->bfd);
return rc;
}
@@ -263,14 +262,14 @@ int osmo_tls_client_bfd_cb(struct osmo_fd *fd, unsigned what)
if (sess->need_handshake)
return need_handshake(sess);
- if (what & BSC_FD_READ) {
+ if (what & OSMO_FD_READ) {
int rc = tls_read(sess);
if (rc <= 0) {
sess->error(sess);
return rc;
}
}
- if (what & BSC_FD_WRITE) {
+ if (what & OSMO_FD_WRITE) {
int rc = tls_write(sess);
if (rc < 0) {
sess->error(sess);
@@ -435,9 +434,7 @@ bool osmo_tls_init_server_session(struct osmo_pcap_conn *conn,
gnutls_transport_set_int(sess->session, wq->bfd.fd);
gnutls_handshake_set_timeout(sess->session,
GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT);
- wq->bfd.cb = osmo_tls_client_bfd_cb;
- wq->bfd.data = sess;
- wq->bfd.when = BSC_FD_READ | BSC_FD_WRITE;
+ osmo_fd_setup(&wq->bfd, wq->bfd.fd, OSMO_FD_READ | OSMO_FD_WRITE, osmo_tls_client_bfd_cb, sess, 0);
sess->need_handshake = true;
sess->wqueue = wq;
return true;
@@ -531,9 +528,7 @@ bool osmo_tls_init_client_session(struct osmo_pcap_client_conn *client)
gnutls_transport_set_int(sess->session, wq->bfd.fd);
gnutls_handshake_set_timeout(sess->session,
GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT);
- wq->bfd.cb = osmo_tls_client_bfd_cb;
- wq->bfd.data = sess;
- wq->bfd.when = BSC_FD_READ | BSC_FD_WRITE;
+ osmo_fd_setup(&wq->bfd, wq->bfd.fd, OSMO_FD_READ | OSMO_FD_WRITE, osmo_tls_client_bfd_cb, sess, 0);
sess->need_handshake = true;
sess->wqueue = wq;
return true;