diff options
Diffstat (limited to 'include/connect.h')
-rwxr-xr-x | include/connect.h | 44 |
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 |