浏览代码

Removed the call to ssl_free on ssl_release_hook, because on program exit, all connections are released by axtls and trying to release by ourselves causes segfault.

mingodad 13 年之前
父节点
当前提交
da4f7cbb4f
共有 1 个文件被更改,包括 8 次插入2 次删除
  1. 8 2
      ext/sq_axtls.c

+ 8 - 2
ext/sq_axtls.c

@@ -27,8 +27,13 @@ static const SQChar SSL_Tag[]   = _SC("sq_axtls_ssl");
 
 
 static SQInteger ssl_release_hook(SQUserPointer p, SQInteger size, HSQUIRRELVM v)
 static SQInteger ssl_release_hook(SQUserPointer p, SQInteger size, HSQUIRRELVM v)
 {
 {
-    SSL *self = (SSL*)p;
-    if(self) ssl_free(self);
+    /*
+    axtls mantains a list of ssl connections on ssl_ctx
+    on case of program abort it frees there all ssl connections
+    and if we try to do it here we get segault
+    */
+    //SSL *self = (SSL*)p;
+    //if(self) ssl_free(self);
 	return 0;
 	return 0;
 }
 }
 
 
@@ -37,6 +42,7 @@ static SQInteger sq_ssl_free(HSQUIRRELVM v)
     SQ_FUNC_VARS_NO_TOP(v);
     SQ_FUNC_VARS_NO_TOP(v);
     GET_ssl_INSTANCE();
     GET_ssl_INSTANCE();
     ssl_release_hook(self, 0, v);
     ssl_release_hook(self, 0, v);
+    ssl_free(self);
     sq_setinstanceup(v, 1, 0);
     sq_setinstanceup(v, 1, 0);
 	return 0;
 	return 0;
 }
 }