请教一高人后,问题基本上解决。
在avast升级后在链接socket的时候输出多了一个回车。而havp没有正确的判断到这个回车,还在苦苦的等“221”的返回值
所以很慢会有timeout的问题。现在加了一个代码如下,基本解决这个问题。但日志中还是提示
“Aug 09 09:51:19 avastd[12009]: error: avastserverpeer: cannot send data: 断开的管道”
这个估计是因为判断完以后直接AvastSocket.Close();的结果,而avast还有输出没有完成造成的。但现在已经可以正常使用了。

这里只贴avastscanner.cpp中的修改部分的代码。
if ( (Position = Response.find("\t[L]\t")) != string::npos )
{
if ( (Position = Response.find_first_not_of("\t ", Position + 5)) != string::npos )
{
ScannerAnswer = "1" + Response.substr( Position );
break;
}
}
}
while ( (MatchBegin( Response, "221", 3 ) == false) and (Response != ""));
//Connection will be closed
AvastSocket.Close();
//Clean?
if ( ScannerAnswer == "" )
{
ScannerAnswer = "0Clean";
return ScannerAnswer;
}
//Virus?
return ScannerAnswer;
}
void AvastScanner::FreeDatabase()
{
}
复制代码
