(Auto)update libjingle 64709629-> 64813990
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5897 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@@ -320,17 +320,13 @@ XmppChatroomModuleImpl::RequestExitChatroom() {
|
||||
if (!engine())
|
||||
return XMPP_RETURN_BADSTATE;
|
||||
|
||||
// currently, can't leave a room unless you've entered
|
||||
// no way to cancel a pending enter call - is that bad?
|
||||
if (chatroom_state_ != XMPP_CHATROOM_STATE_IN_ROOM)
|
||||
return XMPP_RETURN_BADSTATE; // $TODO - this isn't a bad state, it's a bad call, diff error code?
|
||||
|
||||
// exiting a chatroom is a presence request to the server
|
||||
XmlElement element(QN_PRESENCE);
|
||||
element.AddAttr(QN_TO, member_jid().Str());
|
||||
element.AddAttr(QN_TYPE, "unavailable");
|
||||
XmppReturnStatus status = engine()->SendStanza(&element);
|
||||
if (status == XMPP_RETURN_OK) {
|
||||
if (status == XMPP_RETURN_OK &&
|
||||
chatroom_state_ == XMPP_CHATROOM_STATE_IN_ROOM) {
|
||||
return ClientChangeMyPresence(XMPP_CHATROOM_STATE_REQUESTED_EXIT);
|
||||
}
|
||||
return status;
|
||||
@@ -513,6 +509,7 @@ XmppChatroomModuleImpl::ServerChangedOtherPresence(const XmlElement&
|
||||
FireMemberChanged(member);
|
||||
}
|
||||
else if (presence->available() == XMPP_PRESENCE_UNAVAILABLE) {
|
||||
member->SetPresence(presence.get());
|
||||
chatroom_jid_members_.erase(pos);
|
||||
chatroom_jid_members_version_++;
|
||||
FireMemberExited(member);
|
||||
|
@@ -173,9 +173,16 @@ void PubSubRequestTask::HandleResult(const XmlElement* stanza) {
|
||||
SignalResult(this, items);
|
||||
}
|
||||
|
||||
int PubSubReceiveTask::ProcessStart() {
|
||||
if (SignalUpdate.is_empty()) {
|
||||
return STATE_DONE;
|
||||
}
|
||||
return ReceiveTask::ProcessStart();
|
||||
}
|
||||
|
||||
bool PubSubReceiveTask::WantsStanza(const XmlElement* stanza) {
|
||||
return MatchStanzaFrom(stanza, pubsubjid_) &&
|
||||
IsPubSubEventItemsElem(stanza, node_);
|
||||
IsPubSubEventItemsElem(stanza, node_) && !SignalUpdate.is_empty();
|
||||
}
|
||||
|
||||
void PubSubReceiveTask::ReceiveStanza(const XmlElement* stanza) {
|
||||
|
@@ -71,6 +71,7 @@ class PubSubReceiveTask : public ReceiveTask {
|
||||
node_(node) {
|
||||
}
|
||||
|
||||
virtual int ProcessStart();
|
||||
sigslot::signal2<PubSubReceiveTask*,
|
||||
const std::vector<PubSubItem>&> SignalUpdate;
|
||||
|
||||
|
@@ -351,10 +351,6 @@ XmppPresenceImpl::set_raw_xml(const XmlElement * xml) {
|
||||
xml->Name() != QN_PRESENCE)
|
||||
return XMPP_RETURN_BADARGUMENT;
|
||||
|
||||
const std::string& type = xml->Attr(QN_TYPE);
|
||||
if (type != STR_EMPTY && type != "unavailable")
|
||||
return XMPP_RETURN_BADARGUMENT;
|
||||
|
||||
raw_xml_.reset(new XmlElement(*xml));
|
||||
return XMPP_RETURN_OK;
|
||||
}
|
||||
|
Reference in New Issue
Block a user