summaryrefslogtreecommitdiff
path: root/sockets.c
diff options
context:
space:
mode:
authorLuke Bratch <luke@bratch.co.uk>2019-05-12 22:47:29 +0100
committerLuke Bratch <luke@bratch.co.uk>2019-05-12 22:47:29 +0100
commit8869477885718844d368b48774f926489385e3b3 (patch)
treec08db28e2933eb5204d8a807f814572e3d617cb3 /sockets.c
parentcceee6b8e23138e5a16e6aef23759a8c60ef872e (diff)
Make using TLS for clients connecting to the bouncer optional.
Diffstat (limited to 'sockets.c')
-rw-r--r--sockets.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/sockets.c b/sockets.c
index 0f78b21..c5ea41f 100644
--- a/sockets.c
+++ b/sockets.c
@@ -165,3 +165,23 @@ void configure_context(SSL_CTX *ctx, char *certfile, char *keyfile) {
exit(EXIT_FAILURE);
}
}
+
+// Read from a socket, whether or not using TLS
+int sockread(SSL *fd, char *buf, int bufsize, int tls) {
+ if (tls) {
+ return SSL_read(fd, buf, bufsize);
+ } else {
+ // Cast the supposed SSL *fd to a long int if we're not using TLS
+ return recv((long int)fd, buf, bufsize, 0);
+ }
+}
+
+// Write to a socket, whether or not using TLS
+int socksend(SSL *fd, char *buf, int bufsize, int tls) {
+ if (tls) {
+ return SSL_write(fd, buf, bufsize);
+ } else {
+ // Cast the supposed SSL *fd to a long int if we're not using TLS
+ return send((long int)fd, buf, bufsize, 0);
+ }
+}