出现段错误有很多种可能,在这里讨论的这种情况是我在注册用户的时候发生的。
1. REGISTER (Client to Server)
2. 401 (Server to Client)
3. REGISTER (Client to Server)
4. 200 OK (Server to Client)
这个简单的流程还没运行就直接报Segmentation fault错误,如果注释掉场景中的认证部分或者删掉配置文件中的认证部分就不会出错,但是肯定没法通过服务器的认证。抓包发现服务器返回的401信令中的Authentication段有一个qop="auth,auth-int",而SIPp默认是不认识这种方式的,从而造成程序崩溃。
解决方法如下:
修改sipp.svn目录下的auth.c文件,在232行后面加入
if (strstr(authtype, "auth") && strstr(authtype, "auth-int")){
strcpy(authtype, "auth");
}
跟前面那几个if并列就行。
重新编译,也就是:
make clean
make pcapplay_ossl
然后再执行场景,搞定~