uint64_t timeout = KR_CONN_RTT_MAX / 2;
if (tls) {
timeout += TLS_MAX_HANDSHAKE_TIME;
- struct tls_ctx_t *ctx = session_tls_get_server_ctx(s);
+ struct tls_ctx *ctx = session_tls_get_server_ctx(s);
if (!ctx) {
ctx = tls_new(worker);
if (!ctx) {
#include "daemon/worker.h"
#include "daemon/engine.h"
-struct tls_ctx_t;
-struct tls_client_ctx_t;
+struct tls_ctx;
+struct tls_client_ctx;
/** Bind address into a file-descriptor (only, no libuv). type is e.g. SOCK_DGRAM */
int io_bind(const struct sockaddr *addr, int type, const endpoint_flags_t *flags);
uv_handle_t *handle; /**< libuv handle for IO operations. */
uv_timer_t timeout; /**< libuv handle for timer. */
- struct tls_ctx_t *tls_ctx; /**< server side tls-related data. */
- struct tls_client_ctx_t *tls_client_ctx; /**< client side tls-related data. */
+ struct tls_ctx *tls_ctx; /**< server side tls-related data. */
+ struct tls_client_ctx *tls_client_ctx; /**< client side tls-related data. */
trie_t *tasks; /**< list of tasks assotiated with given session. */
queue_t(struct qr_task *) waiting; /**< list of tasks waiting for sending to upstream. */
return &session->sockname.ip;
}
-struct tls_ctx_t *session_tls_get_server_ctx(const struct session *session)
+struct tls_ctx *session_tls_get_server_ctx(const struct session *session)
{
return session->tls_ctx;
}
-void session_tls_set_server_ctx(struct session *session, struct tls_ctx_t *ctx)
+void session_tls_set_server_ctx(struct session *session, struct tls_ctx *ctx)
{
session->tls_ctx = ctx;
}
-struct tls_client_ctx_t *session_tls_get_client_ctx(const struct session *session)
+struct tls_client_ctx *session_tls_get_client_ctx(const struct session *session)
{
return session->tls_client_ctx;
}
-void session_tls_set_client_ctx(struct session *session, struct tls_client_ctx_t *ctx)
+void session_tls_set_client_ctx(struct session *session, struct tls_client_ctx *ctx)
{
session->tls_client_ctx = ctx;
}
session->wire_buf_end_idx = 0;
return NULL;
}
-
+
if (session->wire_buf_start_idx > session->wire_buf_end_idx) {
session->sflags.wirebuf_error = true;
session->wire_buf_start_idx = 0;
uint8_t *msg_start = &session->wire_buf[session->wire_buf_start_idx];
ssize_t wirebuf_msg_data_size = session->wire_buf_end_idx - session->wire_buf_start_idx;
uint16_t msg_size = 0;
-
+
if (!handle) {
session->sflags.wirebuf_error = true;
return NULL;
session->wire_buf_start_idx += pkt_msg_size;
}
session->sflags.wirebuf_error = false;
-
+
wirebuf_data_size = session->wire_buf_end_idx - session->wire_buf_start_idx;
if (wirebuf_data_size == 0) {
session_wirebuf_discard(session);
/** Get pointer to sockname (address of our end, not meaningful for UDP downstream). */
struct sockaddr *session_get_sockname(struct session *session);
/** Get pointer to server-side tls-related data. */
-struct tls_ctx_t *session_tls_get_server_ctx(const struct session *session);
+struct tls_ctx *session_tls_get_server_ctx(const struct session *session);
/** Set pointer to server-side tls-related data. */
-void session_tls_set_server_ctx(struct session *session, struct tls_ctx_t *ctx);
+void session_tls_set_server_ctx(struct session *session, struct tls_ctx *ctx);
/** Get pointer to client-side tls-related data. */
-struct tls_client_ctx_t *session_tls_get_client_ctx(const struct session *session);
+struct tls_client_ctx *session_tls_get_client_ctx(const struct session *session);
/** Set pointer to client-side tls-related data. */
-void session_tls_set_client_ctx(struct session *session, struct tls_client_ctx_t *ctx);
+void session_tls_set_client_ctx(struct session *session, struct tls_client_ctx *ctx);
/** Get pointer to that part of tls-related data which has common structure for
* server and client. */
struct tls_common_ctx *session_tls_get_common_ctx(const struct session *session);
}
-struct tls_ctx_t *tls_new(struct worker_ctx *worker)
+struct tls_ctx *tls_new(struct worker_ctx *worker)
{
assert(worker != NULL);
assert(worker->engine != NULL);
}
}
- struct tls_ctx_t *tls = calloc(1, sizeof(struct tls_ctx_t));
+ struct tls_ctx *tls = calloc(1, sizeof(struct tls_ctx));
if (tls == NULL) {
kr_log_error("[tls] failed to allocate TLS context\n");
return NULL;
}
}
-void tls_free(struct tls_ctx_t *tls)
+void tls_free(struct tls_ctx *tls)
{
if (!tls) {
return;
*/
static int client_verify_certificate(gnutls_session_t tls_session)
{
- struct tls_client_ctx_t *ctx = gnutls_session_get_ptr(tls_session);
+ struct tls_client_ctx *ctx = gnutls_session_get_ptr(tls_session);
assert(ctx->params != NULL);
if (ctx->params->insecure) {
return client_verify_certchain(ctx->c.tls_session, ctx->params->hostname);
}
-struct tls_client_ctx_t *tls_client_ctx_new(tls_client_param_t *entry,
+struct tls_client_ctx *tls_client_ctx_new(tls_client_param_t *entry,
struct worker_ctx *worker)
{
- struct tls_client_ctx_t *ctx = calloc(1, sizeof (struct tls_client_ctx_t));
+ struct tls_client_ctx *ctx = calloc(1, sizeof (struct tls_client_ctx));
if (!ctx) {
return NULL;
}
return ctx;
}
-void tls_client_ctx_free(struct tls_client_ctx_t *ctx)
+void tls_client_ctx_free(struct tls_client_ctx *ctx)
{
if (ctx == NULL) {
return;
return avail;
}
-int tls_client_connect_start(struct tls_client_ctx_t *client_ctx,
+int tls_client_connect_start(struct tls_client_ctx *client_ctx,
struct session *session,
tls_handshake_cb handshake_cb)
{
return kr_ok();
}
-int tls_client_ctx_set_session(struct tls_client_ctx_t *ctx, struct session *session)
+int tls_client_ctx_set_session(struct tls_client_ctx *ctx, struct session *session)
{
if (!ctx) {
return kr_error(EINVAL);
/** Transport session (opaque). */
struct session;
-struct tls_ctx_t;
-struct tls_client_ctx_t;
+struct tls_ctx;
+struct tls_client_ctx;
struct tls_credentials {
int count;
char *tls_cert;
size_t write_queue_size;
};
-struct tls_ctx_t {
+struct tls_ctx {
/*
- * Since pointer to tls_ctx_t needs to be casted
+ * Since pointer to tls_ctx needs to be casted
* to tls_ctx_common in some functions,
* this field must be always at first position
*/
struct tls_credentials *credentials;
};
-struct tls_client_ctx_t {
+struct tls_client_ctx {
/*
- * Since pointer to tls_client_ctx_t needs to be casted
+ * Since pointer to tls_client_ctx needs to be casted
* to tls_ctx_common in some functions,
* this field must be always at first position
*/
};
/*! Create an empty TLS context in query context */
-struct tls_ctx_t* tls_new(struct worker_ctx *worker);
+struct tls_ctx* tls_new(struct worker_ctx *worker);
/*! Close a TLS context (call gnutls_bye()) */
void tls_close(struct tls_common_ctx *ctx);
/*! Release a TLS context */
-void tls_free(struct tls_ctx_t* tls);
+void tls_free(struct tls_ctx* tls);
/*! Push new data to TLS context for sending */
int tls_write(uv_write_t *req, uv_handle_t* handle, knot_pkt_t * pkt, uv_write_cb cb);
/*! Allocate new client TLS context */
-struct tls_client_ctx_t *tls_client_ctx_new(tls_client_param_t *entry,
+struct tls_client_ctx *tls_client_ctx_new(tls_client_param_t *entry,
struct worker_ctx *worker);
/*! Free client TLS context */
-void tls_client_ctx_free(struct tls_client_ctx_t *ctx);
+void tls_client_ctx_free(struct tls_client_ctx *ctx);
-int tls_client_connect_start(struct tls_client_ctx_t *client_ctx,
+int tls_client_connect_start(struct tls_client_ctx *client_ctx,
struct session *session,
tls_handshake_cb handshake_cb);
-int tls_client_ctx_set_session(struct tls_client_ctx_t *ctx, struct session *session);
+int tls_client_ctx_set_session(struct tls_client_ctx *ctx, struct session *session);
/* Session tickets, server side. Implementation in ./tls_session_ticket-srv.c */
}
/* handshake was completed successfully */
- struct tls_client_ctx_t *tls_client_ctx = session_tls_get_client_ctx(session);
+ struct tls_client_ctx *tls_client_ctx = session_tls_get_client_ctx(session);
tls_client_param_t *tls_params = tls_client_ctx->params;
gnutls_session_t tls_session = tls_client_ctx->c.tls_session;
if (gnutls_session_is_resumed(tls_session) != 0) {
int ret = kr_ok();
if (session_flags(session)->has_tls) {
- struct tls_client_ctx_t *tls_ctx = session_tls_get_client_ctx(session);
+ struct tls_client_ctx *tls_ctx = session_tls_get_client_ctx(session);
ret = tls_client_connect_start(tls_ctx, session, session_tls_hs_cb);
if (ret == kr_error(EAGAIN)) {
session_timer_stop(session);
struct worker_ctx *worker = ctx->worker;
/* Check if there must be TLS */
- struct tls_client_ctx_t *tls_ctx = NULL;
+ struct tls_client_ctx *tls_ctx = NULL;
struct network *net = &worker->engine->net;
tls_client_param_t *entry = tls_client_param_get(net->tls_client_params, addr);
if (entry) {
worker_del_tcp_connected(the_worker, peer);
session_flags(session)->connected = false;
- struct tls_client_ctx_t *tls_client_ctx = session_tls_get_client_ctx(session);
+ struct tls_client_ctx *tls_client_ctx = session_tls_get_client_ctx(session);
if (tls_client_ctx) {
/* Avoid gnutls_bye() call */
tls_set_hs_state(&tls_client_ctx->c, TLS_HS_NOT_STARTED);
}
- struct tls_ctx_t *tls_ctx = session_tls_get_server_ctx(session);
+ struct tls_ctx *tls_ctx = session_tls_get_server_ctx(session);
if (tls_ctx) {
/* Avoid gnutls_bye() call */
tls_set_hs_state(&tls_ctx->c, TLS_HS_NOT_STARTED);