Question about serv_got_im() and signal order
Toby Schaffer
jts at adc.idt.com
Thu Jul 17 01:04:33 EDT 2008
While working on My Very First Plugin which connects to received-im-msg,
I saw that for the first message in a conversation the
PurpleConversation * argument was null. This appears to be a result of
the following in serv_got_im() (lines 693-706 of 2.4.3's
libpurple/server.c), which emits received-im-msg before creating the
conversation:
purple_signal_emit(purple_conversations_get_handle(),
"received-im-msg", gc->account,
name, message, conv, flags);
/* search for conversation again in case it was created by
received-im-msg handler */
if (conv == NULL)
conv =
purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, name,
gc->account);
/*
* XXX: Should we be setting this here, or relying on prpls to set it?
*/
flags |= PURPLE_MESSAGE_RECV;
if (conv == NULL)
conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, name);
This was causing problems since the callback wanted to reply with
purple_conv_im_send(), which requires a PurpleConversation.
Is there any reason not to create the conversation first? I reordered
the code to try this, and in my extensive testing :) it didn't appear to
break anything...
Thanks,
Toby
More information about the Devel
mailing list