XMPP getting "Not Authorized" when joining an P/W protected, already open chat room

When a XMPP password protected room is already set up in a window, and the account is logged back in, Pidgin tries to log into the room without a password and fails with a "Not Authorized" error. Double-clicking on the room in the Buddy List will log into the room properly.

This bug seems to crop up on a specific set of criteria, but given that the situation happens often (at least for me), it is still annoying. I hiberate my laptop often and go on VPN, so it comes up every time the network is re-connected.

Steps to Reproduce (100% reproducible on my side):

1. Log into password-protected XMPP chat room.
2. Keep room window open.
3. Disable account or disconnect Internet connection
4. Enable account or re-connect Internet connection
5. Error occurs when Pidgin attempts to relog into room.

Relevant debug lines (with added line breaks):

(09:23:23) jabber: Sending (ssl) ([email protected]/spark): <presence to=‘[email protected]/sineswiper‘>
<priority>1</priority><c xmlns=‘http://jabber.org/protocol/caps‘ node=‘http://pidgin.im/‘ hash=‘sha-1‘ 
ver=‘I22W7CegORwdbnu0ZiQwGpxr0Go=‘/><x xmlns=‘http://jabber.org/protocol/muc‘/></presence>
(09:23:23) jabber: Recv (ssl)(393): <presence to="[email protected]/spark" 
from="[email protected]/sineswiper" type="error"><priority>1</priority><c xmlns="http://jabber.org/protocol/caps" 
node="http://pidgin.im/" hash="sha-1" ver="I22W7CegORwdbnu0ZiQwGpxr0Go="/><x xmlns="http://jabber.org
/protocol/muc"/><error code="401" type="auth"><not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></presence>
...
(09:23:53) gtkconv: setting active conversation on toolbar 0A3EE998
(09:23:53) jabber: Sending (ssl) ([email protected]/spark): <presence to=‘[email protected]/sineswiper‘>
<priority>1</priority><c xmlns=‘http://jabber.org/protocol/caps‘ node=‘http://pidgin.im/‘ hash=‘sha-1‘ 
ver=‘I22W7CegORwdbnu0ZiQwGpxr0Go=‘/><x xmlns=‘http://jabber.org/protocol/muc‘><password>password</password></x></presence>
(09:23:53) jabber: Recv (ssl)(419): <presence to="[email protected]/spark" 
from="[email protected]/mrsadmin"><priority>1</priority><c xmlns="http://jabber.org/protocol/caps" node="http://pidgin.im/" 
hash="sha-1" ver="I22W7CegORwdbnu0ZiQwGpxr0Go="/><x xmlns="vcard-temp:x:update"><photo/></x><x xmlns="http://jabber.org/protocol
/muc#user"><item jid="[email protected]/1d4c2a8e" affiliation="owner" role="moderator"/></x></presence>
(09:23:53) jabber: Sending (ssl) ([email protected]/spark): <iq type=‘get‘ id=‘purple93a1b4dc‘ to=‘[email protected]‘><query 
xmlns=‘http://jabber.org/protocol/disco#info‘ node=‘http://jabber.org/protocol/muc#traffic‘/></iq>
(09:23:53) jabber: Recv (ssl)(462): <presence to="[email protected]/spark" 
from="[email protected]/normaluser1"><priority>1</priority><query xmlns="jabber:iq:last" seconds="300"/><c 
xmlns="http://jabber.org/protocol/caps" node="http://pidgin.im/" hash="sha-1" ver="I22W7CegORwdbnu0ZiQwGpxr0Go="/><x xmlns="vcard-
temp:x:update"><photo/></x><x xmlns="http://jabber.org/protocol/muc#user"><item jid="[email protected]/spark" 
affiliation="none" role="participant"/></x></presence>
...

Note the difference between the two presence requests. The first one does not send out a password via XML, and the second one does (which was the manual double-click into the room). So, Pidgin is clearly not sending the password out when it should.

时间: 2024-10-19 16:37:26

XMPP getting "Not Authorized" when joining an P/W protected, already open chat room的相关文章

xmpp muc 群聊协议 4

7. Occupant Use Cases The main actor in a multi-user chat environment is the occupant, who can be said to be located "in" a multi-user chat room and to participate in the discussions held in that room (for the purposes of this specification, par

XMPP协议的原理介绍

XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探測.它在促进server之间的准即时操作.这个协议可能终于同意因特网用户向因特网上的其它不论什么人发送即时消息,即使其操作系统和浏览器不同. XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议.XMPP眼下被IETF国际标准组织完毕了标准化工作.标准化的核心结果分为两部分: 在IETF 中,把IM协议划分为四种协议,即即时信息和出席协议(Instant Messaging

android openfire 和 xmpp

关于xmpp协议可以参考:http://www.jabbercn.org 什么是OpenFire Openfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议. 您可以使用它轻易的构建高效率的即时通信服务器.Openfire安装和使用都非常简单,并利用Web进行管理.单台服务器可支持上万并发用户. 由于是采用开放的XMPP协议,您可以使用各种支持XMPP协议的IM客户端软件登陆服务. XMPP(Jabber)协议 1. 介绍 XMPP是一种基于XML的协议,

Tigase开发笔记1:深入认识XMPP协议

要学习基于XMPP协议的IM开发,首先要熟悉XMPP协议本身. XMPP协议的组成 主要的XMPP 协议范本及当今应用很广的XMPP 扩展: RFC 3920 XMPP:核心.定义了XMPP 协议框架下应用的网络架构,引入了XML Stream(XML 流)与XML Stanza(XML 节),并规定XMPP 协议在通信过程中使用的XML 标签.使用XML 标签从根本上说是协议开放性与扩展性的需要.此外,在通信的安全方面,把TLS 安全传输机制与SASL 认证机制引入到内核,与XMPP 进行无缝

简要解析XMPP框架及iOS-Objective-C的使用

前言:这两天看了XMPP框架,查阅了一些资料,写下这篇文章记录一下学习笔记 一.简要解析XMPP核心部分 XMPP框架分为两个部分 1.核心部分 2.扩展部分 扩展部分主要讲好友列表(roster).自动重连(automatic reconnect).还有一些其他的实现. 核心部分包括以下部分: XMPPStream XMPPParser XMPPJID XMPPElement XMPPIQ XMPPMessage XMPPPresence XMPPModule XMPPLogging XMPP

XMPP协议简单介绍

1为什么选择XMPP协议 在IETF 中,把IM协议划分为四种协议,即即时信息和出席协议(Instant Messaging and Presence Protocol, IMPP).出席和即时信息协议(Presence and Instant Messaging Protocol, PRIM).针对即时信息和出席扩展的会话发起协议(Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensio

XMPP协议的工作原理

XMPP地址格式 一个实体在XMPP网络结构中被称为一个接点,它有唯一的标示符jabber identifier(JID),即实体地址,用来表示一个Jabber用户,但是也可以表示其他内容,例如一个聊天室.一个有效的JID包括一系列元素:(1)域名(domain identifier):(2)节点(node identifier):(3)源(resource identifier).它的格式是[email protected]/resource,[email protected],类似电子邮件的

openfire与xmpp协议

什么是OpenFire Openfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议. 您可以使用它轻易的构建高效率的即时通信服务器.Openfire安装和使用都非常简单,并利用Web进行管理.单台服务器可支持上万并发用户. 由于是采用开放的XMPP协议,您可以使用各种支持XMPP协议的IM客户端软件登陆服务. XMPP(Jabber)协议 1. 介绍 XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性.因此,基于XMPP的应用具有超强的可扩

基于XMPP实现的Openfire的配置安装+Android客户端的实现[转]

最近在整理一些这方面的资料,闲话少说,咱还是直奔主题吧 :) http://blog.csdn.net/sk719887916/article/details/40541163 https://github.com/ubiety/xmpp https://github.com/robbiehanson/XMPPFramework https://github.com/superfeedr/xmpp-server https://github.com/emi-ly/NightHeron https