Merge pull request #7784 from taosdata/fix/TD-6217
[TD-6217]<fix>: fixed memory leak that caused by invalid http requests
This commit is contained in:
commit
3cb3a58087
|
@ -147,6 +147,7 @@ typedef struct HttpContext {
|
|||
int32_t state;
|
||||
uint8_t reqType;
|
||||
uint8_t parsed;
|
||||
uint8_t error;
|
||||
char ipstr[22];
|
||||
char user[TSDB_USER_LEN]; // parsed from auth token or login message
|
||||
char pass[HTTP_PASSWORD_LEN];
|
||||
|
|
|
@ -188,11 +188,12 @@ void httpCloseContextByApp(HttpContext *pContext) {
|
|||
pContext->parsed = false;
|
||||
bool keepAlive = true;
|
||||
|
||||
if (parser && parser->httpVersion == HTTP_VERSION_10 && parser->keepAlive != HTTP_KEEPALIVE_ENABLE) {
|
||||
if (pContext->error == true) {
|
||||
keepAlive = false;
|
||||
} else if (parser && parser->httpVersion == HTTP_VERSION_10 && parser->keepAlive != HTTP_KEEPALIVE_ENABLE) {
|
||||
keepAlive = false;
|
||||
} else if (parser && parser->httpVersion != HTTP_VERSION_10 && parser->keepAlive == HTTP_KEEPALIVE_DISABLE) {
|
||||
keepAlive = false;
|
||||
} else {
|
||||
}
|
||||
|
||||
if (keepAlive) {
|
||||
|
|
|
@ -663,7 +663,7 @@ static int32_t httpParserOnTarget(HttpParser *parser, HTTP_PARSER_STATE state, c
|
|||
HttpContext *pContext = parser->pContext;
|
||||
int32_t ok = 0;
|
||||
do {
|
||||
if (!isspace(c) && c != '\r' && c != '\n') {
|
||||
if (!isspace(c)) {
|
||||
if (httpAppendString(&parser->str, &c, 1)) {
|
||||
httpError("context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom", pContext, pContext->fd, state, c, c);
|
||||
ok = -1;
|
||||
|
@ -1157,6 +1157,10 @@ static int32_t httpParseChar(HttpParser *parser, const char c, int32_t *again) {
|
|||
httpOnError(parser, HTTP_CODE_INTERNAL_SERVER_ERROR, TSDB_CODE_HTTP_PARSE_ERROR_STATE);
|
||||
}
|
||||
|
||||
if (ok != 0) {
|
||||
pContext->error = true;
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue