Make tls_new accept xmpp_conn_t
This commit is contained in:
@@ -564,7 +564,7 @@ static void _auth(xmpp_conn_t * const conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (conn->tls_support) {
|
if (conn->tls_support) {
|
||||||
tls_t *tls = tls_new(conn->ctx, conn->sock);
|
tls_t *tls = tls_new(conn);
|
||||||
|
|
||||||
/* If we couldn't init tls, it isn't there, so go on */
|
/* If we couldn't init tls, it isn't there, so go on */
|
||||||
if (!tls) {
|
if (!tls) {
|
||||||
|
|||||||
@@ -874,7 +874,7 @@ int conn_tls_start(xmpp_conn_t * const conn)
|
|||||||
conn->tls = NULL;
|
conn->tls = NULL;
|
||||||
rc = XMPP_EINVOP;
|
rc = XMPP_EINVOP;
|
||||||
} else {
|
} else {
|
||||||
conn->tls = tls_new(conn->ctx, conn->sock);
|
conn->tls = tls_new(conn);
|
||||||
rc = conn->tls == NULL ? XMPP_EMEM : 0;
|
rc = conn->tls == NULL ? XMPP_EMEM : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ typedef struct _tls tls_t;
|
|||||||
void tls_initialize(void);
|
void tls_initialize(void);
|
||||||
void tls_shutdown(void);
|
void tls_shutdown(void);
|
||||||
|
|
||||||
tls_t *tls_new(xmpp_ctx_t *ctx, sock_t sock);
|
tls_t *tls_new(xmpp_conn_t *conn);
|
||||||
void tls_free(tls_t *tls);
|
void tls_free(tls_t *tls);
|
||||||
|
|
||||||
int tls_set_credentials(tls_t *tls, const char *cafilename);
|
int tls_set_credentials(tls_t *tls, const char *cafilename);
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ void tls_shutdown(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
tls_t *tls_new(xmpp_ctx_t *ctx, sock_t sock)
|
tls_t *tls_new(xmpp_conn_t *conn)
|
||||||
{
|
{
|
||||||
/* always fail */
|
/* always fail */
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
@@ -46,13 +46,13 @@ void tls_shutdown(void)
|
|||||||
gnutls_global_deinit();
|
gnutls_global_deinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
tls_t *tls_new(xmpp_ctx_t *ctx, sock_t sock)
|
tls_t *tls_new(xmpp_conn_t *conn)
|
||||||
{
|
{
|
||||||
tls_t *tls = xmpp_alloc(ctx, sizeof(tls_t));
|
tls_t *tls = xmpp_alloc(conn->ctx, sizeof(tls_t));
|
||||||
|
|
||||||
if (tls) {
|
if (tls) {
|
||||||
tls->ctx = ctx;
|
tls->ctx = conn->ctx;
|
||||||
tls->sock = sock;
|
tls->sock = conn->sock;
|
||||||
gnutls_init(&tls->session, GNUTLS_CLIENT);
|
gnutls_init(&tls->session, GNUTLS_CLIENT);
|
||||||
|
|
||||||
gnutls_certificate_allocate_credentials(&tls->cred);
|
gnutls_certificate_allocate_credentials(&tls->cred);
|
||||||
@@ -61,7 +61,7 @@ tls_t *tls_new(xmpp_ctx_t *ctx, sock_t sock)
|
|||||||
gnutls_set_default_priority(tls->session);
|
gnutls_set_default_priority(tls->session);
|
||||||
|
|
||||||
/* fixme: this may require setting a callback on win32? */
|
/* fixme: this may require setting a callback on win32? */
|
||||||
gnutls_transport_set_int(tls->session, sock);
|
gnutls_transport_set_int(tls->session, conn->sock);
|
||||||
}
|
}
|
||||||
|
|
||||||
return tls;
|
return tls;
|
||||||
|
|||||||
@@ -63,16 +63,16 @@ int tls_error(tls_t *tls)
|
|||||||
return tls->lasterror;
|
return tls->lasterror;
|
||||||
}
|
}
|
||||||
|
|
||||||
tls_t *tls_new(xmpp_ctx_t *ctx, sock_t sock)
|
tls_t *tls_new(xmpp_conn_t *conn)
|
||||||
{
|
{
|
||||||
tls_t *tls = xmpp_alloc(ctx, sizeof(*tls));
|
tls_t *tls = xmpp_alloc(conn->ctx, sizeof(*tls));
|
||||||
|
|
||||||
if (tls) {
|
if (tls) {
|
||||||
int ret;
|
int ret;
|
||||||
memset(tls, 0, sizeof(*tls));
|
memset(tls, 0, sizeof(*tls));
|
||||||
|
|
||||||
tls->ctx = ctx;
|
tls->ctx = conn->ctx;
|
||||||
tls->sock = sock;
|
tls->sock = conn->sock;
|
||||||
tls->ssl_ctx = SSL_CTX_new(SSLv23_client_method());
|
tls->ssl_ctx = SSL_CTX_new(SSLv23_client_method());
|
||||||
if (tls->ssl_ctx == NULL)
|
if (tls->ssl_ctx == NULL)
|
||||||
goto err;
|
goto err;
|
||||||
@@ -92,7 +92,7 @@ tls_t *tls_new(xmpp_ctx_t *ctx, sock_t sock)
|
|||||||
if (tls->ssl == NULL)
|
if (tls->ssl == NULL)
|
||||||
goto err_free_ctx;
|
goto err_free_ctx;
|
||||||
|
|
||||||
ret = SSL_set_fd(tls->ssl, sock);
|
ret = SSL_set_fd(tls->ssl, conn->sock);
|
||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
goto err_free_ssl;
|
goto err_free_ssl;
|
||||||
}
|
}
|
||||||
@@ -104,8 +104,8 @@ err_free_ssl:
|
|||||||
err_free_ctx:
|
err_free_ctx:
|
||||||
SSL_CTX_free(tls->ssl_ctx);
|
SSL_CTX_free(tls->ssl_ctx);
|
||||||
err:
|
err:
|
||||||
xmpp_free(ctx, tls);
|
xmpp_free(conn->ctx, tls);
|
||||||
_tls_log_error(ctx);
|
_tls_log_error(conn->ctx);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user