Mercurial > pidgin.yaz
comparison libpurple/protocols/jabber/message.c @ 29952:b71821db0516
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Thanks to rjoly for testing deryni's fix. Closes #11489
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Mon, 08 Mar 2010 16:54:02 +0000 |
parents | 97974856c920 |
children | 2292d8896b0b fce17268c9ec 10bf97a36be0 |
comparison
equal
deleted
inserted
replaced
29951:80724c326423 | 29952:b71821db0516 |
---|---|
72 account = purple_connection_get_account(gc); | 72 account = purple_connection_get_account(gc); |
73 | 73 |
74 jb = jabber_buddy_find(jm->js, jm->from, TRUE); | 74 jb = jabber_buddy_find(jm->js, jm->from, TRUE); |
75 jbr = jabber_buddy_find_resource(jb, jid->resource); | 75 jbr = jabber_buddy_find_resource(jb, jid->resource); |
76 | 76 |
77 if (jid->resource) { | |
78 /* | |
79 * We received a message from a specific resource, so we probably want a | |
80 * reply to go to this specific resource (i.e. bind/lock the | |
81 * conversation to this resource). | |
82 * | |
83 * This works because purple_conv_im_send gets the name from | |
84 * purple_conversation_get_name() | |
85 */ | |
86 PurpleConversation *conv; | |
87 | |
88 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, jm->from, account); | |
89 if (conv && !g_str_equal(jm->from, purple_conversation_get_name(conv))) { | |
90 purple_debug_info("jabber", "Binding conversation to %s\n", jm->from); | |
91 purple_conversation_set_name(conv, jm->from); | |
92 } | |
93 } | |
94 | |
95 if(!jm->xhtml && !jm->body) { | 77 if(!jm->xhtml && !jm->body) { |
96 if (jbr) { | 78 if (jbr) { |
97 if (jm->chat_state != JM_STATE_NONE) | 79 if (jm->chat_state != JM_STATE_NONE) |
98 jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED; | 80 jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED; |
99 else | 81 else |
135 | 117 |
136 } else { | 118 } else { |
137 serv_got_typing_stopped(gc, jm->from); | 119 serv_got_typing_stopped(gc, jm->from); |
138 } | 120 } |
139 } else { | 121 } else { |
122 if (jid->resource) { | |
123 /* | |
124 * We received a message from a specific resource, so | |
125 * we probably want a reply to go to this specific | |
126 * resource (i.e. bind/lock the conversation to this | |
127 * resource). | |
128 * | |
129 * This works because purple_conv_im_send gets the name | |
130 * from purple_conversation_get_name() | |
131 */ | |
132 PurpleConversation *conv; | |
133 | |
134 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, | |
135 jm->from, account); | |
136 if (conv && !g_str_equal(jm->from, | |
137 purple_conversation_get_name(conv))) { | |
138 purple_debug_info("jabber", "Binding conversation to %s\n", | |
139 jm->from); | |
140 purple_conversation_set_name(conv, jm->from); | |
141 } | |
142 } | |
143 | |
140 if(jbr) { | 144 if(jbr) { |
141 if (jm->chat_state != JM_STATE_NONE) | 145 if (jm->chat_state != JM_STATE_NONE) |
142 jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED; | 146 jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED; |
143 else | 147 else |
144 jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; | 148 jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; |