Make finalize_server_connect() static

It is only called within server.c.
This commit is contained in:
Kevin Easton
2019-01-16 23:26:39 +11:00
parent 95b57cc3cc
commit 6cf30d8ce1
2 changed files with 119 additions and 119 deletions

View File

@@ -360,7 +360,6 @@ ChannelList *BX_get_server_channels (int);
void set_who_queue_top (int, WhoEntry *); void set_who_queue_top (int, WhoEntry *);
WhoEntry *who_queue_top (int); WhoEntry *who_queue_top (int);
int finalize_server_connect(int, int, int);
int next_server(int); int next_server(int);
void do_idle_server (void); void do_idle_server (void);

View File

@@ -472,6 +472,125 @@ void do_idle_server (void)
} }
} }
/*
* finalize_server_connect()
* This code either gets called from connect_to_server_by_refnum()
* or from the main loop once a nonblocking connect has been verified.
*/
static int finalize_server_connect(int refnum, int c_server, int my_from_server)
{
if (serv_open_func)
(*serv_open_func)(my_from_server, server_list[my_from_server].local_addr, server_list[my_from_server].port);
if ((c_server > -1) && (c_server != my_from_server))
{
server_list[c_server].reconnecting = 1;
server_list[c_server].old_server = -1;
#ifdef NON_BLOCKING_CONNECTS
server_list[c_server].server_change_pending = 0;
server_list[refnum].from_server = -1;
#endif
close_server(c_server, "changing servers");
}
#ifdef HAVE_LIBSSL
if (get_server_ssl(refnum))
{
int err = 0;
if (!server_list[refnum].ssl_fd)
{
/* Lazily allocate an SSL_CTX the first time this server connects. This
* is reused for subsequent connections to this server.
*/
if (!server_list[refnum].ctx)
{
server_list[refnum].ctx = SSL_CTX_new(SSLv23_client_method());
if (!server_list[refnum].ctx)
{
say("SSL error - failed to allocate SSL_CTX");
SSL_show_errors();
close_server(refnum, NULL);
return -1;
}
}
/* Allocate an SSL for this connection. This will be freed at close time. */
server_list[refnum].ssl_fd = SSL_new(server_list[refnum].ctx);
if (!server_list[refnum].ssl_fd)
{
say("SSL error - failed to create SSL");
SSL_show_errors();
close_server(refnum, NULL);
return -1;
}
SSL_set_fd (server_list[refnum].ssl_fd, server_list[refnum].read);
}
err = SSL_connect(server_list[refnum].ssl_fd);
if (err < 1)
{
server_list[refnum].ssl_error = SSL_get_error(server_list[refnum].ssl_fd, err);
/* The SSL_connect can't complete yet. Return without calling register_server(),
* and this function will be called again later.
*/
if (server_list[refnum].ssl_error == SSL_ERROR_WANT_READ ||
server_list[refnum].ssl_error == SSL_ERROR_WANT_WRITE)
return 0;
say("SSL_connect error: %d", err, server_list[refnum].ssl_error);
SSL_show_errors();
close_server(refnum, NULL);
return -2;
}
say("SSL server connected using %s (%s)",
SSL_get_version(server_list[refnum].ssl_fd),
SSL_get_cipher(server_list[refnum].ssl_fd));
}
#endif
if (!server_list[my_from_server].d_nickname)
malloc_strcpy(&(server_list[my_from_server].d_nickname), nickname);
register_server(my_from_server, server_list[my_from_server].d_nickname);
server_list[refnum].last_msg = now;
server_list[refnum].eof = 0;
/* server_list[refnum].connected = 1; XXX: not registered yet */
server_list[refnum].try_once = 0;
server_list[refnum].reconnecting = 0;
server_list[refnum].old_server = -1;
#ifdef NON_BLOCKING_CONNECTS
server_list[refnum].server_change_pending = 0;
#endif
*server_list[refnum].umode = 0;
server_list[refnum].operator = 0;
set_umode(refnum);
/* This used to be in get_connected() */
change_server_channels(c_server, my_from_server);
set_window_server(server_list[refnum].server_change_refnum, my_from_server, 0);
server_list[my_from_server].reconnects++;
if (c_server > -1)
{
server_list[my_from_server].orignick = server_list[c_server].orignick;
if (server_list[my_from_server].orignick)
server_list[c_server].orignick = NULL;
}
set_server_req_server(refnum, 0);
if (channel)
{
set_current_channel_by_refnum(0, channel);
add_channel(channel, primary_server, 0);
new_free(&channel);
xterm_settitle();
}
return 0;
}
/* /*
* server_lost() * server_lost()
* Called when the connection to a server has been closed, and this was not initiated * Called when the connection to a server has been closed, and this was not initiated
@@ -1334,124 +1453,6 @@ noidentwd:
return 0; return 0;
} }
/* This code either gets called from connect_to_server_by_refnum()
* or from the main loop once a nonblocking connect has been
* verified.
*/
int finalize_server_connect(int refnum, int c_server, int my_from_server)
{
if (serv_open_func)
(*serv_open_func)(my_from_server, server_list[my_from_server].local_addr, server_list[my_from_server].port);
if ((c_server > -1) && (c_server != my_from_server))
{
server_list[c_server].reconnecting = 1;
server_list[c_server].old_server = -1;
#ifdef NON_BLOCKING_CONNECTS
server_list[c_server].server_change_pending = 0;
server_list[refnum].from_server = -1;
#endif
close_server(c_server, "changing servers");
}
#ifdef HAVE_LIBSSL
if (get_server_ssl(refnum))
{
int err = 0;
if (!server_list[refnum].ssl_fd)
{
/* Lazily allocate an SSL_CTX the first time this server connects. This
* is reused for subsequent connections to this server.
*/
if (!server_list[refnum].ctx)
{
server_list[refnum].ctx = SSL_CTX_new(SSLv23_client_method());
if (!server_list[refnum].ctx)
{
say("SSL error - failed to allocate SSL_CTX");
SSL_show_errors();
close_server(refnum, NULL);
return -1;
}
}
/* Allocate an SSL for this connection. This will be freed at close time. */
server_list[refnum].ssl_fd = SSL_new(server_list[refnum].ctx);
if (!server_list[refnum].ssl_fd)
{
say("SSL error - failed to create SSL");
SSL_show_errors();
close_server(refnum, NULL);
return -1;
}
SSL_set_fd (server_list[refnum].ssl_fd, server_list[refnum].read);
}
err = SSL_connect(server_list[refnum].ssl_fd);
if (err < 1)
{
server_list[refnum].ssl_error = SSL_get_error(server_list[refnum].ssl_fd, err);
/* The SSL_connect can't complete yet. Return without calling register_server(),
* and this function will be called again later.
*/
if (server_list[refnum].ssl_error == SSL_ERROR_WANT_READ ||
server_list[refnum].ssl_error == SSL_ERROR_WANT_WRITE)
return 0;
say("SSL_connect error: %d", err, server_list[refnum].ssl_error);
SSL_show_errors();
close_server(refnum, NULL);
return -2;
}
say("SSL server connected using %s (%s)",
SSL_get_version(server_list[refnum].ssl_fd),
SSL_get_cipher(server_list[refnum].ssl_fd));
}
#endif
if (!server_list[my_from_server].d_nickname)
malloc_strcpy(&(server_list[my_from_server].d_nickname), nickname);
register_server(my_from_server, server_list[my_from_server].d_nickname);
server_list[refnum].last_msg = now;
server_list[refnum].eof = 0;
/* server_list[refnum].connected = 1; XXX: not registered yet */
server_list[refnum].try_once = 0;
server_list[refnum].reconnecting = 0;
server_list[refnum].old_server = -1;
#ifdef NON_BLOCKING_CONNECTS
server_list[refnum].server_change_pending = 0;
#endif
*server_list[refnum].umode = 0;
server_list[refnum].operator = 0;
set_umode(refnum);
/* This used to be in get_connected() */
change_server_channels(c_server, my_from_server);
set_window_server(server_list[refnum].server_change_refnum, my_from_server, 0);
server_list[my_from_server].reconnects++;
if (c_server > -1)
{
server_list[my_from_server].orignick = server_list[c_server].orignick;
if (server_list[my_from_server].orignick)
server_list[c_server].orignick = NULL;
}
set_server_req_server(refnum, 0);
if (channel)
{
set_current_channel_by_refnum(0, channel);
add_channel(channel, primary_server, 0);
new_free(&channel);
xterm_settitle();
}
return 0;
}
int BX_connect_to_server_by_refnum (int refnum, int c_server) int BX_connect_to_server_by_refnum (int refnum, int c_server)
{ {
char *sname; char *sname;