Make stream_upgrade_to_tls a virtual method
parent
34578aa5a4
commit
08f01afee4
|
@ -70,6 +70,7 @@ struct stream_impl {
|
||||||
stream_req_fn on_done, void* userdata);
|
stream_req_fn on_done, void* userdata);
|
||||||
int (*send_first)(struct stream*, struct rcbuf* payload);
|
int (*send_first)(struct stream*, struct rcbuf* payload);
|
||||||
void (*exec_and_send)(struct stream*, stream_exec_fn, void* userdata);
|
void (*exec_and_send)(struct stream*, stream_exec_fn, void* userdata);
|
||||||
|
int (*upgrade_to_tls)(struct stream*, void* context);
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO: Move some of these struct members into their respective implementation
|
// TODO: Move some of these struct members into their respective implementation
|
||||||
|
@ -114,5 +115,6 @@ int stream_send_first(struct stream* self, struct rcbuf* payload);
|
||||||
void stream_exec_and_send(struct stream* self, stream_exec_fn, void* userdata);
|
void stream_exec_and_send(struct stream* self, stream_exec_fn, void* userdata);
|
||||||
|
|
||||||
#ifdef ENABLE_TLS
|
#ifdef ENABLE_TLS
|
||||||
|
int stream_upgrade_tcp_to_tls(struct stream* self, void* context);
|
||||||
int stream_upgrade_to_tls(struct stream* self, void* context);
|
int stream_upgrade_to_tls(struct stream* self, void* context);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include "stream.h"
|
#include "stream.h"
|
||||||
#include "stream-common.h"
|
#include "stream-common.h"
|
||||||
#include "sys/queue.h"
|
#include "sys/queue.h"
|
||||||
|
#include "neatvnc.h"
|
||||||
|
|
||||||
static int stream__try_tls_accept(struct stream* self);
|
static int stream__try_tls_accept(struct stream* self);
|
||||||
|
|
||||||
|
@ -241,10 +242,12 @@ static struct stream_impl impl = {
|
||||||
.send = stream_gnutls_send,
|
.send = stream_gnutls_send,
|
||||||
};
|
};
|
||||||
|
|
||||||
int stream_upgrade_to_tls(struct stream* self, void* context)
|
int stream_upgrade_tcp_to_tls(struct stream* self, void* context)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
nvnc_log(NVNC_LOG_DEBUG, "Uprading stream %p to TLS", self);
|
||||||
|
|
||||||
rc = gnutls_init(&self->tls_session, GNUTLS_SERVER | GNUTLS_NONBLOCK);
|
rc = gnutls_init(&self->tls_session, GNUTLS_SERVER | GNUTLS_NONBLOCK);
|
||||||
if (rc != GNUTLS_E_SUCCESS)
|
if (rc != GNUTLS_E_SUCCESS)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -251,6 +251,7 @@ static struct stream_impl impl = {
|
||||||
.send = stream_tcp_send,
|
.send = stream_tcp_send,
|
||||||
.send_first = stream_tcp_send_first,
|
.send_first = stream_tcp_send_first,
|
||||||
.exec_and_send = stream_tcp_exec_and_send,
|
.exec_and_send = stream_tcp_exec_and_send,
|
||||||
|
.upgrade_to_tls = stream_upgrade_tcp_to_tls,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct stream* stream_new(int fd, stream_event_fn on_event, void* userdata)
|
struct stream* stream_new(int fd, stream_event_fn on_event, void* userdata)
|
||||||
|
|
|
@ -65,3 +65,9 @@ void stream_exec_and_send(struct stream* self, stream_exec_fn exec_fn,
|
||||||
else
|
else
|
||||||
stream_send(self, exec_fn(self, userdata), NULL, NULL);
|
stream_send(self, exec_fn(self, userdata), NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int stream_upgrade_to_tls(struct stream* self, void* context)
|
||||||
|
{
|
||||||
|
assert(self->impl && self->impl->upgrade_to_tls);
|
||||||
|
return self->impl->upgrade_to_tls(self, context);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue