User:Antigng-bot/错误
外观
这个机器人没有使用任何现成的http库,如果不是用了ssl反向代理,我可能还要考虑把openssl弄进去。所以想谈有多少功能是不现实的,保证不出错就足够了。
这里列出的只是影响维基百科页面的错误,实际上Antigng-bot犯的错误比所列的十倍还要多,造成死机的也不少。
原因是页面太长了,原先采用定长数组存储页面源码的方法行不通了。
解决方法:使用新的结构存储页面。
2015/9/29
[编辑]大量增删内容,产生错误的原因是:
while(sst=recv(s,g,BUFFERMAX,0))
{
if(sst>0) hputs(g,BUFFERMAX,result);
}
recv函数不会加入\0,因而多次循环之后可能会重复写入数据。(想象一下第一次循环写入xxxxxxxx,第二次循环写入aaaaa,则result不是xxxxxxxxaaaaa,而是xxxxxxxxaaaaaxxx)。
解决方法:if(sst>0) hputs(g,BUFFERMAX,result);替换为if(sst>0){g[sst]=0;hputs(g,BUFFERMAX,result);}
2015/9/25
[编辑]线程安全问题,子线程处理某个标题下的问题条目的同时,主线程在从搜索结果中获取、修改标题,导致往某一个条目中提交的新内容是另一个条目的内容。
解决方法:显而易见
2015/9/23
[编辑]忽略了fprintf与fputs的差异,见WP:VPO。
解决方法:自行补上\n。
2015/9/20
[编辑]由于程序只有检出内链的部分,而缺少比较的部分。本来只想移除向某个条目的链接,结果把条目中所有的内链都拿走了。
解决方法:加上比较的代码。
2015/9/12
[编辑]由于太过相信搜索结果,没有检查条目内容直接prependtext={{subst:veil}}。
解决方法:检查一下再决定是否编辑。
2015/9/10
[编辑]api以format=xml形式返回的页面源码,&都被换成 ,没有转回来就提交了。
解决方法:
- 自行转换&、<、>、"之类的符号
- 用index.php?action=raw代替api