diff options
Diffstat (limited to 'protocols')
| -rw-r--r-- | protocols/jabber/jabber.c | 24 | ||||
| -rw-r--r-- | protocols/msn/msn.c | 6 | ||||
| -rw-r--r-- | protocols/nogaim.c | 99 | ||||
| -rw-r--r-- | protocols/nogaim.h | 24 | ||||
| -rw-r--r-- | protocols/oscar/oscar.c | 35 | ||||
| -rw-r--r-- | protocols/yahoo/yahoo.c | 8 | 
6 files changed, 80 insertions, 116 deletions
| diff --git a/protocols/jabber/jabber.c b/protocols/jabber/jabber.c index 029473fd..c8e8ceca 100644 --- a/protocols/jabber/jabber.c +++ b/protocols/jabber/jabber.c @@ -560,29 +560,29 @@ static gboolean gjab_connected_ssl(gpointer data, void *source, b_input_conditio  static void gjab_start(gjconn gjc)  { -	struct aim_user *user; +	account_t *acc;  	int port = -1, ssl = 0;  	char *server = NULL, *s;  	if (!gjc || gjc->state != JCONN_STATE_OFF)  		return; -	user = GJ_GC(gjc)->user; -	if (*user->proto_opt[0]) { +	acc = GJ_GC(gjc)->acc; +	if (acc->server) {  		/* If there's a dot, assume there's a hostname in the beginning */ -		if (strchr(user->proto_opt[0], '.')) { -			server = g_strdup(user->proto_opt[0]); +		if (strchr(acc->server, '.')) { +			server = g_strdup(acc->server);  			if ((s = strchr(server, ':')))  				*s = 0;  		}  		/* After the hostname, there can be a port number */ -		s = strchr(user->proto_opt[0], ':'); +		s = strchr(acc->server, ':');  		if (s && isdigit(s[1]))  			sscanf(s + 1, "%d", &port);  		/* And if there's the string ssl, the user wants an SSL-connection */ -		if (strstr(user->proto_opt[0], ":ssl") || g_strcasecmp(user->proto_opt[0], "ssl") == 0) +		if (strstr(acc->server, ":ssl") || g_strcasecmp(acc->server, "ssl") == 0)  			ssl = 1;  	} @@ -615,7 +615,7 @@ static void gjab_start(gjconn gjc)  	g_free(server); -	if (!user->gc || (gjc->fd < 0)) { +	if (!acc->gc || (gjc->fd < 0)) {  		STATE_EVT(JCONN_STATE_OFF)  		return;  	} @@ -1515,18 +1515,18 @@ static void jabber_handlestate(gjconn gjc, int state)  	return;  } -static void jabber_login(struct aim_user *user) +static void jabber_login(account_t *acc)  { -	struct gaim_connection *gc = new_gaim_conn(user); +	struct gaim_connection *gc = new_gaim_conn(acc);  	struct jabber_data *jd = gc->proto_data = g_new0(struct jabber_data, 1); -	char *loginname = create_valid_jid(user->username, DEFAULT_SERVER, "BitlBee"); +	char *loginname = create_valid_jid(acc->user, DEFAULT_SERVER, "BitlBee");  	jd->hash = g_hash_table_new(g_str_hash, g_str_equal);  	jd->chats = NULL;	/* we have no chats yet */  	set_login_progress(gc, 1, _("Connecting")); -	if (!(jd->gjc = gjab_new(loginname, user->password, gc))) { +	if (!(jd->gjc = gjab_new(loginname, acc->pass, gc))) {  		g_free(loginname);  		hide_login_progress(gc, _("Unable to connect"));  		signoff(gc); diff --git a/protocols/msn/msn.c b/protocols/msn/msn.c index 6393f31d..b00354c9 100644 --- a/protocols/msn/msn.c +++ b/protocols/msn/msn.c @@ -26,9 +26,9 @@  #include "nogaim.h"  #include "msn.h" -static void msn_login( struct aim_user *acct ) +static void msn_login( account_t *acc )  { -	struct gaim_connection *gc = new_gaim_conn( acct ); +	struct gaim_connection *gc = new_gaim_conn( acc );  	struct msn_data *md = g_new0( struct msn_data, 1 );  	set_login_progress( gc, 1, "Connecting" ); @@ -36,7 +36,7 @@ static void msn_login( struct aim_user *acct )  	gc->proto_data = md;  	md->fd = -1; -	if( strchr( acct->username, '@' ) == NULL ) +	if( strchr( acc->user, '@' ) == NULL )  	{  		hide_login_progress( gc, "Invalid account name" );  		signoff( gc ); diff --git a/protocols/nogaim.c b/protocols/nogaim.c index f94d936d..8346f5fa 100644 --- a/protocols/nogaim.c +++ b/protocols/nogaim.c @@ -144,33 +144,21 @@ GSList *get_connections() { return connections; }  /* multi.c */ -struct gaim_connection *new_gaim_conn( struct aim_user *user ) +struct gaim_connection *new_gaim_conn( account_t *acc )  {  	struct gaim_connection *gc; -	account_t *a;  	gc = g_new0( struct gaim_connection, 1 ); -	gc->prpl = user->prpl; -	g_snprintf( gc->username, sizeof( gc->username ), "%s", user->username ); -	g_snprintf( gc->password, sizeof( gc->password ), "%s", user->password ); -	/* [MD]	BUGFIX: don't set gc->irc to the global IRC, but use the one from the struct aim_user. -	 * This fixes daemon mode breakage where IRC doesn't point to the currently active connection. -	 */ -	gc->irc = user->irc; -	 -	connections = g_slist_append( connections, gc ); +	/* Maybe we should get rid of this memory waste later. ;-) */ +	g_snprintf( gc->username, sizeof( gc->username ), "%s", acc->user ); +	g_snprintf( gc->password, sizeof( gc->password ), "%s", acc->pass ); -	user->gc = gc; -	gc->user = user; +	gc->irc = acc->irc; +	gc->acc = acc; +	acc->gc = gc; -	// Find the account_t so we can set its gc pointer -	for( a = gc->irc->accounts; a; a = a->next ) -		if( ( struct aim_user * ) a->gc == user ) -		{ -			a->gc = gc; -			break; -		} +	connections = g_slist_append( connections, gc );  	return( gc );  } @@ -188,7 +176,6 @@ void destroy_gaim_conn( struct gaim_connection *gc )  		}  	connections = g_slist_remove( connections, gc ); -	g_free( gc->user );  	g_free( gc );  } @@ -225,14 +212,14 @@ void serv_got_crap( struct gaim_connection *gc, char *format, ... )  	/* Try to find a different connection on the same protocol. */  	for( a = gc->irc->accounts; a; a = a->next ) -		if( a->prpl == gc->prpl && a->gc != gc ) +		if( a->prpl == gc->acc->prpl && a->gc != gc )  			break;  	/* If we found one, include the screenname in the message. */  	if( a ) -		irc_usermsg( gc->irc, "%s(%s) - %s", gc->prpl->name, gc->username, text ); +		irc_usermsg( gc->irc, "%s(%s) - %s", gc->acc->prpl->name, gc->username, text );  	else -		irc_usermsg( gc->irc, "%s - %s", gc->prpl->name, text ); +		irc_usermsg( gc->irc, "%s - %s", gc->acc->prpl->name, text );  	g_free( text );  } @@ -241,8 +228,8 @@ static gboolean send_keepalive( gpointer d, gint fd, b_input_condition cond )  {  	struct gaim_connection *gc = d; -	if( gc->prpl && gc->prpl->keepalive ) -		gc->prpl->keepalive( gc ); +	if( gc->acc->prpl->keepalive ) +		gc->acc->prpl->keepalive( gc );  	return TRUE;  } @@ -298,7 +285,7 @@ void signoff( struct gaim_connection *gc )  	gc->flags |= OPT_LOGGING_OUT;  	gc->keepalive = 0; -	gc->prpl->close( gc ); +	gc->acc->prpl->close( gc );  	b_event_remove( gc->inpa );  	while( u ) @@ -378,7 +365,7 @@ void add_buddy( struct gaim_connection *gc, char *group, char *handle, char *rea  	}  	memset( nick, 0, MAX_NICK_LENGTH + 1 ); -	strcpy( nick, nick_get( gc->irc, handle, gc->prpl, realname ) ); +	strcpy( nick, nick_get( gc->irc, handle, gc->acc->prpl, realname ) );  	u = user_add( gc->irc, nick ); @@ -390,15 +377,15 @@ void add_buddy( struct gaim_connection *gc, char *group, char *handle, char *rea  		u->host = g_strdup( s + 1 );  		u->user = g_strndup( handle, s - handle );  	} -	else if( gc->user->proto_opt[0] && *gc->user->proto_opt[0] ) +	else if( *gc->acc->server )  	{  		char *colon; -		if( ( colon = strchr( gc->user->proto_opt[0], ':' ) ) ) -			u->host = g_strndup( gc->user->proto_opt[0], -			                     colon - gc->user->proto_opt[0] ); +		if( ( colon = strchr( gc->acc->server, ':' ) ) ) +			u->host = g_strndup( gc->acc->server, +			                     colon - gc->acc->server );  		else -			u->host = g_strdup( gc->user->proto_opt[0] ); +			u->host = g_strdup( gc->acc->server );  		u->user = g_strdup( handle ); @@ -409,7 +396,7 @@ void add_buddy( struct gaim_connection *gc, char *group, char *handle, char *rea  	}  	else  	{ -		u->host = g_strdup( gc->user->prpl->name ); +		u->host = g_strdup( gc->acc->prpl->name );  		u->user = g_strdup( handle );  	} @@ -479,7 +466,7 @@ void show_got_added_no( gpointer w, struct show_got_added_data *data )  void show_got_added_yes( gpointer w, struct show_got_added_data *data )  { -	data->gc->prpl->add_buddy( data->gc, data->handle ); +	data->gc->acc->prpl->add_buddy( data->gc, data->handle );  	add_buddy( data->gc, NULL, data->handle, data->handle );  	return show_got_added_no( w, data ); @@ -558,11 +545,11 @@ void serv_got_update( struct gaim_connection *gc, char *handle, int loggedin, in  			remove_chat_buddy_silent( c, handle );  	} -	if( ( type & UC_UNAVAILABLE ) && ( !strcmp(gc->prpl->name, "oscar") || !strcmp(gc->prpl->name, "icq")) ) +	if( ( type & UC_UNAVAILABLE ) && ( strcmp( gc->acc->prpl->name, "oscar" ) == 0 || strcmp( gc->acc->prpl->name, "icq" ) == 0 ) )  	{  		u->away = g_strdup( "Away" );  	} -	else if( ( type & UC_UNAVAILABLE ) && ( !strcmp(gc->prpl->name, "jabber") ) ) +	else if( ( type & UC_UNAVAILABLE ) && ( strcmp( gc->acc->prpl->name, "jabber" ) == 0 ) )  	{  		if( type & UC_DND )  			u->away = g_strdup( "Do Not Disturb" ); @@ -571,9 +558,9 @@ void serv_got_update( struct gaim_connection *gc, char *handle, int loggedin, in  		else // if( type & UC_AWAY )  			u->away = g_strdup( "Away" );  	} -	else if( ( type & UC_UNAVAILABLE ) && gc->prpl->get_status_string ) +	else if( ( type & UC_UNAVAILABLE ) && gc->acc->prpl->get_status_string )  	{ -		u->away = g_strdup( gc->prpl->get_status_string( gc, type ) ); +		u->away = g_strdup( gc->acc->prpl->get_status_string( gc, type ) );  	}  	else  		u->away = NULL; @@ -732,7 +719,7 @@ void serv_got_chat_in( struct gaim_connection *gc, int id, char *who, int whispe  	user_t *u;  	/* Gaim sends own messages through this too. IRC doesn't want this, so kill them */ -	if( g_strcasecmp( who, gc->user->username ) == 0 ) +	if( g_strcasecmp( who, gc->username ) == 0 )  		return;  	u = user_findhandle( gc, who ); @@ -790,7 +777,7 @@ void add_chat_buddy( struct conversation *b, char *handle )  		serv_got_crap( b->gc, "User %s added to conversation %d", handle, b->id );  	/* It might be yourself! */ -	if( b->gc->prpl->cmp_buddynames( handle, b->gc->user->username ) == 0 ) +	if( b->gc->acc->prpl->cmp_buddynames( handle, b->gc->username ) == 0 )  	{  		u = user_find( b->gc->irc, b->gc->irc->nick );  		if( !b->joined ) @@ -824,7 +811,7 @@ void remove_chat_buddy( struct conversation *b, char *handle, char *reason )  		serv_got_crap( b->gc, "User %s removed from conversation %d (%s)", handle, b->id, reason ? reason : "" );  	/* It might be yourself! */ -	if( g_strcasecmp( handle, b->gc->user->username ) == 0 ) +	if( g_strcasecmp( handle, b->gc->username ) == 0 )  	{  		u = user_find( b->gc->irc, b->gc->irc->nick );  		b->joined = 0; @@ -958,7 +945,7 @@ int bim_buddy_msg( struct gaim_connection *gc, char *handle, char *msg, int flag  		msg = buf;  	} -	st = gc->prpl->send_im( gc, handle, msg, strlen( msg ), flags ); +	st = gc->acc->prpl->send_im( gc, handle, msg, strlen( msg ), flags );  	g_free( buf );  	return st; @@ -975,7 +962,7 @@ int bim_chat_msg( struct gaim_connection *gc, int id, char *msg )  		msg = buf;  	} -	st = gc->prpl->chat_send( gc, id, msg ); +	st = gc->acc->prpl->chat_send( gc, id, msg );  	g_free( buf );  	return st; @@ -989,7 +976,7 @@ int bim_set_away( struct gaim_connection *gc, char *away )  	char *s;  	if( !away ) away = ""; -	ms = m = gc->prpl->away_states( gc ); +	ms = m = gc->acc->prpl->away_states( gc );  	while( m )  	{ @@ -1010,19 +997,19 @@ int bim_set_away( struct gaim_connection *gc, char *away )  	if( m )  	{ -		gc->prpl->set_away( gc, m->data, *away ? away : NULL ); +		gc->acc->prpl->set_away( gc, m->data, *away ? away : NULL );  	}  	else  	{  		s = bim_away_alias_find( ms, away );  		if( s )  		{ -			gc->prpl->set_away( gc, s, away ); +			gc->acc->prpl->set_away( gc, s, away );  			if( set_getint( &gc->irc->set, "debug" ) )  				serv_got_crap( gc, "Setting away state to %s", s );  		}  		else -			gc->prpl->set_away( gc, GAIM_AWAY_CUSTOM, away ); +			gc->acc->prpl->set_away( gc, GAIM_AWAY_CUSTOM, away );  	}  	g_list_free( ms ); @@ -1074,46 +1061,46 @@ static char *bim_away_alias_find( GList *gcm, char *away )  void bim_add_allow( struct gaim_connection *gc, char *handle )  { -	if( g_slist_find_custom( gc->permit, handle, (GCompareFunc) gc->prpl->cmp_buddynames ) == NULL ) +	if( g_slist_find_custom( gc->permit, handle, (GCompareFunc) gc->acc->prpl->cmp_buddynames ) == NULL )  	{  		gc->permit = g_slist_prepend( gc->permit, g_strdup( handle ) );  	} -	gc->prpl->add_permit( gc, handle ); +	gc->acc->prpl->add_permit( gc, handle );  }  void bim_rem_allow( struct gaim_connection *gc, char *handle )  {  	GSList *l; -	if( ( l = g_slist_find_custom( gc->permit, handle, (GCompareFunc) gc->prpl->cmp_buddynames ) ) ) +	if( ( l = g_slist_find_custom( gc->permit, handle, (GCompareFunc) gc->acc->prpl->cmp_buddynames ) ) )  	{  		g_free( l->data );  		gc->permit = g_slist_delete_link( gc->permit, l );  	} -	gc->prpl->rem_permit( gc, handle ); +	gc->acc->prpl->rem_permit( gc, handle );  }  void bim_add_block( struct gaim_connection *gc, char *handle )  { -	if( g_slist_find_custom( gc->deny, handle, (GCompareFunc) gc->prpl->cmp_buddynames ) == NULL ) +	if( g_slist_find_custom( gc->deny, handle, (GCompareFunc) gc->acc->prpl->cmp_buddynames ) == NULL )  	{  		gc->deny = g_slist_prepend( gc->deny, g_strdup( handle ) );  	} -	gc->prpl->add_deny( gc, handle ); +	gc->acc->prpl->add_deny( gc, handle );  }  void bim_rem_block( struct gaim_connection *gc, char *handle )  {  	GSList *l; -	if( ( l = g_slist_find_custom( gc->deny, handle, (GCompareFunc) gc->prpl->cmp_buddynames ) ) ) +	if( ( l = g_slist_find_custom( gc->deny, handle, (GCompareFunc) gc->acc->prpl->cmp_buddynames ) ) )  	{  		g_free( l->data );  		gc->deny = g_slist_delete_link( gc->deny, l );  	} -	gc->prpl->rem_deny( gc, handle ); +	gc->acc->prpl->rem_deny( gc, handle );  } diff --git a/protocols/nogaim.h b/protocols/nogaim.h index 4d71da24..8c6519c1 100644 --- a/protocols/nogaim.h +++ b/protocols/nogaim.h @@ -38,6 +38,7 @@  #define _NOGAIM_H  #include "bitlbee.h" +#include "account.h"  #include "proxy.h"  #include "md5.h"  #include "sha.h" @@ -62,7 +63,7 @@  /* ok. now the fun begins. first we create a connection structure */  struct gaim_connection  { -	struct prpl *prpl; +	account_t *acc;  	guint32 flags;  	/* each connection then can have its own protocol-specific data */ @@ -78,8 +79,6 @@ struct gaim_connection  	GSList *deny;  	int permdeny; -	struct aim_user *user; -	  	char username[64];  	char displayname[128];  	char password[32]; @@ -125,26 +124,11 @@ struct buddy {  	struct gaim_connection *gc; /* the connection it belongs to */  }; -struct aim_user { -	char username[64]; -	char alias[SELF_ALIAS_LEN];  -	char password[32]; -	char user_info[2048]; -	int options; -	struct prpl *prpl; -	/* prpls can use this to save information about the user, -	 * like which server to connect to, etc */ -	char proto_opt[7][256]; - -	struct gaim_connection *gc; -	irc_t *irc; -}; -  struct prpl {  	int options;  	const char *name; -	void (* login)		(struct aim_user *); +	void (* login)		(account_t *);  	void (* keepalive)	(struct gaim_connection *);  	void (* close)		(struct gaim_connection *); @@ -211,7 +195,7 @@ gboolean auto_reconnect( gpointer data, gint fd, b_input_condition cond );  void cancel_auto_reconnect( struct account *a );  /* multi.c */ -G_MODULE_EXPORT struct gaim_connection *new_gaim_conn( struct aim_user *user ); +G_MODULE_EXPORT struct gaim_connection *new_gaim_conn( account_t *acc );  G_MODULE_EXPORT void destroy_gaim_conn( struct gaim_connection *gc );  G_MODULE_EXPORT void set_login_progress( struct gaim_connection *gc, int step, char *msg );  G_MODULE_EXPORT void hide_login_progress( struct gaim_connection *gc, char *msg ); diff --git a/protocols/oscar/oscar.c b/protocols/oscar/oscar.c index 7c76533a..d55ce3f2 100644 --- a/protocols/oscar/oscar.c +++ b/protocols/oscar/oscar.c @@ -355,18 +355,18 @@ static gboolean oscar_login_connect(gpointer data, gint source, b_input_conditio  	return FALSE;  } -static void oscar_login(struct aim_user *user) { +static void oscar_login(account_t *acc) {  	aim_session_t *sess;  	aim_conn_t *conn;  	char buf[256]; -	struct gaim_connection *gc = new_gaim_conn(user); +	struct gaim_connection *gc = new_gaim_conn(acc);  	struct oscar_data *odata = gc->proto_data = g_new0(struct oscar_data, 1); -	if (isdigit(*user->username)) { +	if (isdigit(acc->user[0])) {  		odata->icq = TRUE;  		/* This is odd but it's necessary for a proper do_import and do_export.  		   We don't do those anymore, but let's stick with it, just in case -		   it accidentally fixes something else too... */ +		   it accidentally fixes something else too... </bitlbee> */  		gc->password[8] = 0;  	} else {  		gc->flags |= OPT_CONN_HTML; @@ -389,9 +389,9 @@ static void oscar_login(struct aim_user *user) {  		return;  	} -	if (g_strcasecmp(user->proto_opt[USEROPT_AUTH], "login.icq.com") != 0 && -	    g_strcasecmp(user->proto_opt[USEROPT_AUTH], "login.oscar.aol.com") != 0) { -		serv_got_crap(gc, "Warning: Unknown OSCAR server: `%s'. Please review your configuration if the connection fails.",user->proto_opt[USEROPT_AUTH]); +	if (g_strcasecmp(acc->server, "login.icq.com") != 0 && +	    g_strcasecmp(acc->server, "login.oscar.aol.com") != 0) { +		serv_got_crap(gc, "Warning: Unknown OSCAR server: `%s'. Please review your configuration if the connection fails.",acc->server);  	}  	g_snprintf(buf, sizeof(buf), _("Signon: %s"), gc->username); @@ -401,11 +401,7 @@ static void oscar_login(struct aim_user *user) {  	aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0);  	conn->status |= AIM_CONN_STATUS_INPROGRESS; -	conn->fd = proxy_connect(user->proto_opt[USEROPT_AUTH][0] ? -					user->proto_opt[USEROPT_AUTH] : AIM_DEFAULT_LOGIN_SERVER, -				 user->proto_opt[USEROPT_AUTHPORT][0] ? -					atoi(user->proto_opt[USEROPT_AUTHPORT]) : AIM_LOGIN_PORT, -				 oscar_login_connect, gc); +	conn->fd = proxy_connect(acc->server, AIM_LOGIN_PORT, oscar_login_connect, gc);  	if (conn->fd < 0) {  		hide_login_progress(gc, _("Couldn't connect to host"));  		signoff(gc); @@ -484,14 +480,11 @@ static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) {  	va_list ap;  	struct aim_authresp_info *info;  	int i; char *host; int port; -	struct aim_user *user;  	aim_conn_t *bosconn;  	struct gaim_connection *gc = sess->aux_data;          struct oscar_data *od = gc->proto_data; -	user = gc->user; -	port = user->proto_opt[USEROPT_AUTHPORT][0] ? -		atoi(user->proto_opt[USEROPT_AUTHPORT]) : AIM_LOGIN_PORT, +	port = AIM_LOGIN_PORT;  	va_start(ap, fr);  	info = va_arg(ap, struct aim_authresp_info *); @@ -870,19 +863,16 @@ static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) {  	va_list ap;  	struct aim_redirect_data *redir;  	struct gaim_connection *gc = sess->aux_data; -	struct aim_user *user = gc->user;  	aim_conn_t *tstconn;  	int i;  	char *host;  	int port; -	port = user->proto_opt[USEROPT_AUTHPORT][0] ? -		atoi(user->proto_opt[USEROPT_AUTHPORT]) : AIM_LOGIN_PORT, -  	va_start(ap, fr);  	redir = va_arg(ap, struct aim_redirect_data *);  	va_end(ap); +	port = AIM_LOGIN_PORT;  	for (i = 0; i < (int)strlen(redir->ip); i++) {  		if (redir->ip[i] == ':') {  			port = atoi(&(redir->ip[i+1])); @@ -1722,8 +1712,11 @@ static int gaim_parse_locaterights(aim_session_t *sess, aim_frame_t *fr, ...)  	odata->rights.maxsiglen = odata->rights.maxawaymsglen = (guint)maxsiglen; +	/* FIXME: It seems we're not really using this, and it broke now that +	   struct aim_user is dead.  	aim_bos_setprofile(sess, fr->conn, gc->user->user_info, NULL, gaim_caps); - +	*/ +	  	return 1;  } diff --git a/protocols/yahoo/yahoo.c b/protocols/yahoo/yahoo.c index 79c0febb..c21779ba 100644 --- a/protocols/yahoo/yahoo.c +++ b/protocols/yahoo/yahoo.c @@ -120,16 +120,16 @@ static char *byahoo_strip( char *in )  	return( g_strndup( in, len ) );  } -static void byahoo_login( struct aim_user *user ) +static void byahoo_login( account_t *acc )  { -	struct gaim_connection *gc = new_gaim_conn( user ); +	struct gaim_connection *gc = new_gaim_conn( acc );  	struct byahoo_data *yd = gc->proto_data = g_new0( struct byahoo_data, 1 );  	yd->logged_in = FALSE;  	yd->current_status = YAHOO_STATUS_AVAILABLE;  	set_login_progress( gc, 1, "Connecting" ); -	yd->y2_id = yahoo_init( user->username, user->password ); +	yd->y2_id = yahoo_init( acc->user, acc->pass );  	yahoo_login( yd->y2_id, yd->current_status );  } @@ -424,7 +424,7 @@ static struct gaim_connection *byahoo_get_gc_by_id( int id )  		gc = l->data;  		yd = gc->proto_data; -		if( !strcmp(gc->prpl->name, "yahoo") && yd->y2_id == id ) +		if( strcmp( gc->acc->prpl->name, "yahoo" ) == 0 && yd->y2_id == id )  			return( gc );  	} | 
