Refactor vsend_to_server() with help from caf.

git-svn-id: svn://svn.code.sf.net/p/bitchx/code/trunk@410 13b04d17-f746-0410-82c6-800466cd88b0
This commit is contained in:
Tim Cava
2013-10-26 00:49:30 +00:00
parent eebdc6fb96
commit a3ab6659fc

View File

@@ -2522,46 +2522,47 @@ QueueSend *tmp, *tmp1;
static void vsend_to_server(int type, const char *format, va_list args) static void vsend_to_server(int type, const char *format, va_list args)
{ {
char buffer[BIG_BUFFER_SIZE + 1]; /* make this buffer *much* int des, len, server = from_server;
* bigger than needed */ char buffer[IRCD_BUFFER_SIZE + 1];
char *buf = buffer;
int server; if (server == -1)
int des;
if ((server = from_server) == -1)
server = primary_server; server = primary_server;
if (server < 0 || !format)
return;
if (server > -1 && ((des = server_list[server].write) != -1) && format) des = server_list[server].write;
if (des == -1)
{ {
int len; if (do_hook(DISCONNECT_LIST, "No Connection to %d", server))
vsnprintf(buf, BIG_BUFFER_SIZE, format, args); put_it("%s", convert_output_format(fget_string_var(FORMAT_DISCONNECT_FSET),
"%s %s", update_clock(GET_TIME),
if (outbound_line_mangler) "You are not connected to a server. Use /SERVER to connect."));
mangle_line(buf, outbound_line_mangler, strlen(buf));
server_list[server].sent = 1;
len = strlen(buffer);
if (len > (IRCD_BUFFER_SIZE - 2) || len == -1)
buffer[IRCD_BUFFER_SIZE - 2] = (char) 0;
if (x_debug & DEBUG_OUTBOUND)
debugyell("[%d] -> [%s]", des, buffer);
strmcat(buffer, "\r\n", IRCD_BUFFER_SIZE);
if (get_int_var(QUEUE_SENDS_VAR) && (type == QUEUE_SEND) && !oper_command)
{
add_to_server_queue(server, des, buffer);
return; return;
} }
write_to_server(server, des, buffer); len = vsnprintf(buffer, sizeof buffer, format, args);
if (oper_command) if (len < 0)
memset(buffer, 0, len); return;
} if (outbound_line_mangler)
else if (from_server == -1 && server > -1) mangle_line(buffer, outbound_line_mangler, sizeof buffer);
buffer[MAX_PROTOCOL_SIZE] = 0;
if (x_debug & DEBUG_OUTBOUND)
debugyell("[%d] -> [%d] [%s]", des, len, buffer);
strlcat(buffer, "\r\n", sizeof buffer);
if (oper_command)
{ {
if (do_hook(DISCONNECT_LIST,"No Connection to %d", server)) write_to_server(server, des, buffer);
put_it("%s", convert_output_format(fget_string_var(FORMAT_DISCONNECT_FSET), "%s %s", update_clock(GET_TIME), "You are not connected to a server. Use /SERVER to connect.")); memset(buffer, 0, sizeof buffer);
} }
else if (get_int_var(QUEUE_SENDS_VAR) && type == QUEUE_SEND)
add_to_server_queue(server, des, buffer);
else
write_to_server(server, des, buffer);
server_list[server].sent = 1;
} }
/* send_to_server: sends the given info the the server */ /* send_to_server: sends the given info the the server */