diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2005-12-13 22:20:34 +0100 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2005-12-13 22:20:34 +0100 | 
| commit | 1aa0bb5648a5e4a1ceef01202bf4bee4234f96c3 (patch) | |
| tree | e27444c97d5b6a35b44b6dea7f6455a2ee0a7aee /protocols/oscar/im.c | |
| parent | 34759e68501ccf2a885f650df9d35ba3fc84658d (diff) | |
| parent | b8ef1b1aacfa2f407b6245174a06a67fa2f114af (diff) | |
AIM groupchat support, thanks to Hanji (Nelson Elhage)!
Diffstat (limited to 'protocols/oscar/im.c')
| -rw-r--r-- | protocols/oscar/im.c | 26 | 
1 files changed, 26 insertions, 0 deletions
| diff --git a/protocols/oscar/im.c b/protocols/oscar/im.c index 085687e0..c829d409 100644 --- a/protocols/oscar/im.c +++ b/protocols/oscar/im.c @@ -1368,6 +1368,30 @@ static int incomingim_ch1(aim_session_t *sess, aim_module_t *mod, aim_frame_t *r  	return ret;  } + +static void incomingim_ch2_chat_free(aim_session_t *sess, struct aim_incomingim_ch2_args *args) +{ + +	/* XXX aim_chat_roominfo_free() */ +	g_free(args->info.chat.roominfo.name); + +	return; +} + +static void incomingim_ch2_chat(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_userinfo_t *userinfo, struct aim_incomingim_ch2_args *args, aim_bstream_t *servdata) +{ + +	/* +	 * Chat room info. +	 */ +	if (servdata) +		aim_chat_readroominfo(servdata, &args->info.chat.roominfo); + +	args->destructor = (void *)incomingim_ch2_chat_free; + +	return; +} +  static void incomingim_ch2_icqserverrelay_free(aim_session_t *sess, struct aim_incomingim_ch2_args *args)  { @@ -1616,6 +1640,8 @@ static int incomingim_ch2(aim_session_t *sess, aim_module_t *mod, aim_frame_t *r  	if (args.reqclass & AIM_CAPS_ICQSERVERRELAY)  		incomingim_ch2_icqserverrelay(sess, mod, rx, snac, userinfo, &args, sdbsptr); +	else if (args.reqclass & AIM_CAPS_CHAT) +		incomingim_ch2_chat(sess, mod, rx, snac, userinfo, &args, sdbsptr);  	if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) | 
