citadel学习笔记5——git版本XMPP BUG整理

本文是在git commit 6050cb23108ee10dafcceb65b9cafab51c013ae0 的XMPP模块上的BUG整理,部分相关的BUG已经有反馈给citadel团队了,其后期应该会fix掉吧。新版本的由于对XMPP进行了重构,可能测试没做完全吧,我在调试citadel的时候,发现了一些BUG,并做了整理,本文将会把BUG列举出来,并解决部分的BUG。

首先是新版本依旧没有解决的BUG,有一个,在函数 xmpp_presence_notify 上,有注释说明,内容如下。

我没有对该说明进行过测试,应该没有fix掉吧。在先前的版本中,还有一个BUG是由函数 xmlesc 而导致的BUG,但是新版本已经使用新的接口替换了,所以应该不会有xmlesc的BUG问题了。

新版本引入的BUG有3个:

第一个是在函数 xmpp_indicate_presence 中调用 XPrint 时缺少参数XCLOSED,原内容如下

解决该BUG为添加XCLOSED参数,fix如下

该函数应该都是在最后输出的时候,也就是最后一个调用XPrint函数,必须带上XCLOSED这个参数去告知函数,已经结束了。否则,会出现发送报文的时候,部分字符比如双引号这类的,被转义成&quot,而导致部分客户端解析出错。

 

第二个BUG在函数 xmpp_roster_item 中,也是调用XPROPERTY时传递参数错误。原内容如下

fix后的内容为

该BUG会导致,发送的时候,jid传递错误,当用户上线的时候,会调用该接口去广播所有已经在线的用户,参数的错误,就导致出现了新的用户已经在线成功,而已在线的用户却没有收到在线的通知。

第三个BUG,是在函数  xmpp_end_message 中调用 xmpp_send_message 时,XMPP->message_to为’\0’,也就是并没有被赋值,导致出现的问题就是发送消息给某个客户端,客户端不能够接收到。原内容如下

fix后如下

以上就是在 commit 6050cb23108ee10dafcceb65b9cafab51c013ae0 版本出现的几个BUG,fix后就可以正常使用了,如果你的版本是高于这个的,请看看citadel团队是否已经fix这些问题了,如果还未解决,那么就请修改一下吧。

转载请注明: 转载自elkPi.com

本文链接地址: citadel学习笔记5——git版本XMPP BUG整理

发表评论

电子邮件地址不会被公开。 必填项已用*标注