JOPL的配置文件Bug

在使用Excodus的JOPL时,我根据情况修改了作了些小的改动,不过今天下午碰到的Bug却真是让我伤透脑筋。

表现情况是:当我修改了服务器地址后,再次登录将失败。出现Stream Error。
该现象在很久以前就出现过,时好时坏,当时并没有注意到是在修改了服务器地址后会出现。于是对照JOPL的例子看了很久,没有找到差别,又重新写了一遍,还是正确。
无意中想到某次在删除保存用户登录信息的配置文件(就是那个Excodus.xml)后,居然恢复正常。
于是乎在配置文件中找到了罪魁祸首:host属性,他保存了每次根据Server解析出来的地址,而我在代码中是这样写的:

    if (Host <> '') then
      ResolvedIP := Host
    else
      ResolvedIP := Server;

仿照Excodus写的,估计自己没看到Excodus后面进行修正的代码,所以造成了这种状况。将它暂时修正为

ResolvedIP := Server;

就好了,每次登录都会把Server解析为Host。不过感觉JOPL将这个工作交由二次开发者手工操作的设计很不好,它应该在每次登录时都去解析一次,假设一种状况:

Server的地址为:Jabber.org  解析出来的IP为 XXX.XXX.XXX.XXX
某天网站因故搬迁,Jabber.org的指向变为 YYY.XXX.XXX.XXX

呵呵。可见,每次登录时都进行解析是必须的。虽然保存Host可能可以加快一些登录速度。
在Connected后,却又出现Stream Error时,尝试进行一次Server解析,虽然也是个方法。但我还是倾向去前述方法。

明天过来修改JOPL。

 

posted @ 2006-03-07 21:32 monkeyking 阅读(...) 评论(...) 编辑 收藏