3行代码,搞垮Domino服务器
来源:互联网 发布:asp户口管理系统源码 编辑:程序博客网 时间:2024/06/06 08:37
声明:
此文撰写的目的在于探讨Domino开发技术,并尽量回避开发过程中有可能犯下的错误,请勿将其用于不适当的场合,否则后果自负!
前两天碰到一个奇怪的问题,某段代码一执行,就会立即触发NSD错误。如果代码运行在客户端,则客户端会被强制关闭。如果代码运行在服务器,则整个Domino服务器会立即瘫痪并被强制关闭。当时通过Lotusscript调试,发现在如下函数退出时程序崩溃:
Function getVariant() as Variant
dim vrnTemp as Variant
...
End Function
dim vrnTemp as Variant
...
End Function
琢磨了半天,恍然大悟,忘了写返回值(-_-)b
更改后代码如下:
Function getVariant() as Variant
dim vrnTemp as Variant
...
getVariant = vrnTemp ' 给函数赋返回值。这句是原来忘了写的。
End Function
dim vrnTemp as Variant
...
getVariant = vrnTemp ' 给函数赋返回值。这句是原来忘了写的。
End Function
这样一来问题就消失了,我也一度认为Variant型的函数必须赋返值,可是今天想再研究一下这问题时,却发现问题无法重现了。莫非是原来的推断有误?更深入的研究证实了这一点。原来,问题的产生的源头是另一个函数。
Function wrongFunction() as Variant
...
'vrnSource is a string array
vrnSource = arrayappend(vrnSource, getVariant()) '其实是一执行到这里就NSD
...
End Function
...
'vrnSource is a string array
vrnSource = arrayappend(vrnSource, getVariant()) '其实是一执行到这里就NSD
...
End Function
实测结果表明,当使用ArrayAppend()方法时,如果第二个参数是Nothing,则会立即触发NSD错误。按照这个思路,完全可以写出类似以下的代码。
Dim v As Variant
v = Split("", "")
v = Arrayappend(v, Nothing)
v = Split("", "")
v = Arrayappend(v, Nothing)
当代码执行时,便会触发NSD错误。如果类似有问题的代码放置服务器上,又设置为定时代理……后果不堪设想。
PS:经测试,如果将第二个参数Nothing换为Null或者Empty,则不会出现类似的问题。
- 3行代码,搞垮Domino服务器
- [Domino]Java访问Domino邮件代码片断[3]
- JAVA连接Domino服务器收发邮件代码示例
- 投票丨鹿晗关晓彤曝光恋情 是如何搞垮新浪服务器的
- Domino服务器任务介绍
- Domino服务器命令表
- Domino 服务器命令
- Domino服务器命令表
- Domino服务器命令表
- Domino服务器命令表
- 什么是 Domino 分区服务器?
- Domino服务器命令表
- domino服务器性能优化
- Domino 服务器命令
- 重新配置Domino服务器
- 重新配置Domino服务器
- Domino服务器任务介绍
- DOMINO服务器配置
- Web安全开发问题小结
- Eclipse结合VSS方法
- 泛型类的非静态内部类可访问外围类的类型参数
- 一百个最有用的网站地址
- 国内软件加密锁产品评测
- 3行代码,搞垮Domino服务器
- 页间传值接收后乱码的解决方法
- 写在老婆准备跳槽之前
- Oracle TNSNAMES.ORA配置
- 拥有愉快心情的10绝招
- 数据集输出word或excel文件
- C++学习笔记-后台服务程序开发模式
- 正则表达式学习笔记
- 职场十大解惑揭秘