stream: Allocate enough for tls upgrade

pull/93/head
Andri Yngvason 2023-05-30 08:40:56 +00:00
parent b5f37d0227
commit ade1046391
3 changed files with 9 additions and 3 deletions

View File

@ -23,6 +23,8 @@
#include <stdint.h>
#include <stdbool.h>
#define STREAM_ALLOC_SIZE 4096
enum stream_state {
STREAM_STATE_NORMAL = 0,
STREAM_STATE_CLOSED,
@ -68,8 +70,6 @@ struct stream_impl {
void (*exec_and_send)(struct stream*, stream_exec_fn, void* userdata);
};
// TODO: Move some of these struct members into their respective implementation
// classes.
struct stream {
struct stream_impl *impl;

View File

@ -40,6 +40,9 @@ struct stream_gnutls {
gnutls_session_t session;
};
static_assert(sizeof(struct stream_gnutls) <= STREAM_ALLOC_SIZE,
"struct stream_gnutls has grown too large, increase STREAM_ALLOC_SIZE");
static int stream__try_tls_accept(struct stream* self);
static int stream_gnutls_close(struct stream* base)

View File

@ -32,6 +32,9 @@
#include "stream-common.h"
#include "sys/queue.h"
static_assert(sizeof(struct stream) <= STREAM_ALLOC_SIZE,
"struct stream has grown too large, increase STREAM_ALLOC_SIZE");
static int stream_tcp_close(struct stream* self)
{
if (self->state == STREAM_STATE_CLOSED)
@ -255,7 +258,7 @@ static struct stream_impl impl = {
struct stream* stream_new(int fd, stream_event_fn on_event, void* userdata)
{
struct stream* self = calloc(1, sizeof(*self));
struct stream* self = calloc(1, STREAM_ALLOC_SIZE);
if (!self)
return NULL;