Merge pull request #1561 from taosdata/fix-use-after-free-issues
fix use-after-free issues.
This commit is contained in:
commit
3e1811b0e6
|
@ -342,8 +342,8 @@ void tscProcessAsyncRes(SSchedMsg *pMsg) {
|
||||||
(*pSql->fp)(pSql->param, taosres, code);
|
(*pSql->fp)(pSql->param, taosres, code);
|
||||||
|
|
||||||
if (shouldFree) {
|
if (shouldFree) {
|
||||||
tscFreeSqlObj(pSql);
|
|
||||||
tscTrace("%p Async sql is automatically freed in async res", pSql);
|
tscTrace("%p Async sql is automatically freed in async res", pSql);
|
||||||
|
tscFreeSqlObj(pSql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -292,7 +292,6 @@ void tscKillConnection(STscObj *pObj) {
|
||||||
|
|
||||||
pthread_mutex_unlock(&pObj->mutex);
|
pthread_mutex_unlock(&pObj->mutex);
|
||||||
|
|
||||||
taos_close(pObj);
|
|
||||||
|
|
||||||
tscTrace("connection:%p is killed", pObj);
|
tscTrace("connection:%p is killed", pObj);
|
||||||
|
taos_close(pObj);
|
||||||
}
|
}
|
||||||
|
|
|
@ -343,8 +343,8 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg) {
|
||||||
(*pSql->fp)(pSql->param, taosres, rpcMsg->code);
|
(*pSql->fp)(pSql->param, taosres, rpcMsg->code);
|
||||||
|
|
||||||
if (shouldFree) {
|
if (shouldFree) {
|
||||||
tscFreeSqlObj(pSql);
|
|
||||||
tscTrace("%p Async sql is automatically freed", pSql);
|
tscTrace("%p Async sql is automatically freed", pSql);
|
||||||
|
tscFreeSqlObj(pSql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -757,8 +757,8 @@ void taos_free_result_imp(TAOS_RES *res, int keepCmd) {
|
||||||
tscTrace("%p qhandle is null, abort free, fp:%p", pSql, pSql->fp);
|
tscTrace("%p qhandle is null, abort free, fp:%p", pSql, pSql->fp);
|
||||||
|
|
||||||
if (tscShouldFreeAsyncSqlObj(pSql)) {
|
if (tscShouldFreeAsyncSqlObj(pSql)) {
|
||||||
tscFreeSqlObj(pSql);
|
|
||||||
tscTrace("%p Async SqlObj is freed by app", pSql);
|
tscTrace("%p Async SqlObj is freed by app", pSql);
|
||||||
|
tscFreeSqlObj(pSql);
|
||||||
} else {
|
} else {
|
||||||
if (keepCmd) {
|
if (keepCmd) {
|
||||||
tscFreeSqlResult(pSql);
|
tscFreeSqlResult(pSql);
|
||||||
|
|
|
@ -582,10 +582,12 @@ void taos_close_stream(TAOS_STREAM *handle) {
|
||||||
tscRemoveFromStreamList(pStream, pSql);
|
tscRemoveFromStreamList(pStream, pSql);
|
||||||
|
|
||||||
taosTmrStopA(&(pStream->pTimer));
|
taosTmrStopA(&(pStream->pTimer));
|
||||||
|
|
||||||
|
tscTrace("%p stream:%p is closed", pSql, pStream);
|
||||||
|
|
||||||
tscFreeSqlObj(pSql);
|
tscFreeSqlObj(pSql);
|
||||||
pStream->pSql = NULL;
|
pStream->pSql = NULL;
|
||||||
|
|
||||||
tscTrace("%p stream:%p is closed", pSql, pStream);
|
|
||||||
tfree(pStream);
|
tfree(pStream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue