src/protocols/icq/gaim_icq.c

changeset 2138
e829e961b154
parent 2137
b0c18ea1dee8
child 2154
7d4835b44b85
--- a/src/protocols/icq/gaim_icq.c	Wed Aug 08 19:55:12 2001 +0000
+++ b/src/protocols/icq/gaim_icq.c	Wed Aug 08 20:09:57 2001 +0000
@@ -24,25 +24,6 @@
 
 static guint ack_timer = 0;
 
-static struct gaim_connection *find_gaim_conn_by_icq_link(icq_Link *link) {
-	GSList *c = connections;
-	struct gaim_connection *gc = NULL;
-	struct icq_data *id;
-
-	while (c) {
-		gc = (struct gaim_connection *)c->data;
-		if (gc->protocol == PROTO_ICQ) {
-			id = (struct icq_data *)gc->proto_data;
-			if (id->link == link)
-				break;
-		}
-		gc = NULL;
-		c = c->next;
-	}
-
-	return gc;
-}
-
 static char *icq_name() {
 	return "ICQ";
 }
@@ -97,7 +78,7 @@
 }
 
 static void icq_online(icq_Link *link) {
-	struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
+	struct gaim_connection *gc = link->icq_UserData;
 	struct icq_data *id = (struct icq_data *)gc->proto_data;
 	debug_printf("%s is now online.\n", gc->username);
 	account_online(gc);
@@ -108,7 +89,7 @@
 }
 
 static void icq_logged_off(icq_Link *link) {
-	struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
+	struct gaim_connection *gc = link->icq_UserData;
 	struct icq_data *id = (struct icq_data *)gc->proto_data;
 
 	if (icq_Connect(link, "icq.mirabilis.com", 4000) < 1) {
@@ -137,7 +118,7 @@
 
 static void icq_msg_incoming(icq_Link *link, unsigned long uin, unsigned char hour, unsigned char minute,
 			unsigned char day, unsigned char month, unsigned short year, const char *data) {
-	struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
+	struct gaim_connection *gc = link->icq_UserData;
 	char buf[256], *tmp = g_malloc(BUF_LONG);
 	g_snprintf(tmp, BUF_LONG, "%s", data);
 	g_snprintf(buf, sizeof buf, "%lu", uin);
@@ -149,7 +130,7 @@
 static void icq_user_online(icq_Link *link, unsigned long uin, unsigned long st,
 				unsigned long ip, unsigned short port, unsigned long real_ip,
 				unsigned char tcp_flags) {
-	struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
+	struct gaim_connection *gc = link->icq_UserData;
 	guint status;
 	char buf[256];
 
@@ -159,13 +140,13 @@
 }
 
 static void icq_user_offline(icq_Link *link, unsigned long uin) {
-	struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
+	struct gaim_connection *gc = link->icq_UserData;
 	char buf[256]; g_snprintf(buf, sizeof buf, "%lu", uin);
 	serv_got_update(gc, buf, 0, 0, 0, 0, 0, 0);
 }
 
 static void icq_user_status(icq_Link *link, unsigned long uin, unsigned long st) {
-	struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
+	struct gaim_connection *gc = link->icq_UserData;
 	guint status;
 	char buf[256];
 
@@ -193,7 +174,7 @@
 static void icq_url_incoming(icq_Link *link, unsigned long uin, unsigned char hour,
 				unsigned char minute, unsigned char day, unsigned char month,
 				unsigned short year, const char *url, const char *descr) {
-	struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
+	struct gaim_connection *gc = link->icq_UserData;
 	char *msg = g_malloc(BUF_LONG), buf[256];
 	g_snprintf(msg, BUF_LONG, "<A HREF=\"%s\">%s</A>", url, descr);
 	g_snprintf(buf, 256, "%lu", uin);
@@ -202,13 +183,13 @@
 }
 
 static void icq_wrong_passwd(icq_Link *link) {
-	struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
+	struct gaim_connection *gc = link->icq_UserData;
 	hide_login_progress(gc, "Invalid password.");
 	signoff(gc);
 }
 
 static void icq_invalid_uin(icq_Link *link) {
-	struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
+	struct gaim_connection *gc = link->icq_UserData;
 	hide_login_progress(gc, "Invalid UIN.");
 	signoff(gc);
 }
@@ -232,7 +213,7 @@
 static void icq_web_pager(icq_Link *link, unsigned char hour, unsigned char minute,
 		unsigned char day, unsigned char month, unsigned short year, const char *nick,
 		const char *email, const char *msg) {
-	struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
+	struct gaim_connection *gc = link->icq_UserData;
 	char *who = g_strdup_printf("ICQ Web Pager: %s (%s)", nick, email);
 	char *what = g_malloc(BUF_LONG);
 	g_snprintf(what, BUF_LONG, "%s", msg);
@@ -244,7 +225,7 @@
 static void icq_mail_express(icq_Link *link, unsigned char hour, unsigned char minute,
 		unsigned char day, unsigned char month, unsigned short year, const char *nick,
 		const char *email, const char *msg) {
-	struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
+	struct gaim_connection *gc = link->icq_UserData;
 	char *who = g_strdup_printf("ICQ Mail Express: %s (%s)", nick, email);
 	char *what = g_malloc(BUF_LONG);
 	g_snprintf(what, BUF_LONG, "%s", msg);
@@ -317,6 +298,7 @@
 	link->icq_InvalidUIN = icq_invalid_uin;
 	link->icq_Log = icq_do_log;
 	link->icq_RequestNotify = icq_req_not;
+	link->icq_UserData = gc;
 
 	if (proxytype == PROXY_SOCKS5)
 		icq_SetProxy(link, proxyhost, proxyport, proxyuser[0], proxyuser, proxypass);

mercurial