mirror of
https://github.com/irssi/irssi.git
synced 2025-04-26 04:51:11 -05:00
irssiproxy: use a single goto for error handling in add_listen()
This commit is contained in:
parent
87542831fe
commit
e2dfd6d165
@ -654,33 +654,22 @@ static void add_listen(const char *ircnet, int port, char *sslcert)
|
|||||||
printtext(NULL, NULL, MSGLEVEL_CLIENTERROR,
|
printtext(NULL, NULL, MSGLEVEL_CLIENTERROR,
|
||||||
"Proxy: Error setting up SSL Context for port %d failed.",
|
"Proxy: Error setting up SSL Context for port %d failed.",
|
||||||
rec->port);
|
rec->port);
|
||||||
g_free(rec->ircnet);
|
goto error;
|
||||||
g_free(rec);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(SSL_CTX_use_certificate_file(rec->ssl_ctx, sslcert, SSL_FILETYPE_PEM) <= 0) {
|
if(SSL_CTX_use_certificate_file(rec->ssl_ctx, sslcert, SSL_FILETYPE_PEM) <= 0) {
|
||||||
printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "Proxy: Error loading certificate.");
|
printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "Proxy: Error loading certificate.");
|
||||||
SSL_CTX_free(rec->ssl_ctx);
|
goto error;
|
||||||
g_free(rec->ircnet);
|
|
||||||
g_free(rec);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(SSL_CTX_use_PrivateKey_file(rec->ssl_ctx, sslcert, SSL_FILETYPE_PEM) <= 0) {
|
if(SSL_CTX_use_PrivateKey_file(rec->ssl_ctx, sslcert, SSL_FILETYPE_PEM) <= 0) {
|
||||||
printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "Proxy: Error loading private key.");
|
printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "Proxy: Error loading private key.");
|
||||||
SSL_CTX_free(rec->ssl_ctx);
|
goto error;
|
||||||
g_free(rec->ircnet);
|
|
||||||
g_free(rec);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!SSL_CTX_check_private_key(rec->ssl_ctx)) {
|
if(!SSL_CTX_check_private_key(rec->ssl_ctx)) {
|
||||||
printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "Proxy: Error loading checking certificate agains private key.");
|
printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "Proxy: Error loading checking certificate agains private key.");
|
||||||
SSL_CTX_free(rec->ssl_ctx);
|
goto error;
|
||||||
g_free(rec->ircnet);
|
|
||||||
g_free(rec);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -688,6 +677,14 @@ static void add_listen(const char *ircnet, int port, char *sslcert)
|
|||||||
(GInputFunction) sig_listen, rec);
|
(GInputFunction) sig_listen, rec);
|
||||||
|
|
||||||
proxy_listens = g_slist_append(proxy_listens, rec);
|
proxy_listens = g_slist_append(proxy_listens, rec);
|
||||||
|
|
||||||
|
return;
|
||||||
|
error:
|
||||||
|
if (rec->ssl_ctx != NULL) {
|
||||||
|
SSL_CTX_free(rec->ssl_ctx);
|
||||||
|
}
|
||||||
|
g_free(rec->ircnet);
|
||||||
|
g_free(rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void remove_listen(LISTEN_REC *rec)
|
static void remove_listen(LISTEN_REC *rec)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user