解决openfire中发送某些特殊字符会断开xmpp连接的问题

来源:互联网 发布:免费矢量绘图软件 编辑:程序博客网 时间:2024/06/11 14:27

    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 对emoj表情的过滤导致,链接断开;因此稍微对源码做修改

    @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));    }




文章来源于http://blog.csdn.net/newjueqi/article/details/18260197,感谢作者的分享


0 0
原创粉丝点击