45 lines
758 B
C
45 lines
758 B
C
|
#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
|