~aleteoryx/sexchat

5fc4ba2f3eeb2fbaefb05766f65aa9e0a5d7050a — Aleteoryx 4 months ago 05c52ec
rename struct server -> struct ircconn
M src/common/chanopt.c => src/common/chanopt.c +3 -3
@@ 127,7 127,7 @@ chanopt_command (session *sess, char *tbuf, char *word[], char *word_eol[])
	if (!quiet)
		PrintTextf (sess, "\002%s\002: %s \002%s\002: %s\n",
						_("Network"),
						sess->server->network ? ircserver_get_network (sess->server, TRUE) : _("<none>"),
						sess->server->network ? ircconn_get_network (sess->server, TRUE) : _("<none>"),
						_("Channel"),
						sess->session_name[0] ? sess->session_name : _("<none>"));



@@ 312,7 312,7 @@ chanopt_load (session *sess)
	if (sess->session_name[0] == 0)
		return;

	network = ircserver_get_network (sess->server, FALSE);
	network = ircconn_get_network (sess->server, FALSE);
	if (!network)
		return;



@@ 348,7 348,7 @@ chanopt_save (session *sess)
	if (sess->session_name[0] == 0)
		return;

	network = ircserver_get_network (sess->server, FALSE);
	network = ircconn_get_network (sess->server, FALSE);
	if (!network)
		return;


M src/common/ctcp.c => src/common/ctcp.c +2 -2
@@ 48,7 48,7 @@ ctcp_reply (session *sess, char *nick, char *word[], char *word_eol[],
	/* process %C %B etc */
	check_special_chars (conf, TRUE);
	auto_insert (tbuf, sizeof (tbuf), conf, word, word_eol, "", "", word_eol[5],
		     ircserver_get_network (sess->server, TRUE), "", "", nick, "");
		     ircconn_get_network (sess->server, TRUE), "", "", nick, "");
	g_free (conf);
	handle_command (sess, tbuf, FALSE);
}


@@ 90,7 90,7 @@ ctcp_handle (session *sess, char *to, char *nick, char *ip,
{
	char *po;
	session *chansess;
	server *serv = sess->server;
	ircconn *serv = sess->server;
	char outbuf[1024];
	int ctcp_offset = 2;
	

M src/common/dcc.c => src/common/dcc.c +5 -5
@@ 471,13 471,13 @@ dcc_abort (session *sess, struct DCC *dcc)
}

void
dcc_notify_kill (struct server *serv)
dcc_notify_kill (struct ircconn *serv)
{
	struct server *replaceserv = 0;
	struct ircconn *replaceserv = 0;
	struct DCC *dcc;
	GSList *list = dcc_list;
	if (serv_list)
		replaceserv = (struct server *) serv_list->data;
		replaceserv = (struct ircconn *) serv_list->data;
	while (list)
	{
		dcc = (struct DCC *) list->data;


@@ 779,7 779,7 @@ dcc_read (GIOChannel *source, GIOCondition condition, struct DCC *dcc)
}

static void
dcc_open_query (server *serv, char *nick)
dcc_open_query (ircconn *serv, char *nick)
{
	if (prefs.hex_gui_autoopen_dialog)
		open_query (serv, nick, FALSE);


@@ 1968,7 1968,7 @@ find_dcc (char *nick, char *file, int type)
/* called when we receive a NICK change from server */

void
dcc_change_nick (struct server *serv, char *oldnick, char *newnick)
dcc_change_nick (struct ircconn *serv, char *oldnick, char *newnick)
{
	struct DCC *dcc;
	GSList *list = dcc_list;

M src/common/dcc.h => src/common/dcc.h +3 -3
@@ 45,7 45,7 @@ enum dcc_type {

struct DCC
{
	struct server *serv;
	struct ircconn *serv;
	struct dcc_chat *dccchat;
	struct proxy_state *proxy;
	guint32 addr;					/* the 32bit IP number, host byte order */


@@ 114,8 114,8 @@ gboolean is_dcc_completed (struct DCC *dcc);
void dcc_abort (session *sess, struct DCC *dcc);
void dcc_get (struct DCC *dcc);
int dcc_resume (struct DCC *dcc);
void dcc_change_nick (server *serv, char *oldnick, char *newnick);
void dcc_notify_kill (struct server *serv);
void dcc_change_nick (ircconn *serv, char *oldnick, char *newnick);
void dcc_notify_kill (struct ircconn *serv);
struct DCC *dcc_write_chat (char *nick, char *text);
void dcc_send (struct session *sess, char *to, char *file, gint64 maxcps, int passive);
struct DCC *find_dcc (char *nick, char *file, int type);

M src/common/fe.h => src/common/fe.h +13 -13
@@ 50,8 50,8 @@ void fe_main (void);
void fe_cleanup (void);
void fe_exit (void);
void fe_new_window (struct session *sess, int focus);
void fe_new_server (struct server *serv);
void fe_add_rawlog (struct server *serv, char *text, int len, int outbound);
void fe_new_server (struct ircconn *serv);
void fe_add_rawlog (struct ircconn *serv, char *text, int len, int outbound);
#define FE_MSG_WAIT 1
#define FE_MSG_INFO 2
#define FE_MSG_WARN 4


@@ 74,10 74,10 @@ void fe_flash_window (struct session *sess);
void fe_update_mode_buttons (struct session *sess, char mode, char sign);
void fe_update_channel_key (struct session *sess);
void fe_update_channel_limit (struct session *sess);
int fe_is_chanwindow (struct server *serv);
void fe_add_chan_list (struct server *serv, char *chan, char *users,
int fe_is_chanwindow (struct ircconn *serv);
void fe_add_chan_list (struct ircconn *serv, char *chan, char *users,
							  char *topic);
void fe_chan_list_end (struct server *serv);
void fe_chan_list_end (struct ircconn *serv);
gboolean fe_add_ban_list (struct session *sess, char *mask, char *who, char *when, int rplcode);
gboolean fe_ban_list_end (struct session *sess, int rplcode);
void fe_notify_update (char *name);


@@ 85,7 85,7 @@ void fe_notify_ask (char *name, char *networks);
void fe_text_clear (struct session *sess, int lines);
void fe_close_window (struct session *sess);
void fe_progressbar_start (struct session *sess);
void fe_progressbar_end (struct server *serv);
void fe_progressbar_end (struct ircconn *serv);
void fe_print_text (struct session *sess, char *text, unsigned char *msgid,
			time_t stamp, gboolean no_activity);
void fe_userlist_insert (struct session *sess, struct User *newuser, gboolean sel);


@@ 104,7 104,7 @@ int fe_dcc_open_send_win (int passive);
int fe_dcc_open_chat_win (int passive);
void fe_clear_channel (struct session *sess);
void fe_session_callback (struct session *sess);
void fe_server_callback (struct server *serv);
void fe_server_callback (struct ircconn *serv);
void fe_url_add (const char *text);
void fe_pluginlist_update (void);
void fe_buttons_update (struct session *sess);


@@ 113,13 113,13 @@ void fe_dcc_send_filereq (struct session *sess, char *nick, int maxcps, int pass
void fe_set_channel (struct session *sess);
void fe_set_title (struct session *sess);
void fe_set_nonchannel (struct session *sess, int state);
void fe_set_nick (struct server *serv, char *newnick);
void fe_set_nick (struct ircconn *serv, char *newnick);
void fe_ignore_update (int level);
void fe_beep (session *sess);
void fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gtk_xtext_search_flags flags);
void fe_set_lag (server *serv, long lag);
void fe_set_throttle (server *serv);
void fe_set_away (server *serv);
void fe_set_lag (ircconn *serv, long lag);
void fe_set_throttle (ircconn *serv);
void fe_set_away (ircconn *serv);
void fe_serverlist_open (session *sess);
void fe_get_bool (char *title, char *prompt, void *callback, void *userdata);
void fe_get_str (char *prompt, char *def, void *callback, void *ud);


@@ 164,7 164,7 @@ void fe_menu_update (menu_entry *);
#define FE_SE_DISCONNECT 2
#define FE_SE_RECONDELAY 3
#define FE_SE_CONNECTING 4
void fe_server_event (server *serv, int type, int arg);
void fe_server_event (ircconn *serv, int type, int arg);
/* pass NULL filename2 for default HexChat icon */
void fe_tray_set_flash (const char *filename1, const char *filename2, int timeout);
/* pass NULL filename for default HexChat icon */


@@ 179,7 179,7 @@ typedef enum
} feicon;
void fe_tray_set_icon (feicon icon);
void fe_tray_set_tooltip (const char *text);
void fe_open_chan_list (server *serv, char *filter, int do_refresh);
void fe_open_chan_list (ircconn *serv, char *filter, int do_refresh);
const char *fe_get_default_font (void);

#endif

M src/common/hexchat.c => src/common/hexchat.c +8 -8
@@ 187,7 187,7 @@ is_session (session * sess)
}

session *
find_dialog (server *serv, char *nick)
find_dialog (ircconn *serv, char *nick)
{
	GSList *list = sess_list;
	session *sess;


@@ 206,7 206,7 @@ find_dialog (server *serv, char *nick)
}

session *
find_channel (server *serv, char *chan)
find_channel (ircconn *serv, char *chan)
{
	session *sess;
	GSList *list = sess_list;


@@ 226,7 226,7 @@ find_channel (server *serv, char *chan)
static void
lagcheck_update (void)
{
	server *serv;
	ircconn *serv;
	GSList *list = serv_list;
	
	if (!prefs.hex_gui_lagometer)


@@ 245,7 245,7 @@ lagcheck_update (void)
void
lag_check (void)
{
	server *serv;
	ircconn *serv;
	GSList *list = serv_list;
	unsigned long tim;
	char tbuf[128];


@@ 475,7 475,7 @@ irc_init (session *sess)
}

static session *
session_new (server *serv, char *from, int type, int focus)
session_new (ircconn *serv, char *from, int type, int focus)
{
	session *sess;



@@ 511,7 511,7 @@ session_new (server *serv, char *from, int type, int focus)
}

session *
new_ircwindow (server *serv, char *name, int type, int focus)
new_ircwindow (ircconn *serv, char *name, int type, int focus)
{
	session *sess;



@@ 582,7 582,7 @@ send_quit_or_part (session * killsess)
	int willquit = TRUE;
	GSList *list;
	session *sess;
	server *killserv = killsess->server;
	ircconn *killserv = killsess->server;

	/* check if this is the last session using this server */
	list = sess_list;


@@ 624,7 624,7 @@ send_quit_or_part (session * killsess)
void
session_free (session *killsess)
{
	server *killserv = killsess->server;
	ircconn *killserv = killsess->server;
	session *sess;
	GSList *list;
	int oldidx;

M src/common/hexchat.h => src/common/hexchat.h +55 -55
@@ 374,7 374,7 @@ typedef struct session
	guint8 text_scrollback;
	guint8 text_strip;

	struct server *server;
	struct ircconn *server;
	tree *usertree;					/* alphabetical tree */
	struct User *me;					/* points to myself in the usertree */
	char channel[CHANLEN];


@@ 433,62 433,62 @@ typedef struct session
#define MECH_SCRAM_SHA_256 3
#define MECH_SCRAM_SHA_512 4

typedef struct server
typedef struct ircconn
{
	/*  server control operations (in server*.c) */
	int  (*cleanup)(struct server *);
	void (*flush_queue)(struct server *);
	void (*auto_reconnect)(struct server *, int send_quit, int err);
	int  (*cleanup)(struct ircconn *);
	void (*flush_queue)(struct ircconn *);
	void (*auto_reconnect)(struct ircconn *, int send_quit, int err);
	
	void (*p_connected)(struct server *);
	void (*p_disconnected)(struct server *, int, int);
	void (*p_ssl_message)(struct server *, const char *);
	void (*p_serverlookup)(struct server *, const char *);
	void (*p_connfail)(struct server *, const char *);
	void (*p_connstop)(struct server *, const char *);
	void (*p_connecting)(struct server *, const char *, const char *, const char *);
	void (*p_unknhost)(struct server *);
	void (*p_readerr)(struct server *, int);
	void (*p_log)(struct server *, const char *);
	char *(*p_get_network)(struct server *, gboolean);
	void (*p_rawlog)(struct server *, char *, int, int);
	void (*p_throttle_update)(struct server *);
	void (*p_cleanup)(struct server *);
	void (*p_stopconnect)(struct server *);
	void (*p_connected)(struct ircconn *);
	void (*p_disconnected)(struct ircconn *, int, int);
	void (*p_ssl_message)(struct ircconn *, const char *);
	void (*p_serverlookup)(struct ircconn *, const char *);
	void (*p_connfail)(struct ircconn *, const char *);
	void (*p_connstop)(struct ircconn *, const char *);
	void (*p_connecting)(struct ircconn *, const char *, const char *, const char *);
	void (*p_unknhost)(struct ircconn *);
	void (*p_readerr)(struct ircconn *, int);
	void (*p_log)(struct ircconn *, const char *);
	char *(*p_get_network)(struct ircconn *, gboolean);
	void (*p_rawlog)(struct ircconn *, char *, int, int);
	void (*p_throttle_update)(struct ircconn *);
	void (*p_cleanup)(struct ircconn *);
	void (*p_stopconnect)(struct ircconn *);
	
	/* irc protocol functions (in proto*.c) */
	void (*p_inline)(struct server *, char *buf, int len);
	void (*p_invite)(struct server *, char *channel, char *nick);
	void (*p_cycle)(struct server *, char *channel, char *key);
	void (*p_ctcp)(struct server *, char *to, char *msg);
	void (*p_nctcp)(struct server *, char *to, char *msg);
	void (*p_quit)(struct server *);
	void (*p_kick)(struct server *, char *channel, char *nick, char *reason);
	void (*p_part)(struct server *, char *channel, char *reason);
	void (*p_ns_identify)(struct server *, char *pass);
	void (*p_ns_ghost)(struct server *, char *usname, char *pass);
	void (*p_join)(struct server *, char *channel, char *key);
	void (*p_join_list)(struct server *, GSList *favorites);
	void (*p_login)(struct server *, char *user, char *realname);
	void (*p_join_info)(struct server *, char *channel);
	void (*p_mode)(struct server *, char *target, char *mode);
	void (*p_user_list)(struct server *, char *channel);
	void (*p_away_status)(struct server *, char *channel);
	void (*p_whois)(struct server *, char *nicks);
	void (*p_get_ip)(struct server *, char *nick);
	void (*p_get_ip_uh)(struct server *, char *nick);
	void (*p_set_back)(struct server *);
	void (*p_set_away)(struct server *, char *reason);
	void (*p_message)(struct server *, char *channel, char *text);
	void (*p_action)(struct server *, char *channel, char *act);
	void (*p_notice)(struct server *, char *channel, char *text);
	void (*p_topic)(struct server *, char *channel, char *topic);
	void (*p_list_channels)(struct server *, char *arg, int min_users);
	void (*p_change_nick)(struct server *, char *new_nick);
	void (*p_names)(struct server *, char *channel);
	void (*p_ping)(struct server *, char *to, char *timestring);
/*	void (*p_set_away)(struct server *);*/
	int (*p_raw)(struct server *, char *raw);
	void (*p_inline)(struct ircconn *, char *buf, int len);
	void (*p_invite)(struct ircconn *, char *channel, char *nick);
	void (*p_cycle)(struct ircconn *, char *channel, char *key);
	void (*p_ctcp)(struct ircconn *, char *to, char *msg);
	void (*p_nctcp)(struct ircconn *, char *to, char *msg);
	void (*p_quit)(struct ircconn *);
	void (*p_kick)(struct ircconn *, char *channel, char *nick, char *reason);
	void (*p_part)(struct ircconn *, char *channel, char *reason);
	void (*p_ns_identify)(struct ircconn *, char *pass);
	void (*p_ns_ghost)(struct ircconn *, char *usname, char *pass);
	void (*p_join)(struct ircconn *, char *channel, char *key);
	void (*p_join_list)(struct ircconn *, GSList *favorites);
	void (*p_login)(struct ircconn *, char *user, char *realname);
	void (*p_join_info)(struct ircconn *, char *channel);
	void (*p_mode)(struct ircconn *, char *target, char *mode);
	void (*p_user_list)(struct ircconn *, char *channel);
	void (*p_away_status)(struct ircconn *, char *channel);
	void (*p_whois)(struct ircconn *, char *nicks);
	void (*p_get_ip)(struct ircconn *, char *nick);
	void (*p_get_ip_uh)(struct ircconn *, char *nick);
	void (*p_set_back)(struct ircconn *);
	void (*p_set_away)(struct ircconn *, char *reason);
	void (*p_message)(struct ircconn *, char *channel, char *text);
	void (*p_action)(struct ircconn *, char *channel, char *act);
	void (*p_notice)(struct ircconn *, char *channel, char *text);
	void (*p_topic)(struct ircconn *, char *channel, char *topic);
	void (*p_list_channels)(struct ircconn *, char *arg, int min_users);
	void (*p_change_nick)(struct ircconn *, char *new_nick);
	void (*p_names)(struct ircconn *, char *channel);
	void (*p_ping)(struct ircconn *, char *to, char *timestring);
/*	void (*p_set_away)(struct ircconn *);*/
	int (*p_raw)(struct ircconn *, char *raw);
	int (*p_cmp)(const char *s1, const char *s2);

	int port;


@@ 609,10 609,10 @@ typedef struct server
	unsigned int accept_invalid_cert:1;/* ignore result of server's cert. verify */
	scram_session *scram_session; /* session for SASL SCRAM authentication */
#endif
} server;
} ircconn;

typedef int (*cmd_callback) (struct session * sess, char *tbuf, char *word[],
									  char *word_eol[]);
			     char *word_eol[]);

struct commands
{


@@ 626,7 626,7 @@ struct commands

struct away_msg
{
	struct server *server;
	struct ircconn *server;
	char nick[NICKLEN];
	char *message;
};

M src/common/hexchatc.h => src/common/hexchatc.h +3 -3
@@ 46,9 46,9 @@ extern GSList *urlhandler_list;
extern GSList *tabmenu_list;
extern GList *sess_list_by_lastact[];

session * find_channel (server *serv, char *chan);
session * find_dialog (server *serv, char *nick);
session * new_ircwindow (server *serv, char *name, int type, int focus);
session * find_channel (ircconn *serv, char *chan);
session * find_dialog (ircconn *serv, char *nick);
session * new_ircwindow (ircconn *serv, char *name, int type, int focus);
void hexchat_reinit_timers (void);
void lastact_update (session * sess);
session * lastact_getfirst (int (*filter) (session *sess));

M src/common/ignore.c => src/common/ignore.c +1 -1
@@ 338,7 338,7 @@ flood_autodialog_timeout (gpointer data)
}

int
flood_check (char *nick, char *ip, server *serv, session *sess, int what)	/*0=ctcp  1=priv */
flood_check (char *nick, char *ip, ircconn *serv, session *sess, int what)	/*0=ctcp  1=priv */
{
	time_t current_time;
	current_time = time (NULL);

M src/common/ignore.h => src/common/ignore.h +1 -1
@@ 52,6 52,6 @@ void ignore_load (void);
void ignore_save (void);
void ignore_gui_open (void);
void ignore_gui_update (int level);
int flood_check (char *nick, char *ip, server *serv, session *sess, int what);
int flood_check (char *nick, char *ip, ircconn *serv, session *sess, int what);

#endif

M src/common/inbound.c => src/common/inbound.c +50 -50
@@ 96,7 96,7 @@ set_topic (session *sess, char *topic, char *stripped_topic)
}

static session *
find_session_from_nick (char *nick, server *serv)
find_session_from_nick (char *nick, ircconn *serv)
{
	session *sess;
	GSList *list = sess_list;


@@ 132,7 132,7 @@ find_session_from_nick (char *nick, server *serv)
}

static session *
inbound_open_dialog (server *serv, char *from,
inbound_open_dialog (ircconn *serv, char *from,
							const message_tags_data *tags_data)
{
	session *sess;


@@ 145,7 145,7 @@ inbound_open_dialog (server *serv, char *from,
}

static void
inbound_make_idtext (server *serv, char *idtext, int max, int id)
inbound_make_idtext (ircconn *serv, char *idtext, int max, int id)
{
	idtext[0] = 0;
	if (serv->have_idmsg || serv->have_accnotify)


@@ 163,7 163,7 @@ inbound_make_idtext (server *serv, char *idtext, int max, int id)
}

void
inbound_privmsg (server *serv, char *from, char *to, char *ip, char *text, int id,
inbound_privmsg (ircconn *serv, char *from, char *to, char *ip, char *text, int id,
			const message_tags_data *tags_data)
{
	session *sess;


@@ 310,7 310,7 @@ alert_match_text (char *text, char *masks)
}

static int
is_hilight (char *from, char *text, session *sess, server *serv)
is_hilight (char *from, char *text, session *sess, ircconn *serv)
{
	if (alert_match_word (from, prefs.hex_irc_no_hilight))
		return 0;


@@ 339,7 339,7 @@ inbound_action (session *sess, char *chan, char *from, char *ip, char *text,
		int fromme, int id, const message_tags_data *tags_data)
{
	session *def = sess;
	server *serv = sess->server;
	ircconn *serv = sess->server;
	struct User *user;
	char nickchar[2] = "\000";
	char idtext[64];


@@ 427,7 427,7 @@ inbound_action (session *sess, char *chan, char *from, char *ip, char *text,
}

void
inbound_chanmsg (server *serv, session *sess, char *chan, char *from, 
inbound_chanmsg (ircconn *serv, session *sess, char *chan, char *from, 
			char *text, char fromme, int id, 
			const message_tags_data *tags_data)
{


@@ 490,7 490,7 @@ inbound_chanmsg (server *serv, session *sess, char *chan, char *from,
}

void
inbound_newnick (server *serv, char *nick, char *newnick, int quiet,
inbound_newnick (ircconn *serv, char *nick, char *newnick, int quiet,
					  const message_tags_data *tags_data)
{
	int me = FALSE;


@@ 536,7 536,7 @@ inbound_newnick (server *serv, char *nick, char *newnick, int quiet,

/* find a "<none>" tab */
static session *
find_unused_session (server *serv)
find_unused_session (ircconn *serv)
{
	session *sess;
	GSList *list = sess_list;


@@ 555,7 555,7 @@ find_unused_session (server *serv)
}

static session *
find_session_from_waitchannel (char *chan, struct server *serv)
find_session_from_waitchannel (char *chan, struct ircconn *serv)
{
	session *sess;
	GSList *list = sess_list;


@@ 573,7 573,7 @@ find_session_from_waitchannel (char *chan, struct server *serv)
}

void
inbound_ujoin (server *serv, char *chan, char *nick, char *ip,
inbound_ujoin (ircconn *serv, char *chan, char *nick, char *ip,
					const message_tags_data *tags_data)
{
	session *sess;


@@ 632,7 632,7 @@ inbound_ujoin (server *serv, char *chan, char *nick, char *ip,
}

void
inbound_ukick (server *serv, char *chan, char *kicker, char *reason,
inbound_ukick (ircconn *serv, char *chan, char *kicker, char *reason,
					const message_tags_data *tags_data)
{
	session *sess = find_channel (serv, chan);


@@ 649,7 649,7 @@ inbound_ukick (server *serv, char *chan, char *kicker, char *reason,
}

void
inbound_upart (server *serv, char *chan, char *ip, char *reason,
inbound_upart (ircconn *serv, char *chan, char *ip, char *reason,
					const message_tags_data *tags_data)
{
	session *sess = find_channel (serv, chan);


@@ 664,7 664,7 @@ inbound_upart (server *serv, char *chan, char *ip, char *reason,
}

void
inbound_nameslist (server *serv, char *chan, char *names,
inbound_nameslist (ircconn *serv, char *chan, char *names,
						 const message_tags_data *tags_data)
{
	session *sess;


@@ 723,7 723,7 @@ inbound_nameslist (server *serv, char *chan, char *names,
}

void
inbound_topic (server *serv, char *chan, char *topic_text,
inbound_topic (ircconn *serv, char *chan, char *topic_text,
					const message_tags_data *tags_data)
{
	session *sess = find_channel (serv, chan);


@@ 741,7 741,7 @@ inbound_topic (server *serv, char *chan, char *topic_text,
}

void
inbound_topicnew (server *serv, char *nick, char *chan, char *topic,
inbound_topicnew (ircconn *serv, char *nick, char *chan, char *topic,
						const message_tags_data *tags_data)
{
	session *sess;


@@ 758,7 758,7 @@ inbound_topicnew (server *serv, char *nick, char *chan, char *topic,
}

void
inbound_join (server *serv, char *chan, char *user, char *ip, char *account,
inbound_join (ircconn *serv, char *chan, char *user, char *ip, char *account,
				  char *realname, const message_tags_data *tags_data)
{
	session *sess = find_channel (serv, chan);


@@ 770,7 770,7 @@ inbound_join (server *serv, char *chan, char *user, char *ip, char *account,
}

void
inbound_kick (server *serv, char *chan, char *user, char *kicker, char *reason,
inbound_kick (ircconn *serv, char *chan, char *user, char *kicker, char *reason,
				  const message_tags_data *tags_data)
{
	session *sess = find_channel (serv, chan);


@@ 782,7 782,7 @@ inbound_kick (server *serv, char *chan, char *user, char *kicker, char *reason,
}

void
inbound_part (server *serv, char *chan, char *user, char *ip, char *reason,
inbound_part (ircconn *serv, char *chan, char *user, char *ip, char *reason,
				  const message_tags_data *tags_data)
{
	session *sess = find_channel (serv, chan);


@@ 797,7 797,7 @@ inbound_part (server *serv, char *chan, char *user, char *ip, char *reason,
}

void
inbound_topictime (server *serv, char *chan, char *nick, time_t stamp,
inbound_topictime (ircconn *serv, char *chan, char *nick, time_t stamp,
						 const message_tags_data *tags_data)
{
	char *tim = ctime (&stamp);


@@ 813,7 813,7 @@ inbound_topictime (server *serv, char *chan, char *nick, time_t stamp,
}

void
inbound_quit (server *serv, char *nick, char *ip, char *reason,
inbound_quit (ircconn *serv, char *nick, char *ip, char *reason,
				  const message_tags_data *tags_data)
{
	GSList *list = sess_list;


@@ 844,7 844,7 @@ inbound_quit (server *serv, char *nick, char *ip, char *reason,
}

void
inbound_account (server *serv, char *nick, char *account,
inbound_account (ircconn *serv, char *nick, char *account,
					  const message_tags_data *tags_data)
{
	session *sess = NULL;


@@ 902,7 902,7 @@ inbound_ping_reply (session *sess, char *timestring, char *from,
}

static session *
find_session_from_type (int type, server *serv)
find_session_from_type (int type, ircconn *serv)
{
	session *sess;
	GSList *list = sess_list;


@@ 917,7 917,7 @@ find_session_from_type (int type, server *serv)
}

void
inbound_notice (server *serv, char *to, char *nick, char *msg, char *ip, int id,
inbound_notice (ircconn *serv, char *to, char *nick, char *msg, char *ip, int id,
		const message_tags_data *tags_data)
{
	char *ptr = to;


@@ 1018,7 1018,7 @@ inbound_notice (server *serv, char *to, char *nick, char *msg, char *ip, int id,
}

void
inbound_away (server *serv, char *nick, char *msg, const message_tags_data *tags_data)
inbound_away (ircconn *serv, char *nick, char *msg, const message_tags_data *tags_data)
{
	struct away_msg *away = server_away_find_message (serv, nick);
	session *sess = NULL;


@@ 1058,7 1058,7 @@ inbound_away (server *serv, char *nick, char *msg, const message_tags_data *tags
}

void
inbound_away_notify (server *serv, char *nick, char *reason, const message_tags_data *tags_data)
inbound_away_notify (ircconn *serv, char *nick, char *reason, const message_tags_data *tags_data)
{
	session *sess = NULL;
	GSList *list;


@@ 1083,7 1083,7 @@ inbound_away_notify (server *serv, char *nick, char *reason, const message_tags_
}

int
inbound_nameslist_end (server *serv, char *chan, const message_tags_data *tags_data)
inbound_nameslist_end (ircconn *serv, char *chan, const message_tags_data *tags_data)
{
	session *sess;
	GSList *list;


@@ 1116,7 1116,7 @@ inbound_nameslist_end (server *serv, char *chan, const message_tags_data *tags_d
}

static gboolean
check_autojoin_channels (server *serv)
check_autojoin_channels (ircconn *serv)
{
	int i = 0;
	session *sess;


@@ 1198,7 1198,7 @@ inbound_next_nick (session *sess, char *nick, int error,
						 const message_tags_data *tags_data)
{
	char *newnick;
	server *serv = sess->server;
	ircconn *serv = sess->server;
	ircnet *net;

	serv->nickcount++;


@@ 1311,7 1311,7 @@ do_dns (session *sess, char *nick, char *host,
}

static void
set_default_modes (server *serv)
set_default_modes (ircconn *serv)
{
	char modes[8];



@@ 1338,7 1338,7 @@ inbound_login_start (session *sess, char *nick, char *servname,
							const message_tags_data *tags_data)
{
	inbound_newnick (sess->server, sess->server->nick, nick, TRUE, tags_data);
	ircserver_set_name (sess->server, servname);
	ircconn_set_name (sess->server, servname);
	if (sess->type == SESS_SERVER)
		log_open_or_close (sess);
	/* reset our away status */


@@ 1350,7 1350,7 @@ inbound_login_start (session *sess, char *nick, char *servname,
}

static void
inbound_set_all_away_status (server *serv, char *nick, unsigned int status)
inbound_set_all_away_status (ircconn *serv, char *nick, unsigned int status)
{
	GSList *list;
	session *sess;


@@ 1366,7 1366,7 @@ inbound_set_all_away_status (server *serv, char *nick, unsigned int status)
}

void
inbound_uaway (server *serv, const message_tags_data *tags_data)
inbound_uaway (ircconn *serv, const message_tags_data *tags_data)
{
	serv->is_away = TRUE;
	serv->away_time = time (NULL);


@@ 1376,7 1376,7 @@ inbound_uaway (server *serv, const message_tags_data *tags_data)
}

void
inbound_uback (server *serv, const message_tags_data *tags_data)
inbound_uback (ircconn *serv, const message_tags_data *tags_data)
{
	serv->is_away = FALSE;
	serv->reconnect_away = FALSE;


@@ 1417,7 1417,7 @@ inbound_user_info (session *sess, char *chan, char *user, char *host,
						 char *account, unsigned int away,
						 const message_tags_data *tags_data)
{
	server *serv = sess->server;
	ircconn *serv = sess->server;
	session *who_sess;
	GSList *list;
	char *uhost = NULL;


@@ 1466,7 1466,7 @@ inbound_banlist (session *sess, time_t stamp, char *chan, char *mask,
					  char *banner, int rplcode, const message_tags_data *tags_data)
{
	char *time_str = ctime (&stamp);
	server *serv = sess->server;
	ircconn *serv = sess->server;
	char *nl;

	if (stamp <= 0 || time_str == NULL)


@@ 1512,7 1512,7 @@ inbound_exec_eom_cmd (char *str, void *sess)
}

static int
inbound_nickserv_login (server *serv)
inbound_nickserv_login (ircconn *serv)
{
	/* this could grow ugly, but let's hope there won't be new NickServ types */
	switch (serv->loginmethod)


@@ 1536,7 1536,7 @@ inbound_login_end (session *sess, char *text, const message_tags_data *tags_data
{
	GSList *cmdlist;
	commandentry *cmd;
	server *serv = sess->server;
	ircconn *serv = sess->server;
	ircnet *net = serv->network;

	if (!serv->end_of_motd)


@@ 1601,7 1601,7 @@ inbound_login_end (session *sess, char *text, const message_tags_data *tags_data
}

void
inbound_identified (server *serv)	/* 'MODE +e MYSELF' on freenode */
inbound_identified (ircconn *serv)	/* 'MODE +e MYSELF' on freenode */
{
	if (serv->joindelay_tag)
	{


@@ 1622,7 1622,7 @@ static const char *sasl_mechanisms[] =
};

static void
inbound_toggle_caps (server *serv, const char *extensions_str, gboolean enable)
inbound_toggle_caps (ircconn *serv, const char *extensions_str, gboolean enable)
{
	char **extensions;
	gsize i;


@@ 1680,7 1680,7 @@ inbound_toggle_caps (server *serv, const char *extensions_str, gboolean enable)
}

void
inbound_cap_ack (server *serv, char *nick, char *extensions,
inbound_cap_ack (ircconn *serv, char *nick, char *extensions,
					  const message_tags_data *tags_data)
{
	EMIT_SIGNAL_TAGS (XP_TE_CAPACK, serv->server_session, nick, extensions, NULL, NULL, 0, tags_data);


@@ 1689,7 1689,7 @@ inbound_cap_ack (server *serv, char *nick, char *extensions,
}

void
inbound_cap_del (server *serv, char *nick, char *extensions,
inbound_cap_del (ircconn *serv, char *nick, char *extensions,
					 const message_tags_data *tags_data)
{
	EMIT_SIGNAL_TAGS (XP_TE_CAPDEL, serv->server_session, nick, extensions, NULL, NULL, 0, tags_data);


@@ 1730,7 1730,7 @@ static const char * const supported_caps[] = {
};

static int
get_supported_mech (server *serv, const char *list)
get_supported_mech (ircconn *serv, const char *list)
{
	char **mechs = g_strsplit (list, ",", 0);
	gsize i;


@@ 1785,7 1785,7 @@ get_supported_mech (server *serv, const char *list)
}

void
inbound_cap_ls (server *serv, char *nick, char *extensions_str,
inbound_cap_ls (ircconn *serv, char *nick, char *extensions_str,
					 const message_tags_data *tags_data)
{
	char buffer[500];	/* buffer for requesting capabilities and emitting the signal */


@@ 1873,7 1873,7 @@ inbound_cap_ls (server *serv, char *nick, char *extensions_str,
}

void
inbound_cap_nak (server *serv, char *extensions_str, const message_tags_data *tags_data)
inbound_cap_nak (ircconn *serv, char *extensions_str, const message_tags_data *tags_data)
{
	char **extensions;
	int i;


@@ 1895,7 1895,7 @@ inbound_cap_nak (server *serv, char *extensions_str, const message_tags_data *ta
}

void
inbound_cap_list (server *serv, char *nick, char *extensions,
inbound_cap_list (ircconn *serv, char *nick, char *extensions,
						const message_tags_data *tags_data)
{
	if (g_str_has_prefix (extensions, "* "))


@@ 1907,7 1907,7 @@ inbound_cap_list (server *serv, char *nick, char *extensions,
}

static void
plain_authenticate (server *serv, char *user, char *password)
plain_authenticate (ircconn *serv, char *user, char *password)
{
	char *pass = encode_sasl_pass_plain (user, password);



@@ 1943,7 1943,7 @@ plain_authenticate (server *serv, char *user, char *password)
 * Sends AUTHENTICATE messages to log in via SCRAM.
 */
static void
scram_authenticate (server *serv, const char *data, const char *digest,
scram_authenticate (ircconn *serv, const char *data, const char *digest,
					const char *user, const char *password)
{
	char *encoded, *decoded, *output;


@@ 1999,7 1999,7 @@ scram_authenticate (server *serv, const char *data, const char *digest,
#endif

void
inbound_sasl_authenticate (server *serv, char *data)
inbound_sasl_authenticate (ircconn *serv, char *data)
{
		ircnet *net = (ircnet*)serv->network;
		char *user;


@@ 2040,7 2040,7 @@ inbound_sasl_authenticate (server *serv, char *data)
}

void
inbound_sasl_error (server *serv)
inbound_sasl_error (ircconn *serv)
{
#ifdef USE_OPENSSL
    g_clear_pointer (&serv->scram_session, scram_session_free);

M src/common/inbound.h => src/common/inbound.h +29 -29
@@ 24,32 24,32 @@

void inbound_next_nick (session *sess, char *nick, int error,
								const message_tags_data *tags_data);
void inbound_uback (server *serv, const message_tags_data *tags_data);
void inbound_uaway (server *serv, const message_tags_data *tags_data);
void inbound_account (server *serv, char *nick, char *account,
void inbound_uback (ircconn *serv, const message_tags_data *tags_data);
void inbound_uaway (ircconn *serv, const message_tags_data *tags_data);
void inbound_account (ircconn *serv, char *nick, char *account,
							 const message_tags_data *tags_data);
void inbound_part (server *serv, char *chan, char *user, char *ip, char *reason,
void inbound_part (ircconn *serv, char *chan, char *user, char *ip, char *reason,
						 const message_tags_data *tags_data);
void inbound_upart (server *serv, char *chan, char *ip, char *reason,
void inbound_upart (ircconn *serv, char *chan, char *ip, char *reason,
						  const message_tags_data *tags_data);
void inbound_ukick (server *serv, char *chan, char *kicker, char *reason,
void inbound_ukick (ircconn *serv, char *chan, char *kicker, char *reason,
						  const message_tags_data *tags_data);
void inbound_kick (server *serv, char *chan, char *user, char *kicker,
void inbound_kick (ircconn *serv, char *chan, char *user, char *kicker,
						 char *reason, const message_tags_data *tags_data);
void inbound_notice (server *serv, char *to, char *nick, char *msg, char *ip,
void inbound_notice (ircconn *serv, char *to, char *nick, char *msg, char *ip,
							int id, const message_tags_data *tags_data);
void inbound_quit (server *serv, char *nick, char *ip, char *reason,
void inbound_quit (ircconn *serv, char *nick, char *ip, char *reason,
						 const message_tags_data *tags_data);
void inbound_topicnew (server *serv, char *nick, char *chan, char *topic,
void inbound_topicnew (ircconn *serv, char *nick, char *chan, char *topic,
							  const message_tags_data *tags_data);
void inbound_join (server *serv, char *chan, char *user, char *ip, 
void inbound_join (ircconn *serv, char *chan, char *user, char *ip, 
						 char *account, char *realname, 
						 const message_tags_data *tags_data);
void inbound_ujoin (server *serv, char *chan, char *nick, char *ip,
void inbound_ujoin (ircconn *serv, char *chan, char *nick, char *ip,
						  const message_tags_data *tags_data);
void inbound_topictime (server *serv, char *chan, char *nick, time_t stamp,
void inbound_topictime (ircconn *serv, char *chan, char *nick, time_t stamp,
								const message_tags_data *tags_data);
void inbound_topic (server *serv, char *chan, char *topic_text,
void inbound_topic (ircconn *serv, char *chan, char *topic_text,
						  const message_tags_data *tags_data);
void inbound_user_info_start (session *sess, char *nick,
										const message_tags_data *tags_data);


@@ 63,42 63,42 @@ int inbound_banlist (session *sess, time_t stamp, char *chan, char *mask,
							const message_tags_data *tags_data);
void inbound_ping_reply (session *sess, char *timestring, char *from,
								 const message_tags_data *tags_data);
void inbound_nameslist (server *serv, char *chan, char *names,
void inbound_nameslist (ircconn *serv, char *chan, char *names,
								const message_tags_data *tags_data);
int inbound_nameslist_end (server *serv, char *chan,
int inbound_nameslist_end (ircconn *serv, char *chan,
									const message_tags_data *tags_data);
void inbound_away (server *serv, char *nick, char *msg,
void inbound_away (ircconn *serv, char *nick, char *msg,
						 const message_tags_data *tags_data);
void inbound_away_notify (server *serv, char *nick, char *reason,
void inbound_away_notify (ircconn *serv, char *nick, char *reason,
								  const message_tags_data *tags_data);
void inbound_login_start (session *sess, char *nick, char *servname,
								  const message_tags_data *tags_data);
void inbound_login_end (session *sess, char *text,
								const message_tags_data *tags_data);
void inbound_chanmsg (server *serv, session *sess, char *chan, char *from,
void inbound_chanmsg (ircconn *serv, session *sess, char *chan, char *from,
							 char *text, char fromme, int id, 
							 const message_tags_data *tags_data);
void clear_channel (session *sess);
void set_topic (session *sess, char *topic, char *stripped_topic);
void inbound_privmsg (server *serv, char *from, char *to, char *ip, char *text, int id, 
void inbound_privmsg (ircconn *serv, char *from, char *to, char *ip, char *text, int id, 
							 const message_tags_data *tags_data);
void inbound_action (session *sess, char *chan, char *from, char *ip,
							char *text, int fromme, int id,
							const message_tags_data *tags_data);
void inbound_newnick (server *serv, char *nick, char *newnick, int quiet,
void inbound_newnick (ircconn *serv, char *nick, char *newnick, int quiet,
							 const message_tags_data *tags_data);
void inbound_identified (server *serv);
void inbound_cap_ack (server *serv, char *nick, char *extensions,
void inbound_identified (ircconn *serv);
void inbound_cap_ack (ircconn *serv, char *nick, char *extensions,
							 const message_tags_data *tags_data);
void inbound_cap_ls (server *serv, char *nick, char *extensions,
void inbound_cap_ls (ircconn *serv, char *nick, char *extensions,
							const message_tags_data *tags_data);
void inbound_cap_nak (server *serv, char *extensions, const message_tags_data *tags_data);
void inbound_cap_list (server *serv, char *nick, char *extensions,
void inbound_cap_nak (ircconn *serv, char *extensions, const message_tags_data *tags_data);
void inbound_cap_list (ircconn *serv, char *nick, char *extensions,
							  const message_tags_data *tags_data);
void inbound_cap_del (server *serv, char *nick, char *extensions,
void inbound_cap_del (ircconn *serv, char *nick, char *extensions,
							  const message_tags_data *tags_data);
void inbound_sasl_authenticate (server *serv, char *data);
void inbound_sasl_error (server *serv);
void inbound_sasl_authenticate (ircconn *serv, char *data);
void inbound_sasl_error (ircconn *serv);
void do_dns (session *sess, char *nick, char *host,
				 const message_tags_data *tags_data);
gboolean alert_match_word (char *word, char *masks);

M src/common/modes.c => src/common/modes.c +16 -16
@@ 36,23 36,23 @@

typedef struct
{
	server *serv;
	ircconn *serv;
	char *op;
	char *deop;
	char *voice;
	char *devoice;
} mode_run;

static int is_prefix_char (server * serv, char c);
static int is_prefix_char (ircconn * serv, char c);
static void record_chan_mode (session *sess, char sign, char mode, char *arg);
static char *mode_cat (char *str, char *addition);
static void handle_single_mode (mode_run *mr, char sign, char mode, char *nick,
										  char *chan, char *arg, int quiet, int is_324,
										  const message_tags_data *tags_data);
static int mode_has_arg (server *serv, char sign, char mode);
static int mode_has_arg (ircconn *serv, char sign, char mode);
static void mode_print_grouped (session *sess, char *nick, mode_run *mr,
										  const message_tags_data *tags_data);
static int mode_chanmode_type (server * serv, char mode);
static int mode_chanmode_type (ircconn * serv, char mode);


/* word[] - list of nicks.


@@ 65,7 65,7 @@ send_channel_modes (session *sess, char *tbuf, char *word[], int wpos,
						  int end, char sign, char mode, int modes_per_line)
{
	int usable_modes, orig_len, len, wlen, i, max;
	server *serv = sess->server;
	ircconn *serv = sess->server;

	/* sanity check. IRC RFC says three per line but some servers may support less. */
	if (serv->modes_per_line < 1)


@@ 126,7 126,7 @@ send_channel_modes (session *sess, char *tbuf, char *word[], int wpos,
/* does 'chan' have a valid prefix? e.g. # or & */

int
is_channel (server * serv, char *chan)
is_channel (ircconn * serv, char *chan)
{
	if (strchr (serv->chantypes, chan[0]))
		return 1;


@@ 136,7 136,7 @@ is_channel (server * serv, char *chan)
/* is the given char a valid nick mode char? e.g. @ or + */

static int
is_prefix_char (server * serv, char c)
is_prefix_char (ircconn * serv, char c)
{
	int pos = 0;
	char *np = serv->nick_prefixes;


@@ 162,7 162,7 @@ is_prefix_char (server * serv, char c)
/* returns '@' for ops etc... */

char
get_nick_prefix (server * serv, unsigned int access)
get_nick_prefix (ircconn * serv, unsigned int access)
{
	int pos;
	char c;


@@ 185,7 185,7 @@ get_nick_prefix (server * serv, unsigned int access)
	+nick would return 001000 in binary */

unsigned int
nick_access (server * serv, char *nick, int *modechars)
nick_access (ircconn * serv, char *nick, int *modechars)
{
	int i;
	unsigned int access = 0;


@@ 217,7 217,7 @@ nick_access (server * serv, char *nick, int *modechars)
	Also puts the nick-prefix-char in 'prefix' */

int
mode_access (server * serv, char mode, char *prefix)
mode_access (ircconn * serv, char mode, char *prefix)
{
	int pos = 0;



@@ 242,7 242,7 @@ record_chan_mode (session *sess, char sign, char mode, char *arg)
	/* Somebody needed to acutally update sess->current_modes, needed to
		play nice with bouncers, and less mode calls. Also keeps modes up
		to date for scripts */
	server *serv = sess->server;
	ircconn *serv = sess->server;
	GString *current = g_string_new(sess->current_modes);
	gint mode_pos = -1;
	gchar *current_char = current->str;


@@ 395,7 395,7 @@ handle_single_mode (mode_run *mr, char sign, char mode, char *nick,
						  const message_tags_data *tags_data)
{
	session *sess;
	server *serv = mr->serv;
	ircconn *serv = mr->serv;
	char outbuf[4];
	char *cm = serv->chanmodes;
	gboolean supportsq = FALSE;


@@ 559,7 559,7 @@ handle_single_mode (mode_run *mr, char sign, char mode, char *nick,
/* does this mode have an arg? like +b +l +o */

static int
mode_has_arg (server * serv, char sign, char mode)
mode_has_arg (ircconn * serv, char sign, char mode)
{
	int type;



@@ 586,7 586,7 @@ mode_has_arg (server * serv, char sign, char mode)

/* what type of chanmode is it? -1 for not in chanmode */
static int
mode_chanmode_type (server * serv, char mode)
mode_chanmode_type (ircconn * serv, char mode)
{
	/* see what numeric 005 CHANMODES=xxx said */
	char *cm = serv->chanmodes;


@@ 649,7 649,7 @@ mode_print_grouped (session *sess, char *nick, mode_run *mr,
/* handle a MODE or numeric 324 from server */

void
handle_mode (server * serv, char *word[], char *word_eol[],
handle_mode (ircconn * serv, char *word[], char *word_eol[],
		char *nick, int numeric_324, const message_tags_data *tags_data)
{
	session *sess;


@@ 825,7 825,7 @@ parse_005_token (const char *token, char **name, char **value, gboolean *adding)
/* handle the 005 numeric */

void
inbound_005 (server * serv, char *word[], const message_tags_data *tags_data)
inbound_005 (ircconn * serv, char *word[], const message_tags_data *tags_data)
{
	int w;
	char *pre;

M src/common/modes.h => src/common/modes.h +6 -6
@@ 22,12 22,12 @@
#ifndef HEXCHAT_MODES_H
#define HEXCHAT_MODES_H

int is_channel (server *serv, char *chan);
char get_nick_prefix (server *serv, unsigned int access);
unsigned int nick_access (server *serv, char *nick, int *modechars);
int mode_access (server *serv, char mode, char *prefix);
void inbound_005 (server *serv, char *word[], const message_tags_data *tags_data);
void handle_mode (server *serv, char *word[], char *word_eol[], char *nick,
int is_channel (ircconn *serv, char *chan);
char get_nick_prefix (ircconn *serv, unsigned int access);
unsigned int nick_access (ircconn *serv, char *nick, int *modechars);
int mode_access (ircconn *serv, char mode, char *prefix);
void inbound_005 (ircconn *serv, char *word[], const message_tags_data *tags_data);
void handle_mode (ircconn *serv, char *word[], char *word_eol[], char *nick,
						int numeric_324, const message_tags_data *tags_data);
void send_channel_modes (session *sess, char *tbuf, char *word[], int start, int end, char sign, char mode, int modes_per_line);


M src/common/notify.c => src/common/notify.c +22 -22
@@ 66,7 66,7 @@ despacify_dup (char *str)
static int
notify_netcmp (char *str, void *serv)
{
	char *net = despacify_dup (ircserver_get_network (serv, TRUE));
	char *net = despacify_dup (ircconn_get_network (serv, TRUE));

	if (rfc_casecmp (str, net) == 0)
	{


@@ 81,7 81,7 @@ notify_netcmp (char *str, void *serv)
/* monitor this nick on this particular network? */

static gboolean
notify_do_network (struct notify *notify, server *serv)
notify_do_network (struct notify *notify, ircconn *serv)
{
	if (!notify->networks)	/* ALL networks for this nick */
		return TRUE;


@@ 93,7 93,7 @@ notify_do_network (struct notify *notify, server *serv)
}

struct notify_per_server *
notify_find_server_entry (struct notify *notify, struct server *serv)
notify_find_server_entry (struct notify *notify, struct ircconn *serv)
{
	GSList *list = notify->server_list;
	struct notify_per_server *servnot;


@@ 178,7 178,7 @@ notify_load (void)
}

static struct notify_per_server *
notify_find (server *serv, char *nick)
notify_find (ircconn *serv, char *nick)
{
	GSList *list = notify_list;
	struct notify_per_server *servnot;


@@ 205,7 205,7 @@ notify_find (server *serv, char *nick)
}

static void
notify_announce_offline (server * serv, struct notify_per_server *servnot,
notify_announce_offline (ircconn * serv, struct notify_per_server *servnot,
								 char *nick, int quiet, 
								 const message_tags_data *tags_data)
{


@@ 217,13 217,13 @@ notify_announce_offline (server * serv, struct notify_per_server *servnot,
	servnot->lastoff = time (0);
	if (!quiet)
		EMIT_SIGNAL_TAGS (XP_TE_NOTIFYOFFLINE, sess, nick, serv->servername,
				  ircserver_get_network (serv, TRUE), NULL, 0, tags_data);
				  ircconn_get_network (serv, TRUE), NULL, 0, tags_data);
	fe_notify_update (nick);
	fe_notify_update (0);
}

static void
notify_announce_online (server * serv, struct notify_per_server *servnot,
notify_announce_online (ircconn * serv, struct notify_per_server *servnot,
								char *nick, const message_tags_data *tags_data)
{
	session *sess;


@@ 237,7 237,7 @@ notify_announce_online (server * serv, struct notify_per_server *servnot,
	servnot->ison = TRUE;
	servnot->laston = time (0);
	EMIT_SIGNAL_TAGS (XP_TE_NOTIFYONLINE, sess, nick, serv->servername,
			  ircserver_get_network (serv, TRUE), NULL, 0, tags_data);
			  ircconn_get_network (serv, TRUE), NULL, 0, tags_data);
	fe_notify_update (nick);
	fe_notify_update (0);



@@ 255,7 255,7 @@ notify_announce_online (server * serv, struct notify_per_server *servnot,
/* handles numeric 601 */

void
notify_set_offline (server * serv, char *nick, int quiet,
notify_set_offline (ircconn * serv, char *nick, int quiet,
						  const message_tags_data *tags_data)
{
	struct notify_per_server *servnot;


@@ 270,7 270,7 @@ notify_set_offline (server * serv, char *nick, int quiet,
/* handles numeric 604 and 600 */

void
notify_set_online (server * serv, char *nick,
notify_set_online (ircconn * serv, char *nick,
						 const message_tags_data *tags_data)
{
	struct notify_per_server *servnot;


@@ 285,7 285,7 @@ notify_set_online (server * serv, char *nick,
/* monitor can send lists for numeric 730/731 */

void
notify_set_offline_list (server * serv, char *users, int quiet,
notify_set_offline_list (ircconn * serv, char *users, int quiet,
						  const message_tags_data *tags_data)
{
	struct notify_per_server *servnot;


@@ 310,7 310,7 @@ notify_set_offline_list (server * serv, char *users, int quiet,
}

void
notify_set_online_list (server * serv, char *users,
notify_set_online_list (ircconn * serv, char *users,
						 const message_tags_data *tags_data)
{
	struct notify_per_server *servnot;


@@ 335,7 335,7 @@ notify_set_online_list (server * serv, char *users,
}

static void
notify_watch (server * serv, char *nick, int add)
notify_watch (ircconn * serv, char *nick, int add)
{
	char tbuf[256];
	char addchar = '+';


@@ 356,7 356,7 @@ notify_watch (server * serv, char *nick, int add)
static void
notify_watch_all (struct notify *notify, int add)
{
	server *serv;
	ircconn *serv;
	GSList *list = serv_list;
	while (list)
	{


@@ 368,7 368,7 @@ notify_watch_all (struct notify *notify, int add)
}

static void
notify_flush_watches (server * serv, GSList *from, GSList *end)
notify_flush_watches (ircconn * serv, GSList *from, GSList *end)
{
	char tbuf[512];
	GSList *list;


@@ 393,7 393,7 @@ notify_flush_watches (server * serv, GSList *from, GSList *end)
/* called when logging in. e.g. when End of motd. */

void
notify_send_watches (server * serv)
notify_send_watches (ircconn * serv)
{
	struct notify *notify;
	const int format_len = serv->supports_monitor ? 1 : 2; /* just , for monitor or + and space for watch */


@@ 445,7 445,7 @@ notify_send_watches (server * serv)
/* called when receiving a ISON 303 - should this func go? */

void
notify_markonline (server *serv, char *word[], const message_tags_data *tags_data)
notify_markonline (ircconn *serv, char *word[], const message_tags_data *tags_data)
{
	struct notify *notify;
	struct notify_per_server *servnot;


@@ 492,7 492,7 @@ notify_markonline (server *serv, char *word[], const message_tags_data *tags_dat
/* yuck! Old routine for ISON notify */

static void
notify_checklist_for_server (server *serv)
notify_checklist_for_server (ircconn *serv)
{
	char outbuf[512];
	struct notify *notify;


@@ 527,7 527,7 @@ notify_checklist_for_server (server *serv)
int
notify_checklist (void)	/* check ISON list */
{
	struct server *serv;
	struct ircconn *serv;
	GSList *list = serv_list;

	while (list)


@@ 624,7 624,7 @@ notify_adduser (char *name, char *networks)
}

gboolean
notify_is_in_list (server *serv, char *name)
notify_is_in_list (ircconn *serv, char *name)
{
	struct notify *notify;
	GSList *list = notify_list;


@@ 669,7 669,7 @@ notify_cleanup ()
	GSList *nslist, *srvlist;
	struct notify *notify;
	struct notify_per_server *servnot;
	struct server *serv;
	struct ircconn *serv;
	int valid;

	while (list)


@@ 687,7 687,7 @@ notify_cleanup ()
			srvlist = serv_list;
			while (srvlist)
			{
				serv = (struct server *) srvlist->data;
				serv = (struct ircconn *) srvlist->data;
				if (servnot->server == serv)
				{
					valid = serv->connected;	/* Only valid if server is too */

M src/common/notify.h => src/common/notify.h +9 -9
@@ 31,7 31,7 @@ struct notify

struct notify_per_server
{
	struct server *server;
	struct ircconn *server;
	struct notify *notify;
	time_t laston;
	time_t lastseen;


@@ 43,16 43,16 @@ extern GSList *notify_list;
extern int notify_tag;

/* the WATCH stuff */
void notify_set_online (server * serv, char *nick,
void notify_set_online (ircconn * serv, char *nick,
								const message_tags_data *tags_data);
void notify_set_offline (server * serv, char *nick, int quiet,
void notify_set_offline (ircconn * serv, char *nick, int quiet,
								 const message_tags_data *tags_data);
/* the MONITOR stuff */
void notify_set_online_list (server * serv, char *users,
void notify_set_online_list (ircconn * serv, char *users,
								const message_tags_data *tags_data);
void notify_set_offline_list (server * serv, char *users, int quiet,
void notify_set_offline_list (ircconn * serv, char *users, int quiet,
								 const message_tags_data *tags_data);
void notify_send_watches (server * serv);
void notify_send_watches (ircconn * serv);

/* the general stuff */
void notify_adduser (char *name, char *networks);


@@ 61,12 61,12 @@ void notify_cleanup (void);
void notify_load (void);
void notify_save (void);
void notify_showlist (session *sess, const message_tags_data *tags_data);
gboolean notify_is_in_list (server *serv, char *name);
gboolean notify_is_in_list (ircconn *serv, char *name);
int notify_isnotify (session *sess, char *name);
struct notify_per_server *notify_find_server_entry (struct notify *notify, struct server *serv);
struct notify_per_server *notify_find_server_entry (struct notify *notify, struct ircconn *serv);

/* the old ISON stuff - remove me? */
void notify_markonline (server *serv, char *word[], 
void notify_markonline (ircconn *serv, char *word[], 
								const message_tags_data *tags_data);
int notify_checklist (void);


M src/common/outbound.c => src/common/outbound.c +20 -20
@@ 76,7 76,7 @@ notc_msg (struct session *sess)
}

void
server_sendpart (server * serv, char *channel, char *reason)
server_sendpart (ircconn * serv, char *channel, char *reason)
{
	if (!reason)
	{


@@ 255,7 255,7 @@ static int
cmd_allchannelslocal (session *sess, char *tbuf, char *word[], char *word_eol[])
{
	GSList *list = sess_list;
	server *serv = sess->server;
	ircconn *serv = sess->server;

	if (!*word_eol[2])
		return FALSE;


@@ 279,7 279,7 @@ cmd_allservers (struct session *sess, char *tbuf, char *word[],
					 char *word_eol[])
{
	GSList *list;
	server *serv;
	ircconn *serv;

	if (!*word_eol[2])
		return FALSE;


@@ 471,7 471,7 @@ static void
ban (session * sess, char *tbuf, char *mask, char *bantypestr, int deop)
{
	char *banmask = create_mask (sess, mask, deop ? "-o+b" : "+b", bantypestr, deop);
	server *serv = sess->server;
	ircconn *serv = sess->server;
	
	if (banmask)
	{


@@ 530,7 530,7 @@ cmd_chanopt (struct session *sess, char *tbuf, char *word[], char *word_eol[])
static int
cmd_charset (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
	server *serv = sess->server;
	ircconn *serv = sess->server;
	int offset = 0;

	if (strcmp (word[2], "-quiet") == 0)


@@ 825,7 825,7 @@ static int
cmd_debug (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
	struct session *s;
	struct server *v;
	struct ircconn *v;
	GSList *list = sess_list;

	PrintText (sess, "Session   T Channel    WaitChan  WillChan  Server\n");


@@ 843,7 843,7 @@ cmd_debug (struct session *sess, char *tbuf, char *word[], char *word_eol[])
	PrintText (sess, "Server    Sock  Name\n");
	while (list)
	{
		v = (struct server *) list->data;
		v = (struct ircconn *) list->data;
		sprintf (tbuf, "%p %-5d %s\n",
					v, v->sok, v->servername);
		PrintText (sess, tbuf);


@@ 1913,7 1913,7 @@ cmd_flushq (struct session *sess, char *tbuf, char *word[], char *word_eol[])
static int
cmd_quit (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
	server *serv = sess->server;
	ircconn *serv = sess->server;

	if (*word_eol[2])
		serv->quitreason = word_eol[2];


@@ 1927,7 1927,7 @@ static int
cmd_gate (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
	char *server_name = word[2];
	server *serv = sess->server;
	ircconn *serv = sess->server;
	if (*server_name)
	{
		char *port = word[3];


@@ 3037,7 3037,7 @@ cmd_ping (struct session *sess, char *tbuf, char *word[], char *word_eol[])
}

session *
open_query (server *serv, char *nick, gboolean focus_existing)
open_query (ircconn *serv, char *nick, gboolean focus_existing)
{
	session *sess;



@@ 3110,7 3110,7 @@ static int
cmd_quiet (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
	char *quietmask;
	server *serv = sess->server;
	ircconn *serv = sess->server;

	if (strchr (serv->chanmodes, 'q') == NULL)
	{


@@ 3174,7 3174,7 @@ cmd_reconnect (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
	int tmp = prefs.hex_net_reconnect_delay;
	GSList *list;
	server *serv = sess->server;
	ircconn *serv = sess->server;

	prefs.hex_net_reconnect_delay = 0;



@@ 3409,7 3409,7 @@ cmd_server (struct session *sess, char *tbuf, char *word[], char *word_eol[])
	int use_ssl = FALSE;
#endif
	int is_url = TRUE;
	server *serv = sess->server;
	ircconn *serv = sess->server;
	ircnet *net = NULL;

#ifdef USE_OPENSSL


@@ 3663,11 3663,11 @@ cmd_reload (struct session *sess, char *tbuf, char *word[], char *word_eol[])
	return FALSE;
}

static server *
static ircconn *
find_server_from_hostname (char *hostname)
{
	GSList *list = serv_list;
	server *serv;
	ircconn *serv;

	while (list)
	{


@@ 3680,11 3680,11 @@ find_server_from_hostname (char *hostname)
	return NULL;
}

static server *
static ircconn *
find_server_from_net (void *net)
{
	GSList *list = serv_list;
	server *serv;
	ircconn *serv;

	while (list)
	{


@@ 3698,7 3698,7 @@ find_server_from_net (void *net)
}

static void
url_join_only (server *serv, char *tbuf, char *channel, char *key)
url_join_only (ircconn *serv, char *tbuf, char *channel, char *key)
{
	/* already connected, JOIN only. */
	if (channel == NULL)


@@ 3724,7 3724,7 @@ cmd_url (struct session *sess, char *tbuf, char *word[], char *word_eol[])
		char *url = g_strdup (word[2]);
		int use_ssl = FALSE;
		void *net;
		server *serv;
		ircconn *serv;

		if (parse_irc_url (url, &server_name, &port, &channel, &key, &use_ssl))
		{


@@ 4509,7 4509,7 @@ user_command (session * sess, char *tbuf, char *cmd, char *word[],
				  char *word_eol[])
{
	if (!auto_insert (tbuf, 2048, cmd, word, word_eol, "", sess->channel, "",
							ircserver_get_network (sess->server, TRUE), "",
							ircconn_get_network (sess->server, TRUE), "",
							sess->server->nick, "", ""))
	{
		PrintText (sess, _("Bad arguments for user command.\n"));

M src/common/outbound.h => src/common/outbound.h +2 -2
@@ 33,9 33,9 @@ void process_data_init (char *buf, char *cmd, char *word[], char *word_eol[], gb
void handle_multiline (session *sess, char *cmd, int history, int nocommand);
void check_special_chars (char *cmd, int do_ascii);
void notc_msg (session *sess);
void server_sendpart (server * serv, char *channel, char *reason);
void server_sendpart (ircconn * serv, char *channel, char *reason);
int menu_streq (const char *s1, const char *s2, int def);
session *open_query (server *serv, char *nick, gboolean focus_existing);
session *open_query (ircconn *serv, char *nick, gboolean focus_existing);
gboolean load_perform_file (session *sess, char *file);

#endif

M src/common/plugin.c => src/common/plugin.c +5 -5
@@ 905,10 905,10 @@ plugin_show_help (session *sess, char *cmd)
}

session *
plugin_find_context (const char *servname, const char *channel, server *current_server)
plugin_find_context (const char *servname, const char *channel, ircconn *current_server)
{
	GSList *slist, *clist, *sessions = NULL;
	server *serv;
	ircconn *serv;
	session *sess;
	char *netname;



@@ 919,7 919,7 @@ plugin_find_context (const char *servname, const char *channel, server *current_
	while (slist)
	{
		serv = slist->data;
		netname = ircserver_get_network (serv, TRUE);
		netname = ircconn_get_network (serv, TRUE);

		if (servname == NULL ||
			 rfc_casecmp (servname, serv->servername) == 0 ||


@@ 1208,7 1208,7 @@ hexchat_get_info (hexchat_plugin *ph, const char *id)
		return sess->current_modes;

	case 0x6de15a2e:	/* network */
		return ircserver_get_network (sess->server, FALSE);
		return ircconn_get_network (sess->server, FALSE);

	case 0x339763: /* nick */
		return sess->server->nick;


@@ 1484,7 1484,7 @@ hexchat_list_str (hexchat_plugin *ph, hexchat_list *xlist, const char *name)
		case 0x38b735af: /* context */
			return data;	/* this is a session * */
		case 0x6de15a2e: /* network */
			return ircserver_get_network (((session *)data)->server, FALSE);
			return ircconn_get_network (((session *)data)->server, FALSE);
		case 0x8455e723: /* nickprefixes */
			return ((session *)data)->server->nick_prefixes;
		case 0x829689ad: /* nickmodes */

M src/common/plugin.h => src/common/plugin.h +1 -1
@@ 179,7 179,7 @@ int plugin_emit_keypress (session *sess, unsigned int state, unsigned int keyval
GList* plugin_command_list(GList *tmp_list);
int plugin_show_help (session *sess, char *cmd);
void plugin_command_foreach (session *sess, void *userdata, void (*cb) (session *sess, void *userdata, char *name, char *usage));
session *plugin_find_context (const char *servname, const char *channel, server *current_server);
session *plugin_find_context (const char *servname, const char *channel, ircconn *current_server);

/* On macOS, G_MODULE_SUFFIX says "so" but meson uses "dylib"
 * https://github.com/mesonbuild/meson/issues/1160 */

M src/common/proto-irc.c => src/common/proto-irc.c +55 -55
@@ 51,7 51,7 @@
#include "batch.h"

static void
irc_login (server *serv, char *user, char *realname)
irc_login (ircconn *serv, char *user, char *realname)
{
	tcp_sendf (serv, "CAP LS 302\r\n");		/* start with CAP LS as Charybdis sasl.txt suggests */
	serv->sent_capend = FALSE;	/* track if we have finished */


@@ 70,7 70,7 @@ irc_login (server *serv, char *user, char *realname)
}

static void
irc_nickserv (server *serv, char *cmd, char *arg1, char *arg2, char *arg3)
irc_nickserv (ircconn *serv, char *cmd, char *arg1, char *arg2, char *arg3)
{
	/* are all ircd authors idiots? */
	switch (serv->loginmethod)


@@ 100,7 100,7 @@ irc_nickserv (server *serv, char *cmd, char *arg1, char *arg2, char *arg3)
}

static void
irc_ns_identify (server *serv, char *pass)
irc_ns_identify (ircconn *serv, char *pass)
{
	switch (serv->loginmethod)
	{


@@ 118,7 118,7 @@ irc_ns_identify (server *serv, char *pass)
}

static void
irc_ns_ghost (server *serv, char *usname, char *pass)
irc_ns_ghost (ircconn *serv, char *usname, char *pass)
{
	if (serv->loginmethod != LOGIN_CHALLENGEAUTH)
	{


@@ 127,7 127,7 @@ irc_ns_ghost (server *serv, char *usname, char *pass)
}

static void
irc_join (server *serv, char *channel, char *key)
irc_join (ircconn *serv, char *channel, char *key)
{
	if (key[0])
		tcp_sendf (serv, "JOIN %s %s\r\n", channel, key);


@@ 136,7 136,7 @@ irc_join (server *serv, char *channel, char *key)
}

static void
irc_join_list_flush (server *serv, GString *channels, GString *keys, int send_keys)
irc_join_list_flush (ircconn *serv, GString *channels, GString *keys, int send_keys)
{
	char *chanstr;
	char *keystr;


@@ 162,7 162,7 @@ irc_join_list_flush (server *serv, GString *channels, GString *keys, int send_ke
 */

static void
irc_join_list (server *serv, GSList *favorites)
irc_join_list (ircconn *serv, GSList *favorites)
{
	int first_item = 1;										/* determine whether we add commas or not */
	int send_keys = 0;										/* if none of our channels have keys, we can omit the 'x' fillers altogether */


@@ 230,7 230,7 @@ irc_join_list (server *serv, GSList *favorites)
}

static void
irc_part (server *serv, char *channel, char *reason)
irc_part (ircconn *serv, char *channel, char *reason)
{
	if (reason[0])
		tcp_sendf (serv, "PART %s :%s\r\n", channel, reason);


@@ 239,7 239,7 @@ irc_part (server *serv, char *channel, char *reason)
}

static void
irc_quit (server *serv)
irc_quit (ircconn *serv)
{
	char *reason, *colrea = NULL;



@@ 264,13 264,13 @@ irc_quit (server *serv)
}

static void
irc_set_back (server *serv)
irc_set_back (ircconn *serv)
{
	tcp_send_len (serv, "AWAY\r\n", 6);
}

static void
irc_set_away (server *serv, char *reason)
irc_set_away (ircconn *serv, char *reason)
{
	if (reason)
	{


@@ 286,25 286,25 @@ irc_set_away (server *serv, char *reason)
}

static void
irc_ctcp (server *serv, char *to, char *msg)
irc_ctcp (ircconn *serv, char *to, char *msg)
{
	tcp_sendf (serv, "PRIVMSG %s :\001%s\001\r\n", to, msg);
}

static void
irc_nctcp (server *serv, char *to, char *msg)
irc_nctcp (ircconn *serv, char *to, char *msg)
{
	tcp_sendf (serv, "NOTICE %s :\001%s\001\r\n", to, msg);
}

static void
irc_cycle (server *serv, char *channel, char *key)
irc_cycle (ircconn *serv, char *channel, char *key)
{
	tcp_sendf (serv, "PART %s\r\nJOIN %s %s\r\n", channel, channel, key);
}

static void
irc_kick (server *serv, char *channel, char *nick, char *reason)
irc_kick (ircconn *serv, char *channel, char *nick, char *reason)
{
	if (reason[0])
		tcp_sendf (serv, "KICK %s %s :%s\r\n", channel, nick, reason);


@@ 313,13 313,13 @@ irc_kick (server *serv, char *channel, char *nick, char *reason)
}

static void
irc_invite (server *serv, char *channel, char *nick)
irc_invite (ircconn *serv, char *channel, char *nick)
{
	tcp_sendf (serv, "INVITE %s %s\r\n", nick, channel);
}

static void
irc_mode (server *serv, char *target, char *mode)
irc_mode (ircconn *serv, char *target, char *mode)
{
	tcp_sendf (serv, "MODE %s %s\r\n", target, mode);
}


@@ 327,7 327,7 @@ irc_mode (server *serv, char *target, char *mode)
/* find channel info when joined */

static void
irc_join_info (server *serv, char *channel)
irc_join_info (ircconn *serv, char *channel)
{
	tcp_sendf (serv, "MODE %s\r\n", channel);
}


@@ 335,7 335,7 @@ irc_join_info (server *serv, char *channel)
/* initiate userlist retreival */

static void
irc_user_list (server *serv, char *channel)
irc_user_list (ircconn *serv, char *channel)
{
	if (serv->have_whox)
		tcp_sendf (serv, "WHO %s %%chtsunfra,152\r\n", channel);


@@ 346,13 346,13 @@ irc_user_list (server *serv, char *channel)
/* userhost */

static void
irc_userhost (server *serv, char *nick)
irc_userhost (ircconn *serv, char *nick)
{
	tcp_sendf (serv, "USERHOST %s\r\n", nick);
}

static void
irc_away_status (server *serv, char *channel)
irc_away_status (ircconn *serv, char *channel)
{
	if (serv->have_whox)
		tcp_sendf (serv, "WHO %s %%chtsunfra,152\r\n", channel);


@@ 361,7 361,7 @@ irc_away_status (server *serv, char *channel)
}

/*static void
irc_get_ip (server *serv, char *nick)
irc_get_ip (ircconn *serv, char *nick)
{
	tcp_sendf (serv, "WHO %s\r\n", nick);
}*/


@@ 372,31 372,31 @@ irc_get_ip (server *serv, char *nick)
 *     Parameters: [<server>] <nickmask>[,<nickmask>[,...]]
 */
static void
irc_user_whois (server *serv, char *nicks)
irc_user_whois (ircconn *serv, char *nicks)
{
	tcp_sendf (serv, "WHOIS %s\r\n", nicks);
}

static void
irc_message (server *serv, char *channel, char *text)
irc_message (ircconn *serv, char *channel, char *text)
{
	tcp_sendf (serv, "PRIVMSG %s :%s\r\n", channel, text);
}

static void
irc_action (server *serv, char *channel, char *act)
irc_action (ircconn *serv, char *channel, char *act)
{
	tcp_sendf (serv, "PRIVMSG %s :\001ACTION %s\001\r\n", channel, act);
}

static void
irc_notice (server *serv, char *channel, char *text)
irc_notice (ircconn *serv, char *channel, char *text)
{
	tcp_sendf (serv, "NOTICE %s :%s\r\n", channel, text);
}

static void
irc_topic (server *serv, char *channel, char *topic)
irc_topic (ircconn *serv, char *channel, char *topic)
{
	if (!topic)
		tcp_sendf (serv, "TOPIC %s :\r\n", channel);


@@ 407,7 407,7 @@ irc_topic (server *serv, char *channel, char *topic)
}

static void
irc_list_channels (server *serv, char *arg, int min_users)
irc_list_channels (ircconn *serv, char *arg, int min_users)
{
	if (arg[0])
	{


@@ 422,19 422,19 @@ irc_list_channels (server *serv, char *arg, int min_users)
}

static void
irc_names (server *serv, char *channel)
irc_names (ircconn *serv, char *channel)
{
	tcp_sendf (serv, "NAMES %s\r\n", channel);
}

static void
irc_change_nick (server *serv, char *new_nick)
irc_change_nick (ircconn *serv, char *new_nick)
{
	tcp_sendf (serv, "NICK %s\r\n", new_nick);
}

static void
irc_ping (server *serv, char *to, char *timestring)
irc_ping (ircconn *serv, char *to, char *timestring)
{
	if (*to)
		tcp_sendf (serv, "PRIVMSG %s :\001PING %s\001\r\n", to, timestring);


@@ 443,7 443,7 @@ irc_ping (server *serv, char *to, char *timestring)
}

static int
irc_raw (server *serv, char *raw)
irc_raw (ircconn *serv, char *raw)
{
	int len;
	char tbuf[4096];


@@ 497,7 497,7 @@ process_numeric (session * sess, int n,
					  char *word[], char *word_eol[], char *text,
					  const message_tags_data *tags_data)
{
	server *serv = sess->server;
	ircconn *serv = sess->server;
	/* show whois is the server tab */
	session *whois_sess = serv->server_session;
	


@@ 1015,7 1015,7 @@ static void
process_named_msg (session *sess, char *type, char *word[], char *word_eol[],
		   const message_tags_data *tags_data)
{
	server *serv = sess->server;
	ircconn *serv = sess->server;
	char *account;
	char ip[128], nick[NICKLEN];
	char *text, *ex;


@@ 1538,7 1538,7 @@ handle_message_tag_time (const char *time, message_tags_data *tags_data)
 * See http://ircv3.atheme.org/specification/message-tags-3.2 
 */
static void
handle_message_tags (server *serv, const char *tags_str,
handle_message_tags (ircconn *serv, const char *tags_str,
		     message_tags_data *tags_data)
{
	char **tags;


@@ 1581,7 1581,7 @@ handle_message_tags (server *serv, const char *tags_str,

/* irc_inline() - 1 single line received from serv */
static void
irc_inline (server *serv, char *buf, int len)
irc_inline (ircconn *serv, char *buf, int len)
{
	session *sess, *tmp;
	char *type, *text;


@@ 1686,7 1686,7 @@ message_tags_data_free (message_tags_data *tags_data)


char *
ircserver_get_network (server *serv, gboolean fallback)
ircconn_get_network (ircconn *serv, gboolean fallback)
{
	/* check the network list */
	if (serv->network)


@@ 1703,7 1703,7 @@ ircserver_get_network (server *serv, gboolean fallback)
}

void
ircserver_set_name (server *serv, char *name)
ircconn_set_name (ircconn *serv, char *name)
{
	GSList *list = sess_list;
	session *sess;


@@ 1740,7 1740,7 @@ ircserver_set_name (server *serv, char *name)


static void
irc_connected (server *serv)
irc_connected (ircconn *serv)
{
	{ /* FIXME: UGLY HACK!! should be handled with a hook or something. */
		struct sockaddr_storage addr;


@@ 1791,13 1791,13 @@ irc_connected (server *serv)
			     NULL, NULL, 0);
	}
	
	ircserver_set_name (serv, serv->servername);
	ircconn_set_name (serv, serv->servername);
	
	fe_server_event (serv, FE_SE_CONNECT, 0);
}

static void
irc_disconnected (server *serv, int shutup, int err)
irc_disconnected (ircconn *serv, int shutup, int err)
{
	GSList *list;
	session *sess;


@@ 1822,20 1822,20 @@ irc_disconnected (server *serv, int shutup, int err)
}

static void
irc_ssl_message (server *serv, const char *msg)
irc_ssl_message (ircconn *serv, const char *msg)
{
	EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, (char *)msg, NULL, NULL, NULL, 0);
}

static void
irc_serverlookup (server *serv, const char *msg)
irc_serverlookup (ircconn *serv, const char *msg)
{
	fe_progressbar_start (serv->server_session);
	EMIT_SIGNAL (XP_TE_SERVERLOOKUP, serv->server_session, (char *)msg, NULL, NULL, NULL, 0);
}

static int
timeout_auto_reconnect (server *serv)
timeout_auto_reconnect (ircconn *serv)
{
	if (is_server (serv))  /* make sure it hasnt been closed during the delay */
	{


@@ 1850,7 1850,7 @@ timeout_auto_reconnect (server *serv)
}

static void
auto_reconnect (server *serv, int send_quit, int err)
auto_reconnect (ircconn *serv, int send_quit, int err)
{
	session *s;
	int del;


@@ 1900,7 1900,7 @@ auto_reconnect (server *serv, int send_quit, int err)
}

static void
irc_connfail (server *serv, const char *msg)
irc_connfail (ircconn *serv, const char *msg)
{
	EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, (char *)msg, NULL, NULL, NULL, 0);
	


@@ 1910,13 1910,13 @@ irc_connfail (server *serv, const char *msg)
}

static void
irc_connstop (server *serv, const char *msg)
irc_connstop (ircconn *serv, const char *msg)
{
	EMIT_SIGNAL (XP_TE_STOPCONNECT, serv->server_session, (char *)msg, NULL, NULL, NULL, 0);
}

static void
irc_connecting (server *serv, const char *host, const char *ip, const char *port)
irc_connecting (ircconn *serv, const char *host, const char *ip, const char *port)
{

	EMIT_SIGNAL (XP_TE_CONNECT, serv->server_session,


@@ 1927,7 1927,7 @@ irc_connecting (server *serv, const char *host, const char *ip, const char *port
}

static void
irc_unknhost (server *serv)
irc_unknhost (ircconn *serv)
{
	EMIT_SIGNAL (XP_TE_UKNHOST, serv->server_session, NULL, NULL, NULL, NULL, 0);



@@ 1937,7 1937,7 @@ irc_unknhost (server *serv)
}

static void
irc_readerr (server *serv, int error)
irc_readerr (ircconn *serv, int error)
{
	if (!serv->end_of_motd)
	{


@@ 1957,13 1957,13 @@ irc_readerr (server *serv, int error)
}

static void
irc_serverlog (server *serv, const char *msg)
irc_serverlog (ircconn *serv, const char *msg)
{
	PrintText (serv->server_session, (char *)msg);
}

static void
irc_cleanup (server *serv)
irc_cleanup (ircconn *serv)
{
	if (serv->joindelay_tag)
	{


@@ 1976,7 1976,7 @@ irc_cleanup (server *serv)
}

static void
irc_stopconnect (server *serv)
irc_stopconnect (ircconn *serv)
{
	if (serv->joindelay_tag)
	{


@@ 1989,7 1989,7 @@ irc_stopconnect (server *serv)
}

void
proto_fill_her_up (server *serv)
proto_fill_her_up (ircconn *serv)
{
	serv->auto_reconnect = auto_reconnect;



@@ 2009,7 2009,7 @@ proto_fill_her_up (server *serv)
	serv->p_rawlog = fe_add_rawlog;
	serv->p_throttle_update = fe_set_throttle;

	serv->p_get_network = ircserver_get_network;
	serv->p_get_network = ircconn_get_network;

	serv->p_quit = irc_quit;
	serv->p_inline = irc_inline;

M src/common/proto-irc.h => src/common/proto-irc.h +1 -1
@@ 49,6 49,6 @@ typedef struct

void message_tags_data_free (message_tags_data *tags_data);

void proto_fill_her_up (server *serv);
void proto_fill_her_up (ircconn *serv);

#endif

M src/common/server.c => src/common/server.c +29 -29
@@ 63,13 63,13 @@

#ifdef USE_OPENSSL
/* local variables */
static struct server *g_serv = NULL;
static struct ircconn *g_serv = NULL;
#endif

static GSList *away_list = NULL;
GSList *serv_list = NULL;

static int  server_cleanup (server * serv);
static int  server_cleanup (ircconn * serv);

static void
write_error (char *message, GError **error)


@@ 105,7 105,7 @@ tcp_send_real (void *ssl, int sok, GIConv write_converter, char *buf, int len)
}

static int
server_send_real (server *serv, char *buf, int len)
server_send_real (ircconn *serv, char *buf, int len)
{
	serv->p_rawlog (serv, buf, len, TRUE);



@@ 119,7 119,7 @@ server_send_real (server *serv, char *buf, int len)
   off the client */

static int
tcp_send_queue (server *serv)
tcp_send_queue (ircconn *serv)
{
	char *buf, *p;
	int len, i, pri;


@@ 178,7 178,7 @@ tcp_send_queue (server *serv)
}

int
tcp_send_len (server *serv, char *buf, int len)
tcp_send_len (ircconn *serv, char *buf, int len)
{
	char *dbuf;
	int noqueue = !serv->outbound_queue;


@@ 240,7 240,7 @@ keep_priority:
}

void
tcp_sendf (server *serv, const char *fmt, ...)
tcp_sendf (ircconn *serv, const char *fmt, ...)
{
	va_list args;
	/* keep this buffer in BSS. Converting UTF-8 to ISO-8859-x might make the


@@ 276,7 276,7 @@ close_socket (int sok)
/* handle 1 line of text received from the server */

static void
server_inline (server *serv, char *line, gssize len)
server_inline (ircconn *serv, char *line, gssize len)
{
	gsize len_utf8;
	if (!strcmp (serv->encoding, "UTF-8"))


@@ 295,7 295,7 @@ server_inline (server *serv, char *line, gssize len)
/* read data from socket */

static gboolean
server_read (GIOChannel *source, GIOCondition condition, server *serv)
server_read (GIOChannel *source, GIOCondition condition, ircconn *serv)
{
	int sok = serv->sok;
	int error, i, len;


@@ 355,7 355,7 @@ server_read (GIOChannel *source, GIOCondition condition, server *serv)
}

static void
server_connected (server *serv)
server_connected (ircconn *serv)
{
	prefs.wait_on_exit = TRUE;
	serv->ping_recv = time (0);


@@ 381,7 381,7 @@ server_close_pipe (int *pipefd)	/* see comments below */
#endif

static void
server_stopconnecting (server * serv)
server_stopconnecting (ircconn * serv)
{
	if (serv->iotag)
	{


@@ 462,7 462,7 @@ ssl_cb_verify (int ok, X509_STORE_CTX *ctx)
}

static int
ssl_do_connect (server *serv)
ssl_do_connect (ircconn *serv)
{
	char buf[256]; // ERR_error_string() MUST have this size



@@ 617,7 617,7 @@ conn_fail:
#endif

static void
server_flush_queue (server *serv)
server_flush_queue (ircconn *serv)
{
	list_free (&serv->outbound_queue);
	serv->sendq_len = 0;


@@ 627,7 627,7 @@ server_flush_queue (server *serv)
/* connect() successed */

static void
server_connect_success (server *serv)
server_connect_success (ircconn *serv)
{
#ifdef USE_OPENSSL
#define	SSLDOCONNTMOUT	300


@@ 662,7 662,7 @@ server_connect_success (server *serv)
/* receive info from the child-process about connection progress */

static gboolean
server_read_child (GIOChannel *source, GIOCondition condition, server *serv)
server_read_child (GIOChannel *source, GIOCondition condition, ircconn *serv)
{
	char tbuf[128];
	char outbuf[512];


@@ 751,7 751,7 @@ server_read_child (GIOChannel *source, GIOCondition condition, server *serv)
   disconnect if already connected. */

static int
server_cleanup (server * serv)
server_cleanup (ircconn * serv)
{
	serv->p_cleanup (serv);



@@ 804,7 804,7 @@ server_cleanup (server * serv)
}

int
server_disconnect (server *serv, int sendquit, int err)
server_disconnect (ircconn *serv, int sendquit, int err)
{
	char tbuf[64];
	gboolean shutup = FALSE;


@@ 1161,7 1161,7 @@ traverse_proxy (int proxy_type, int print_fd, int sok, char *ip, int port, netst
/* this is the child process making the connection attempt */

static int
server_child (server * serv)
server_child (ircconn * serv)
{
	netstore *ns_server;
	netstore *ns_proxy = NULL;


@@ 1349,7 1349,7 @@ xit:
}

void
server_connect (server *serv, char *hostname, int port, int no_login)
server_connect (ircconn *serv, char *hostname, int port, int no_login)
{
	int pid, read_des[2];



@@ 1475,7 1475,7 @@ server_connect (server *serv, char *hostname, int port, int no_login)
}

void
server_fill_her_up (server *serv)
server_fill_her_up (ircconn *serv)
{
	serv->cleanup = server_cleanup;
	serv->flush_queue = server_flush_queue;


@@ 1484,7 1484,7 @@ server_fill_her_up (server *serv)
}

void
server_set_encoding (server *serv, char *new_encoding)
server_set_encoding (ircconn *serv, char *new_encoding)
{
	char *space;



@@ 1530,13 1530,13 @@ server_set_encoding (server *serv, char *new_encoding)
	serv->write_converter = g_iconv_open (serv->encoding, "UTF-8");
}

server *
ircconn *
server_new (void)
{
	static int id = 0;
	server *serv;
	ircconn *serv;

	serv = g_new0 (struct server, 1);
	serv = g_new0 (struct ircconn, 1);

	/* use server.c and proto-irc.c functions */
	server_fill_her_up (serv);


@@ 1554,13 1554,13 @@ server_new (void)
}

int
is_server (server *serv)
is_server (ircconn *serv)
{
	return g_slist_find (serv_list, serv) ? 1 : 0;
}

void
server_set_defaults (server *serv)
server_set_defaults (ircconn *serv)
{
	g_free (serv->chantypes);
	g_free (serv->chanmodes);


@@ 1605,7 1605,7 @@ server_set_defaults (server *serv)
}

struct away_msg *
server_away_find_message (server *serv, char *nick)
server_away_find_message (ircconn *serv, char *nick)
{
	struct away_msg *away;
	GSList *list = away_list;


@@ 1620,7 1620,7 @@ server_away_find_message (server *serv, char *nick)
}

static void
server_away_free_messages (server *serv)
server_away_free_messages (ircconn *serv)
{
	GSList *list, *next;
	struct away_msg *away;


@@ 1642,7 1642,7 @@ server_away_free_messages (server *serv)
}

void
server_away_save_message (server *serv, char *nick, char *msg)
server_away_save_message (ircconn *serv, char *nick, char *msg)
{
	struct away_msg *away = server_away_find_message (serv, nick);



@@ 1663,7 1663,7 @@ server_away_save_message (server *serv, char *nick, char *msg)
}

void
server_free (server *serv)
server_free (ircconn *serv)
{
	serv->cleanup (serv);


M src/common/server.h => src/common/server.h +14 -14
@@ 23,24 23,24 @@
extern GSList *serv_list;

/* eventually need to keep the tcp_* functions isolated to server.c */
int tcp_send_len (server *serv, char *buf, int len);
void tcp_sendf (server *serv, const char *fmt, ...) G_GNUC_PRINTF (2, 3);
int tcp_send_len (ircconn *serv, char *buf, int len);
void tcp_sendf (ircconn *serv, const char *fmt, ...) G_GNUC_PRINTF (2, 3);
int tcp_send_real (void *ssl, int sok, GIConv write_converter, char *buf, int len);

server *server_new (void);
int is_server (server *serv);
void server_fill_her_up (server *serv);
void server_set_encoding (server *serv, char *new_encoding);
void server_set_defaults (server *serv);
void server_free (server *serv);
void server_connect (server *serv, char *hostname, int port, int no_login);
int server_disconnect (server *serv, int sendquit, int err);
ircconn *server_new (void);
int is_server (ircconn *serv);
void server_fill_her_up (ircconn *serv);
void server_set_encoding (ircconn *serv, char *new_encoding);
void server_set_defaults (ircconn *serv);
void server_free (ircconn *serv);
void server_connect (ircconn *serv, char *hostname, int port, int no_login);
int server_disconnect (ircconn *serv, int sendquit, int err);

char *ircserver_get_network (server *serv, gboolean fallback);
void ircserver_set_name (server *serv, char *name);
char *ircconn_get_network (ircconn *serv, gboolean fallback);
void ircconn_set_name (ircconn *serv, char *name);

void server_away_save_message (server *serv, char *nick, char *msg);
struct away_msg *server_away_find_message (server *serv, char *nick);
void server_away_save_message (ircconn *serv, char *nick, char *msg);
struct away_msg *server_away_find_message (ircconn *serv, char *nick);

void base64_encode (char *to, char *from, unsigned int len);


M src/common/servlist.c => src/common/servlist.c +5 -5
@@ 354,7 354,7 @@ servlist_connect (session *sess, ircnet *net, gboolean join)
	ircserver *ircserv;
	GSList *list;
	char *port;
	server *serv;
	ircconn *serv;

	if (!sess)
		sess = new_ircwindow (NULL, NULL, SESS_SERVER, TRUE);


@@ 511,7 511,7 @@ servlist_auto_connect (session *sess)
}

static gint
servlist_cycle_cb (server *serv)
servlist_cycle_cb (ircconn *serv)
{
	if (serv->network)
	{


@@ 524,7 524,7 @@ servlist_cycle_cb (server *serv)
}

int
servlist_cycle (server *serv)
servlist_cycle (ircconn *serv)
{
	ircnet *net;
	int max, del;


@@ 847,7 847,7 @@ void
servlist_net_remove (ircnet *net)
{
	GSList *list;
	server *serv;
	ircconn *serv;

	servlist_server_remove_all (net);
	network_list = g_slist_remove (network_list, net);


@@ 1226,7 1226,7 @@ joinlist_find_chan (favchannel *curr_item, const char *channel)
}

gboolean
joinlist_is_in_list (server *serv, char *channel)
joinlist_is_in_list (ircconn *serv, char *channel)
{
	if (!serv->network || !((ircnet *)serv->network)->favchanlist)
	{

M src/common/servlist.h => src/common/servlist.h +2 -2
@@ 92,7 92,7 @@ extern GSList *network_list;

void servlist_init (void);
int servlist_save (void);
int servlist_cycle (server *serv);
int servlist_cycle (ircconn *serv);
void servlist_connect (session *sess, ircnet *net, gboolean join);
int servlist_connect_by_netname (session *sess, char *network, gboolean join);
int servlist_auto_connect (session *sess);


@@ 123,7 123,7 @@ void servlist_favchan_remove (ircnet *net, favchannel *channel);
favchannel *servlist_favchan_copy (favchannel *fav);
GSList *servlist_favchan_listadd (GSList *chanlist, char *channel, char *key);

gboolean joinlist_is_in_list (server *serv, char *channel);
gboolean joinlist_is_in_list (ircconn *serv, char *channel);

/* FIXME
void joinlist_split (char *autojoin, GSList **channels, GSList **keys);

M src/common/text.c => src/common/text.c +5 -5
@@ 76,7 76,7 @@ scrollback_get_filename (session *sess)
{
	char *net, *chan, *buf, *ret = NULL;

	net = ircserver_get_network (sess->server, FALSE);
	net = ircconn_get_network (sess->server, FALSE);
	if (!net)
		return NULL;



@@ 607,11 607,11 @@ log_open (session *sess)

	log_close (sess);
	sess->logfd = log_open_file (sess->server->servername, sess->channel,
				     ircserver_get_network (sess->server, FALSE));
				     ircconn_get_network (sess->server, FALSE));

	if (!log_error && sess->logfd == -1)
	{
		char *filename = log_create_pathname (sess->server->servername, sess->channel, ircserver_get_network (sess->server, FALSE));
		char *filename = log_create_pathname (sess->server->servername, sess->channel, ircconn_get_network (sess->server, FALSE));
		char *message = g_strdup_printf (_("* Can't open log file(s) for writing. Check the\npermissions on %s"), filename);

		g_free (filename);


@@ 696,7 696,7 @@ log_write (session *sess, char *text, time_t ts)
	}

	/* change to a different log file? */
	file = log_create_pathname (sess->server->servername, sess->channel, ircserver_get_network (sess->server, FALSE));
	file = log_create_pathname (sess->server->servername, sess->channel, ircconn_get_network (sess->server, FALSE));
	if (file)
	{
		if (g_access (file, F_OK) != 0)


@@ 706,7 706,7 @@ log_write (session *sess, char *text, time_t ts)
				close (sess->logfd);
			}

			sess->logfd = log_open_file (sess->server->servername, sess->channel, ircserver_get_network (sess->server, FALSE));
			sess->logfd = log_open_file (sess->server->servername, sess->channel, ircconn_get_network (sess->server, FALSE));
		}

		g_free (file);

M src/common/url.c => src/common/url.c +2 -2
@@ 227,7 227,7 @@ url_check_word (const char *word)
static gboolean
match_nick (const char *word, int *start, int *end)
{
	const server *serv = current_sess->server;
	const ircconn *serv = current_sess->server;
	const char *nick_prefixes = serv ? serv->nick_prefixes : NICKPRE;
	char *str;



@@ 259,7 259,7 @@ match_nick (const char *word, int *start, int *end)
static gboolean
match_channel (const char *word, int *start, int *end)
{
	const server *serv = current_sess->server;
	const ircconn *serv = current_sess->server;
	const char *chan_prefixes = serv ? serv->chantypes : CHANPRE;
	const char *nick_prefixes = serv ? serv->nick_prefixes : NICKPRE;


M src/common/userlist.c => src/common/userlist.c +4 -4
@@ 30,7 30,7 @@


int
nick_cmp_az_ops (server *serv, struct User *user1, struct User *user2)
nick_cmp_az_ops (ircconn *serv, struct User *user1, struct User *user2)
{
	unsigned int access1 = user1->access;
	unsigned int access2 = user2->access;


@@ 53,7 53,7 @@ nick_cmp_az_ops (server *serv, struct User *user1, struct User *user2)
}

int
nick_cmp_alpha (struct User *user1, struct User *user2, server *serv)
nick_cmp_alpha (struct User *user1, struct User *user2, ircconn *serv)
{
	return serv->p_cmp (user1->nick, user2->nick);
}


@@ 193,7 193,7 @@ userlist_clear (session *sess)
}

static int
find_cmp (const char *name, struct User *user, server *serv)
find_cmp (const char *name, struct User *user, ircconn *serv)
{
	return serv->p_cmp ((char *)name, user->nick);
}


@@ 211,7 211,7 @@ userlist_find (struct session *sess, const char *name)
}

struct User *
userlist_find_global (struct server *serv, char *name)
userlist_find_global (struct ircconn *serv, char *name)
{
	struct User *user;
	session *sess;

M src/common/userlist.h => src/common/userlist.h +3 -3
@@ 49,7 49,7 @@ int userlist_add_hostname (session *sess, char *nick,
void userlist_set_away (session *sess, char *nick, unsigned int away);
void userlist_set_account (session *sess, char *nick, char *account);
struct User *userlist_find (session *sess, const char *name);
struct User *userlist_find_global (server *serv, char *name);
struct User *userlist_find_global (ircconn *serv, char *name);
void userlist_clear (session *sess);
void userlist_free (session *sess);
void userlist_add (session *sess, char *name, char *hostname, char *account,


@@ 61,7 61,7 @@ void userlist_update_mode (session *sess, char *name, char mode, char sign);
GSList *userlist_flat_list (session *sess);
GList *userlist_double_list (session *sess);
void userlist_rehash (session *sess);
int nick_cmp_az_ops (server *serv, struct User *user1, struct User *user2);
int nick_cmp_alpha (struct User *user1, struct User *user2, server *serv);
int nick_cmp_az_ops (ircconn *serv, struct User *user1, struct User *user2);
int nick_cmp_alpha (struct User *user1, struct User *user2, ircconn *serv);

#endif

M src/fe-gtk/banlist.c => src/fe-gtk/banlist.c +3 -3
@@ 119,7 119,7 @@ supports_bans (banlist_info *banl, int i)
static void
supports_exempt (banlist_info *banl, int i)
{
	server *serv = banl->sess->server;
	ircconn *serv = banl->sess->server;
	char *cm = serv->chanmodes;
	int bit = 1<<i;



@@ 147,7 147,7 @@ yes:
static void
supports_invite (banlist_info *banl, int i)
{
	server *serv = banl->sess->server;
	ircconn *serv = banl->sess->server;
	char *cm = serv->chanmodes;
	int bit = 1<<i;



@@ 175,7 175,7 @@ yes:
static void
supports_quiet (banlist_info *banl, int i)
{
	server *serv = banl->sess->server;
	ircconn *serv = banl->sess->server;
	char *cm = serv->chanmodes;
	int bit = 1<<i;


M src/fe-gtk/chanlist.c => src/fe-gtk/chanlist.c +33 -33
@@ 70,7 70,7 @@ chanlistrow;


static gboolean
chanlist_match (server *serv, const char *str)
chanlist_match (ircconn *serv, const char *str)
{
	switch (serv->gui->chanlist_search_type)
	{


@@ 90,7 90,7 @@ chanlist_match (server *serv, const char *str)
 * Updates the caption to reflect the number of users and channels
 */
static void
chanlist_update_caption (server *serv)
chanlist_update_caption (ircconn *serv)
{
	gchar tbuf[256];



@@ 106,7 106,7 @@ chanlist_update_caption (server *serv)
}

static void
chanlist_update_buttons (server *serv)
chanlist_update_buttons (ircconn *serv)
{
	if (serv->gui->chanlist_channels_shown_count)
	{


@@ 121,7 121,7 @@ chanlist_update_buttons (server *serv)
}

static void
chanlist_reset_counters (server *serv)
chanlist_reset_counters (ircconn *serv)
{
	serv->gui->chanlist_users_found_count = 0;
	serv->gui->chanlist_users_shown_count = 0;


@@ 135,7 135,7 @@ chanlist_reset_counters (server *serv)
/* free up our entire linked list and all the nodes */

static void
chanlist_data_free (server *serv)
chanlist_data_free (ircconn *serv)
{
	GSList *rows;
	chanlistrow *data;


@@ 162,7 162,7 @@ chanlist_data_free (server *serv)
/* add any rows we received from the server in the last 0.25s to the GUI */

static void
chanlist_flush_pending (server *serv)
chanlist_flush_pending (ircconn *serv)
{
	GSList *list = serv->gui->chanlist_pending_rows;
	GtkTreeModel *model;


@@ 189,7 189,7 @@ chanlist_flush_pending (server *serv)
}

static gboolean
chanlist_timeout (server *serv)
chanlist_timeout (ircconn *serv)
{
	chanlist_flush_pending (serv);
	return TRUE;


@@ 200,7 200,7 @@ chanlist_timeout (server *serv)
 * the user and regex/search requirements.
 */
static void
chanlist_place_row_in_gui (server *serv, chanlistrow *next_row, gboolean force)
chanlist_place_row_in_gui (ircconn *serv, chanlistrow *next_row, gboolean force)
{
	GtkTreeModel *model;



@@ 279,7 279,7 @@ chanlist_place_row_in_gui (server *serv, chanlistrow *next_row, gboolean force)
/* Performs the LIST download from the IRC server. */

static void
chanlist_do_refresh (server *serv)
chanlist_do_refresh (ircconn *serv)
{
	if (serv->gui->chanlist_flash_tag)
	{


@@ 319,7 319,7 @@ chanlist_do_refresh (server *serv)
}

static void
chanlist_refresh (GtkWidget * wid, server *serv)
chanlist_refresh (GtkWidget * wid, ircconn *serv)
{
	chanlist_do_refresh (serv);
}


@@ 328,7 328,7 @@ chanlist_refresh (GtkWidget * wid, server *serv)
 * Fills the gui GtkTreeView with stored items from the GSList.
 */
static void
chanlist_build_gui_list (server *serv)
chanlist_build_gui_list (ircconn *serv)
{
	GSList *rows;



@@ 364,7 364,7 @@ chanlist_build_gui_list (server *serv)
 * chanlistrow, adds it to our linked list and calls chanlist_place_row_in_gui.
 */
void
fe_add_chan_list (server *serv, char *chan, char *users, char *topic)
fe_add_chan_list (ircconn *serv, char *chan, char *users, char *topic)
{
	chanlistrow *next_row;
	int len = strlen (chan) + 1;


@@ 387,7 387,7 @@ fe_add_chan_list (server *serv, char *chan, char *users, char *topic)
}

void
fe_chan_list_end (server *serv)
fe_chan_list_end (ircconn *serv)
{
	/* download complete */
	chanlist_flush_pending (serv);


@@ 396,13 396,13 @@ fe_chan_list_end (server *serv)
}

static void
chanlist_search_pressed (GtkButton * button, server *serv)
chanlist_search_pressed (GtkButton * button, ircconn *serv)
{
	chanlist_build_gui_list (serv);
}

static void
chanlist_find_cb (GtkWidget * wid, server *serv)
chanlist_find_cb (GtkWidget * wid, ircconn *serv)
{
	const char *pattern = gtk_entry_get_text (GTK_ENTRY (wid));



@@ 421,19 421,19 @@ chanlist_find_cb (GtkWidget * wid, server *serv)
}

static void
chanlist_match_channel_button_toggled (GtkWidget * wid, server *serv)
chanlist_match_channel_button_toggled (GtkWidget * wid, ircconn *serv)
{
	serv->gui->chanlist_match_wants_channel = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (wid));
}

static void
chanlist_match_topic_button_toggled (GtkWidget * wid, server *serv)
chanlist_match_topic_button_toggled (GtkWidget * wid, ircconn *serv)
{
	serv->gui->chanlist_match_wants_topic = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (wid));
}

static char *
chanlist_get_selected (server *serv, gboolean get_topic)
chanlist_get_selected (ircconn *serv, gboolean get_topic)
{
	char *chan;
	GtkTreeSelection *sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (serv->gui->chanlist_list));


@@ 448,7 448,7 @@ chanlist_get_selected (server *serv, gboolean get_topic)
}

static void
chanlist_join (GtkWidget * wid, server *serv)
chanlist_join (GtkWidget * wid, ircconn *serv)
{
	char tbuf[CHANLEN + 6];
	char *chan = chanlist_get_selected (serv, FALSE);


@@ 465,7 465,7 @@ chanlist_join (GtkWidget * wid, server *serv)
}

static void
chanlist_filereq_done (server *serv, char *file)
chanlist_filereq_done (ircconn *serv, char *file)
{
	time_t t = time (0);
	int fh, users;


@@ 506,7 506,7 @@ chanlist_filereq_done (server *serv, char *file)
}

static void
chanlist_save (GtkWidget * wid, server *serv)
chanlist_save (GtkWidget * wid, ircconn *serv)
{
	GtkTreeIter iter;
	GtkTreeModel *model = GET_MODEL (serv);


@@ 517,7 517,7 @@ chanlist_save (GtkWidget * wid, server *serv)
}

static gboolean
chanlist_flash (server *serv)
chanlist_flash (ircconn *serv)
{
	if (gtk_widget_get_state (serv->gui->chanlist_refresh) != GTK_STATE_ACTIVE)
		gtk_widget_set_state (serv->gui->chanlist_refresh, GTK_STATE_ACTIVE);


@@ 528,7 528,7 @@ chanlist_flash (server *serv)
}

static void
chanlist_minusers (GtkSpinButton *wid, server *serv)
chanlist_minusers (GtkSpinButton *wid, ircconn *serv)
{
	serv->gui->chanlist_minusers = gtk_spin_button_get_value_as_int (wid);
	prefs.hex_gui_chanlist_minusers = serv->gui->chanlist_minusers;


@@ 550,7 550,7 @@ chanlist_minusers (GtkSpinButton *wid, server *serv)
}

static void
chanlist_maxusers (GtkSpinButton *wid, server *serv)
chanlist_maxusers (GtkSpinButton *wid, ircconn *serv)
{
	serv->gui->chanlist_maxusers = gtk_spin_button_get_value_as_int (wid);
	prefs.hex_gui_chanlist_maxusers = serv->gui->chanlist_maxusers;


@@ 561,7 561,7 @@ static void
chanlist_dclick_cb (GtkTreeView *view, GtkTreePath *path,
						  GtkTreeViewColumn *column, gpointer data)
{
	chanlist_join (0, (server *) data);	/* double clicked a row */
	chanlist_join (0, (ircconn *) data);	/* double clicked a row */
}

static void


@@ 572,7 572,7 @@ chanlist_menu_destroy (GtkWidget *menu, gpointer userdata)
}

static void
chanlist_copychannel (GtkWidget *item, server *serv)
chanlist_copychannel (GtkWidget *item, ircconn *serv)
{
	char *chan = chanlist_get_selected (serv, FALSE);
	if (chan)


@@ 583,7 583,7 @@ chanlist_copychannel (GtkWidget *item, server *serv)
}

static void
chanlist_copytopic (GtkWidget *item, server *serv)
chanlist_copytopic (GtkWidget *item, ircconn *serv)
{
	char *topic = chanlist_get_selected (serv, TRUE);
	if (topic)


@@ 594,7 594,7 @@ chanlist_copytopic (GtkWidget *item, server *serv)
}

static gboolean
chanlist_button_cb (GtkTreeView *tree, GdkEventButton *event, server *serv)
chanlist_button_cb (GtkTreeView *tree, GdkEventButton *event, ircconn *serv)
{
	GtkWidget *menu;
	GtkTreeSelection *sel;


@@ 638,7 638,7 @@ chanlist_button_cb (GtkTreeView *tree, GdkEventButton *event, server *serv)
}

static void
chanlist_destroy_widget (GtkWidget *wid, server *serv)
chanlist_destroy_widget (GtkWidget *wid, ircconn *serv)
{
	custom_list_clear ((CustomList *)GET_MODEL (serv));
	chanlist_data_free (serv);


@@ 663,7 663,7 @@ chanlist_destroy_widget (GtkWidget *wid, server *serv)
}

static void
chanlist_closegui (GtkWidget *wid, server *serv)
chanlist_closegui (GtkWidget *wid, ircconn *serv)
{
	if (is_server (serv))
		serv->gui->chanlist_window = NULL;


@@ 699,13 699,13 @@ chanlist_add_column (GtkWidget *tree, int textcol, int size, char *title, gboole
}

static void
chanlist_combo_cb (GtkWidget *combo, server *serv)
chanlist_combo_cb (GtkWidget *combo, ircconn *serv)
{
	serv->gui->chanlist_search_type = gtk_combo_box_get_active (GTK_COMBO_BOX (combo));
}

void
chanlist_opengui (server *serv, int do_refresh)
chanlist_opengui (ircconn *serv, int do_refresh)
{
	GtkWidget *vbox, *hbox, *table, *wid, *view;
	char tbuf[256];


@@ 718,7 718,7 @@ chanlist_opengui (server *serv, int do_refresh)
	}

	g_snprintf (tbuf, sizeof tbuf, _("Channel List (%s) - %s"),
		    ircserver_get_network (serv, TRUE), _(DISPLAY_NAME));
		    ircconn_get_network (serv, TRUE), _(DISPLAY_NAME));

	serv->gui->chanlist_pending_rows = NULL;
	serv->gui->chanlist_tag = 0;

M src/fe-gtk/chanlist.h => src/fe-gtk/chanlist.h +1 -1
@@ 20,6 20,6 @@
#ifndef HEXCHAT_CHANLIST_H
#define HEXCHAT_CHANLIST_H

void chanlist_opengui (server *serv, int do_refresh);
void chanlist_opengui (ircconn *serv, int do_refresh);

#endif

M src/fe-gtk/chanview.c => src/fe-gtk/chanview.c +1 -1
@@ 79,7 79,7 @@ struct _chan
	chanview *cv;	/* our owner */
	GtkTreeIter iter;
	void *userdata;	/* session * */
	void *family;		/* server * or null */
	void *family;		/* ircconn * or null */
	void *impl;	/* togglebutton or null */
	GdkPixbuf *icon;
	short allow_closure;	/* allow it to be closed when it still has children? */

M src/fe-gtk/fe-gtk.c => src/fe-gtk/fe-gtk.c +7 -7
@@ 439,7 439,7 @@ fe_new_window (session *sess, int focus)
}

void
fe_new_server (struct server *serv)
fe_new_server (struct ircconn *serv)
{
	serv->gui = g_new0 (struct server_gui, 1);
}


@@ 542,7 542,7 @@ fe_update_channel_limit (struct session *sess)
}

int
fe_is_chanwindow (struct server *serv)
fe_is_chanwindow (struct ircconn *serv)
{
	if (!serv->gui->chanlist_window)
		return 0;


@@ 583,7 583,7 @@ fe_progressbar_start (session *sess)
}

void
fe_progressbar_end (server *serv)
fe_progressbar_end (ircconn *serv)
{
	GSList *list = sess_list;
	session *sess;


@@ 694,7 694,7 @@ fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gtk_xtext_search_f
}

void
fe_set_lag (server *serv, long lag)
fe_set_lag (ircconn *serv, long lag)
{
	GSList *list = sess_list;
	session *sess;


@@ 753,7 753,7 @@ fe_set_lag (server *serv, long lag)
}

void
fe_set_throttle (server *serv)
fe_set_throttle (ircconn *serv)
{
	GSList *list = sess_list;
	struct session *sess;


@@ 1108,7 1108,7 @@ fe_open_url (const char *url)
}

void
fe_server_event (server *serv, int type, int arg)
fe_server_event (ircconn *serv, int type, int arg)
{
	GSList *list = sess_list;
	session *sess;


@@ 1166,7 1166,7 @@ fe_get_file (const char *title, char *initial,
}

void
fe_open_chan_list (server *serv, char *filter, int do_refresh)
fe_open_chan_list (ircconn *serv, char *filter, int do_refresh)
{
	chanlist_opengui (serv, do_refresh);
}

M src/fe-gtk/joind.c => src/fe-gtk/joind.c +8 -8
@@ 41,7 41,7 @@


static void
joind_radio2_cb (GtkWidget *radio, server *serv)
joind_radio2_cb (GtkWidget *radio, ircconn *serv)
{
	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (radio)))
	{


@@ 57,20 57,20 @@ joind_entryenter_cb (GtkWidget *entry, GtkWidget *ok)
}

static void
joind_entryfocus_cb (GtkWidget *entry, GdkEventFocus *event, server *serv)
joind_entryfocus_cb (GtkWidget *entry, GdkEventFocus *event, ircconn *serv)
{
	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (serv->gui->joind_radio2), TRUE);
}

static void
joind_destroy_cb (GtkWidget *win, server *serv)
joind_destroy_cb (GtkWidget *win, ircconn *serv)
{
	if (is_server (serv))
		serv->gui->joind_win = NULL;
}

static void
joind_ok_cb (GtkWidget *ok, server *serv)
joind_ok_cb (GtkWidget *ok, ircconn *serv)
{
	if (!is_server (serv))
	{


@@ 108,7 108,7 @@ xit:
}

static void
joind_show_dialog (server *serv)
joind_show_dialog (ircconn *serv)
{
	GtkWidget *dialog1;
	GtkWidget *dialog_vbox1;


@@ 160,7 160,7 @@ joind_show_dialog (server *serv)
	gtk_box_pack_start (GTK_BOX (hbox1), vbox2, TRUE, TRUE, 0);

	g_snprintf (buf2, sizeof (buf2), _("Connection to %s complete."),
		    ircserver_get_network (serv, TRUE));
		    ircconn_get_network (serv, TRUE));
	g_snprintf (buf, sizeof (buf), "\n<b>%s</b>", buf2);
	label = gtk_label_new (buf);
	gtk_widget_show (label);


@@ 257,14 257,14 @@ joind_show_dialog (server *serv)
}

void
joind_open (server *serv)
joind_open (ircconn *serv)
{
	if (prefs.hex_gui_join_dialog)
		joind_show_dialog (serv);
}

void
joind_close (server *serv)
joind_close (ircconn *serv)
{
	if (serv->gui->joind_win)
	{

M src/fe-gtk/joind.h => src/fe-gtk/joind.h +2 -2
@@ 20,7 20,7 @@
#ifndef HEXCHAT_JOIND_H
#define HEXCHAT_JOIND_H

void joind_open (server *serv);
void joind_close (server *serv);
void joind_open (ircconn *serv);
void joind_close (ircconn *serv);

#endif

M src/fe-gtk/maingui.c => src/fe-gtk/maingui.c +14 -14
@@ 395,13 395,13 @@ fe_set_title (session *sess)
	{
	case SESS_DIALOG:
		g_snprintf (tbuf, sizeof (tbuf), "%s %s @ %s - %s",
			    _("Dialog with"), sess->channel, ircserver_get_network (sess->server, TRUE),
			    _("Dialog with"), sess->channel, ircconn_get_network (sess->server, TRUE),
			    _(DISPLAY_NAME));
		break;
	case SESS_SERVER:
		g_snprintf (tbuf, sizeof (tbuf), "%s%s%s - %s",
			    prefs.hex_gui_win_nick ? sess->server->nick : "",
			    prefs.hex_gui_win_nick ? " @ " : "", ircserver_get_network (sess->server, TRUE),
			    prefs.hex_gui_win_nick ? " @ " : "", ircconn_get_network (sess->server, TRUE),
					 _(DISPLAY_NAME));
		break;
	case SESS_CHANNEL:


@@ 410,7 410,7 @@ fe_set_title (session *sess)
				    "%s%s%s / %s%s%s%s - %s",
				    prefs.hex_gui_win_nick ? sess->server->nick : "",
				    prefs.hex_gui_win_nick ? " @ " : "",
				    ircserver_get_network (sess->server, TRUE), sess->channel,
				    ircconn_get_network (sess->server, TRUE), sess->channel,
				    prefs.hex_gui_win_modes && sess->current_modes ? " (" : "",
				    prefs.hex_gui_win_modes && sess->current_modes ? sess->current_modes : "",
				    prefs.hex_gui_win_modes && sess->current_modes ? ")" : "",


@@ 424,7 424,7 @@ fe_set_title (session *sess)
	case SESS_SNOTICES:
		g_snprintf (tbuf, sizeof (tbuf), "%s%s%s (notices) - %s",
			    prefs.hex_gui_win_nick ? sess->server->nick : "",
			    prefs.hex_gui_win_nick ? " @ " : "", ircserver_get_network (sess->server, TRUE),
			    prefs.hex_gui_win_nick ? " @ " : "", ircconn_get_network (sess->server, TRUE),
			    _(DISPLAY_NAME));
		break;
	default:


@@ 1125,7 1125,7 @@ mg_count_networks (void)

	for (list = serv_list; list; list = list->next)
	{
		if (((server *)list->data)->connected)
		if (((ircconn *)list->data)->connected)
			cons++;
	}
	return cons;


@@ 1902,7 1902,7 @@ check_is_number (char *t)
static void
mg_change_flag (GtkWidget * wid, session *sess, char flag)
{
	server *serv = sess->server;
	ircconn *serv = sess->server;
	char mode[3];

	mode[1] = flag;


@@ 1925,7 1925,7 @@ flagl_hit (GtkWidget * wid, struct session *sess)
{
	char modes[512];
	const char *limit_str;
	server *serv = sess->server;
	ircconn *serv = sess->server;

	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (wid)))
	{


@@ 1951,7 1951,7 @@ static void
flagk_hit (GtkWidget * wid, struct session *sess)
{
	char modes[512];
	server *serv = sess->server;
	ircconn *serv = sess->server;

	if (serv->connected && sess->channel[0])
	{


@@ 2024,7 2024,7 @@ mg_key_entry_cb (GtkWidget * igad, gpointer userdata)
{
	char modes[512];
	session *sess = current_sess;
	server *serv = sess->server;
	ircconn *serv = sess->server;

	if (serv->connected && sess->channel[0])
	{


@@ 2040,7 2040,7 @@ mg_limit_entry_cb (GtkWidget * igad, gpointer userdata)
{
	char modes[512];
	session *sess = current_sess;
	server *serv = sess->server;
	ircconn *serv = sess->server;

	if (serv->connected && sess->channel[0])
	{


@@ 2129,7 2129,7 @@ mg_dialog_button_cb (GtkWidget *wid, char *cmd)
		host = topic + 1;

	auto_insert (buf, sizeof (buf), cmd, 0, 0, "", "", "",
		     ircserver_get_network (current_sess->server, TRUE), host, "",
		     ircconn_get_network (current_sess->server, TRUE), host, "",
		     current_sess->channel, "");

	handle_command (current_sess, buf, TRUE);


@@ 3471,7 3471,7 @@ fe_update_mode_buttons (session *sess, char mode, char sign)
}

void
fe_set_nick (server *serv, char *newnick)
fe_set_nick (ircconn *serv, char *newnick)
{
	GSList *list = sess_list;
	session *sess;


@@ 3489,7 3489,7 @@ fe_set_nick (server *serv, char *newnick)
}

void
fe_set_away (server *serv)
fe_set_away (ircconn *serv)
{
	GSList *list = sess_list;
	session *sess;


@@ 3646,7 3646,7 @@ mg_set_title (GtkWidget *vbox, char *title) /* for non-irc tab/window only */
}

void
fe_server_callback (server *serv)
fe_server_callback (ircconn *serv)
{
	joind_close (serv);


M src/fe-gtk/menu.c => src/fe-gtk/menu.c +7 -7
@@ 140,7 140,7 @@ nick_command_parse (session *sess, char *cmd, char *nick, char *allnick)
	buf = g_malloc (len);

	auto_insert (buf, len, cmd, 0, 0, allnick, sess->channel, "",
		     ircserver_get_network (sess->server, TRUE), host,
		     ircconn_get_network (sess->server, TRUE), host,
		     sess->server->nick, nick, account);

	nick_command (sess, buf);


@@ 1066,19 1066,19 @@ menu_chanmenu (struct session *sess, GdkEventButton * event, char *chan)
}

static void
menu_delfav_cb (GtkWidget *item, server *serv)
menu_delfav_cb (GtkWidget *item, ircconn *serv)
{
	servlist_autojoinedit (serv->network, str_copy, FALSE);
}

static void
menu_addfav_cb (GtkWidget *item, server *serv)
menu_addfav_cb (GtkWidget *item, ircconn *serv)
{
	servlist_autojoinedit (serv->network, str_copy, TRUE);
}

void
menu_addfavoritemenu (server *serv, GtkWidget *menu, char *channel, gboolean istree)
menu_addfavoritemenu (ircconn *serv, GtkWidget *menu, char *channel, gboolean istree)
{
	char *str;
	


@@ 1107,21 1107,21 @@ menu_addfavoritemenu (server *serv, GtkWidget *menu, char *channel, gboolean ist
}

static void
menu_delautoconn_cb (GtkWidget *item, server *serv)
menu_delautoconn_cb (GtkWidget *item, ircconn *serv)
{
	((ircnet*)serv->network)->flags &= ~FLAG_AUTO_CONNECT;
	servlist_save ();
}

static void
menu_addautoconn_cb (GtkWidget *item, server *serv)
menu_addautoconn_cb (GtkWidget *item, ircconn *serv)
{
	((ircnet*)serv->network)->flags |= FLAG_AUTO_CONNECT;
	servlist_save ();
}

void
menu_addconnectmenu (server *serv, GtkWidget *menu)
menu_addconnectmenu (ircconn *serv, GtkWidget *menu)
{
	if (!serv->network)
		return;

M src/fe-gtk/menu.h => src/fe-gtk/menu.h +2 -2
@@ 23,8 23,8 @@
GtkWidget *menu_create_main (void *accel_group, int bar, int away, int toplevel, GtkWidget **menu_widgets);
void menu_urlmenu (GdkEventButton * event, char *url);
void menu_chanmenu (session *sess, GdkEventButton * event, char *chan);
void menu_addfavoritemenu (server *serv, GtkWidget *menu, char *channel, gboolean istree);
void menu_addconnectmenu (server *serv, GtkWidget *menu);
void menu_addfavoritemenu (ircconn *serv, GtkWidget *menu, char *channel, gboolean istree);
void menu_addconnectmenu (ircconn *serv, GtkWidget *menu);
void menu_nickmenu (session *sess, GdkEventButton * event, char *nick, int num_sel);
void menu_middlemenu (session *sess, GdkEventButton *event);
void userlist_button_cb (GtkWidget * button, char *cmd);

M src/fe-gtk/notifygui.c => src/fe-gtk/notifygui.c +1 -1
@@ 217,7 217,7 @@ notify_gui_update (void)
				{
					if (servcount > 0)
						name = "";
					server = ircserver_get_network (servnot->server, TRUE);
					server = ircconn_get_network (servnot->server, TRUE);

					g_snprintf (agobuf, sizeof (agobuf), _("%d minutes ago"), (int)(time (0) - lastseen) / 60);
					seen = agobuf;

M src/fe-gtk/plugin-tray.c => src/fe-gtk/plugin-tray.c +3 -3
@@ 130,7 130,7 @@ tray_count_networks (void)

	for (list = serv_list; list; list = list->next)
	{
		if (((server *)list->data)->connected)
		if (((ircconn *)list->data)->connected)
			cons++;
	}
	return cons;


@@ 412,7 412,7 @@ static int
tray_find_away_status (void)
{
	GSList *list;
	server *serv;
	ircconn *serv;
	int away = 0;
	int back = 0;



@@ 439,7 439,7 @@ static void
tray_foreach_server (GtkWidget *item, char *cmd)
{
	GSList *list;
	server *serv;
	ircconn *serv;

	for (list = serv_list; list; list = list->next)
	{

M src/fe-gtk/rawlog.c => src/fe-gtk/rawlog.c +6 -6
@@ 43,14 43,14 @@
#include "fkeys.h"

static void
close_rawlog (GtkWidget *wid, server *serv)
close_rawlog (GtkWidget *wid, ircconn *serv)
{
	if (is_server (serv))
		serv->gui->rawlog_window = 0;
}

static void
rawlog_save (server *serv, char *file)
rawlog_save (ircconn *serv, char *file)
{
	int fh = -1;



@@ 68,14 68,14 @@ rawlog_save (server *serv, char *file)
}

static int
rawlog_clearbutton (GtkWidget * wid, server *serv)
rawlog_clearbutton (GtkWidget * wid, ircconn *serv)
{
	gtk_xtext_clear (GTK_XTEXT (serv->gui->rawlog_textlist)->buffer, 0);
	return FALSE;
}

static int
rawlog_savebutton (GtkWidget * wid, server *serv)
rawlog_savebutton (GtkWidget * wid, ircconn *serv)
{
	gtkutil_file_req (NULL, _("Save As..."), rawlog_save, serv, NULL, NULL, FRF_WRITE);
	return FALSE;


@@ 98,7 98,7 @@ rawlog_key_cb (GtkWidget * wid, GdkEventKey * key, gpointer userdata)
}

void
open_rawlog (struct server *serv)
open_rawlog (struct ircconn *serv)
{
	GtkWidget *bbox, *scrolledwindow, *vbox;
	char tbuf[256];


@@ 142,7 142,7 @@ open_rawlog (struct server *serv)
}

void
fe_add_rawlog (server *serv, char *text, int len, int outbound)
fe_add_rawlog (ircconn *serv, char *text, int len, int outbound)
{
	char **split_text;
	char *new_text;

M src/fe-gtk/rawlog.h => src/fe-gtk/rawlog.h +1 -1
@@ 20,6 20,6 @@
#ifndef HEXCHAT_RAWLOG_H
#define HEXCHAT_RAWLOG_H

void open_rawlog (server *serv);
void open_rawlog (ircconn *serv);

#endif

M src/fe-gtk/userlistgui.c => src/fe-gtk/userlistgui.c +1 -1
@@ 51,7 51,7 @@ enum


GdkPixbuf *
get_user_icon (server *serv, struct User *user)
get_user_icon (ircconn *serv, struct User *user)
{
	char *pre;
	int level;

M src/fe-gtk/userlistgui.h => src/fe-gtk/userlistgui.h +1 -1
@@ 27,6 27,6 @@ GtkListStore *userlist_create_model (session *sess);
void userlist_show (session *sess);
void userlist_select (session *sess, char *name);
char **userlist_selection_list (GtkWidget *widget, int *num_ret);
GdkPixbuf *get_user_icon (server *serv, struct User *user);
GdkPixbuf *get_user_icon (ircconn *serv, struct User *user);

#endif

M src/fe-text/fe-text.c => src/fe-text/fe-text.c +14 -14
@@ 535,7 535,7 @@ fe_exit (void)
}

void
fe_new_server (struct server *serv)
fe_new_server (struct ircconn *serv)
{
}



@@ 559,7 559,7 @@ fe_beep (session *sess)
}

void
fe_add_rawlog (struct server *serv, char *text, int len, int outbound)
fe_add_rawlog (struct ircconn *serv, char *text, int len, int outbound)
{
}
void


@@ 587,17 587,17 @@ fe_update_channel_limit (struct session *sess)
{
}
int
fe_is_chanwindow (struct server *serv)
fe_is_chanwindow (struct ircconn *serv)
{
	return 0;
}

void
fe_add_chan_list (struct server *serv, char *chan, char *users, char *topic)
fe_add_chan_list (struct ircconn *serv, char *chan, char *users, char *topic)
{
}
void
fe_chan_list_end (struct server *serv)
fe_chan_list_end (struct ircconn *serv)
{
}
gboolean


@@ 627,7 627,7 @@ fe_progressbar_start (struct session *sess)
{
}
void
fe_progressbar_end (struct server *serv)
fe_progressbar_end (struct ircconn *serv)
{
}
void


@@ 676,7 676,7 @@ fe_session_callback (struct session *sess)
{
}
void
fe_server_callback (struct server *serv)
fe_server_callback (struct ircconn *serv)
{
}
void


@@ 712,11 712,11 @@ fe_set_nonchannel (struct session *sess, int state)
{
}
void
fe_set_nick (struct server *serv, char *newnick)
fe_set_nick (struct ircconn *serv, char *newnick)
{
}
void
fe_change_nick (struct server *serv, char *nick, char *newnick)
fe_change_nick (struct ircconn *serv, char *nick, char *newnick)
{
}
void


@@ 747,15 747,15 @@ fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gtk_xtext_search_f
{
}
void
fe_set_lag (server * serv, long lag)
fe_set_lag (ircconn * serv, long lag)
{
}
void
fe_set_throttle (server * serv)
fe_set_throttle (ircconn * serv)
{
}
void
fe_set_away (server *serv)
fe_set_away (ircconn *serv)
{
}
void


@@ 839,7 839,7 @@ void fe_uselect (struct session *sess, char *word[], int do_clear, int scroll_to
{
}
void
fe_server_event (server *serv, int type, int arg)
fe_server_event (ircconn *serv, int type, int arg)
{
}
void


@@ 857,7 857,7 @@ void fe_tray_set_icon (feicon icon){}
void fe_tray_set_tooltip (const char *text){}
void fe_userlist_update (session *sess, struct User *user){}
void
fe_open_chan_list (server *serv, char *filter, int do_refresh)
fe_open_chan_list (ircconn *serv, char *filter, int do_refresh)
{
	serv->p_list_channels (serv, filter, 1);
}