diff options
Diffstat (limited to 'src/osmo_tls.c')
-rw-r--r-- | src/osmo_tls.c | 21 |
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; |