aboutsummaryrefslogtreecommitdiff
path: root/include/connect.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/connect.h')
-rwxr-xr-xinclude/connect.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/include/connect.h b/include/connect.h
new file mode 100755
index 0000000..d733c5e
--- /dev/null
+++ b/include/connect.h
@@ -0,0 +1,44 @@
+#ifndef _CONNECT_H_
+#define _CONNECT_H_
+
+#include <openssl/ssl.h>
+
+#include "config.h"
+#include "url.h"
+
+/* Error codes */
+enum ConnectError {
+ ERR_GETADDRINFO = -1,
+ ERR_SOCKET = -2,
+ ERR_CONNECT = -3,
+ ERR_SSL_CTX = -4,
+ ERR_SSL_SSL = -5,
+};
+
+/**
+ * Holds all needed information to manage an open TLS connection.
+ */
+struct connection {
+ SSL *ssl;
+ int sockfd;
+ bool used;
+};
+
+/**
+ * Connect to molerat server.
+ *
+ * Sets `*ssl` in `struct config *conf` to the current active connection.
+ */
+int tls_connect(struct config *conf, struct url url);
+
+/**
+ * Disconnect and free open connection
+ */
+void tls_cleanup(struct connection *conn);
+
+/**
+ * Allocate a new instance of a `struct connection`
+ */
+struct connection *init_connection(void);
+
+#endif