aboutsummaryrefslogtreecommitdiff
path: root/src/supplemental/tls/tls_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/supplemental/tls/tls_common.h')
-rw-r--r--src/supplemental/tls/tls_common.h31
1 files changed, 17 insertions, 14 deletions
diff --git a/src/supplemental/tls/tls_common.h b/src/supplemental/tls/tls_common.h
index 3e703785..14bb0cf7 100644
--- a/src/supplemental/tls/tls_common.h
+++ b/src/supplemental/tls/tls_common.h
@@ -39,8 +39,6 @@
// parts of TLS support that are invariant relative to different TLS
// libraries, such as dialer and listener support.
-static nni_atomic_ptr tls_engine;
-
struct nng_tls_config {
nng_tls_engine_config_ops ops;
const nng_tls_engine *engine; // store this so we can verify
@@ -78,29 +76,34 @@ typedef struct {
nni_tls_bio_ops bio_ops; // lower level ops vector
nni_aio bio_send; // lower level send pending
nni_aio bio_recv; // lower level recv pending
+ nni_mtx bio_lock; // lock protecting lower layer operations
uint8_t *bio_send_buf;
uint8_t *bio_recv_buf;
size_t bio_recv_len;
size_t bio_recv_off;
bool bio_recv_pend;
bool bio_send_active;
+ bool bio_closed;
+ nng_err bio_err;
size_t bio_send_len;
size_t bio_send_head;
size_t bio_send_tail;
nni_reap_node reap;
// ... engine connection data follows
-} tls_conn;
-
-extern void nni_tls_fini(tls_conn *conn);
-extern int nni_tls_init(tls_conn *conn, nng_tls_config *cfg);
-extern int nni_tls_start(
- tls_conn *conn, const nni_tls_bio_ops *biops, void *bio);
-extern void nni_tls_stop(tls_conn *conn);
-extern void nni_tls_close(tls_conn *conn);
-extern void nni_tls_recv(tls_conn *conn, nni_aio *aio);
-extern void nni_tls_send(tls_conn *conn, nni_aio *aio);
-extern bool nni_tls_verified(tls_conn *conn);
-extern const char *nni_tls_peer_cn(tls_conn *conn);
+} nni_tls_conn;
+
+extern void nni_tls_fini(nni_tls_conn *conn);
+extern int nni_tls_init(nni_tls_conn *conn, nng_tls_config *cfg);
+extern int nni_tls_start(nni_tls_conn *conn, const nni_tls_bio_ops *biops,
+ void *bio, const nng_sockaddr *sa);
+extern void nni_tls_stop(nni_tls_conn *conn);
+extern void nni_tls_close(nni_tls_conn *conn);
+extern void nni_tls_recv(nni_tls_conn *conn, nni_aio *aio);
+extern void nni_tls_send(nni_tls_conn *conn, nni_aio *aio);
+extern bool nni_tls_verified(nni_tls_conn *conn);
+extern const char *nni_tls_peer_cn(nni_tls_conn *conn);
+extern nng_err nni_tls_run(nni_tls_conn *conn);
+extern size_t nni_tls_engine_conn_size(void);
#endif // NNG_TLS_TLS_COMMON_H