zoukankan      html  css  js  c++  java
  • 解决openfire中发送某些特殊字符会断开xmpp连接的问题

    在openfire中,如果发送某些特殊的字符(例如一些表情符合),会断开xmpp的连接,经查,是由以下的代码问题引起的:

    srcjavaorgjivesoftwareopenfire etMXParser.java


        protected char more() throws IOException, XmlPullParserException {
        	final char codePoint  = super.more(); // note - this does NOT return a codepoint now, but simply a (single byte) character!
    		if ((codePoint == 0x0) ||  // 0x0 is not allowed, but flash clients insist on sending this as the very first character of a stream. We should stop allowing this codepoint after the first byte has been parsed.
    				(codePoint == 0x9) ||          				     
    				(codePoint == 0xA) ||
    				(codePoint == 0xD) ||
    				((codePoint >= 0x20) && (codePoint <= 0xD7FF)) ||
    				((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) ||
    				((codePoint >= 0x10000) && (codePoint <= 0x10FFFF))) {
    			return codePoint;
    		}
    		
    		throw new XmlPullParserException("Illegal XML character: " + Integer.parseInt(codePoint+"", 16));
        }

    由于在这里把特殊的字符当成了一个异常,所以openfire会断开连接。


    解决方法:

    把代码修改为如下:

        @Override
        protected char more() throws IOException, XmlPullParserException {
        	final char codePoint  = super.more(); // note - this does NOT return a codepoint now, but simply a (single byte) character!
    		if ((codePoint == 0x0) ||  // 0x0 is not allowed, but flash clients insist on sending this as the very first character of a stream. We should stop allowing this codepoint after the first byte has been parsed.
    				(codePoint == 0x9) ||          				     
    				(codePoint == 0xA) ||
    				(codePoint == 0xD) ||		
    				//fix some emotion
    				((codePoint >= 0x20) && (codePoint <= 0xFFFD)) ||				
    				((codePoint >= 0x10000) && (codePoint <= 0x10FFFF))) {
    			return codePoint;
    		}
    		
    		throw new XmlPullParserException("Illegal XML character: " + Integer.parseInt(codePoint+"", 16));
        }




    [文章作者]曾健生

    [作者邮箱]h6k65@126.com

    [作者QQ]190678908

    [新浪微博] @newjueqi

    [博客]http://blog.csdn.net/newjueqi

              http://blog.sina.com.cn/h6k65


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    ES6 常用总结——第一章(简介、let、const)
    那些说自己逻辑好的,过来切磋下啊
    纯css3的上下左右提示框几种方法
    遮罩的几种写法
    送给HTML的初学者——H5的基本结构和标签
    H5柱状图2D小插件
    小白学习H5从入门到放弃
    layui学习笔记
    windows系统安装vue及其配置
    友情链接
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4926832.html
Copyright © 2011-2022 走看看