Mayaqua: revamp RecvHttpHeader() so that cleanup functions are not called twice
@@ -20563,13 +20563,15 @@ HTTP_HEADER *RecvHttpHeader(SOCK *s)
// Split into tokens
token = ParseToken(str, " ");
+
+ Free(str);
+
if (token->NumTokens < 3)
{
- goto LABEL_ERROR;
+ FreeToken(token);
+ return NULL;
}
- Free(str);
-
// Creating a header object
header = NewHttpHeader(token->Token[0], token->Token[1], token->Token[2]);
FreeToken(token);
@@ -20594,21 +20596,15 @@ HTTP_HEADER *RecvHttpHeader(SOCK *s)
if (AddHttpValueStr(header, str) == false)
{
- goto LABEL_ERROR;
+ Free(str);
+ FreeHttpHeader(header);
+ break;
}
Free(str);
}
return header;
-
-LABEL_ERROR:
- // Memory release
- Free(str);
- FreeToken(token);
- FreeHttpHeader(header);
-
- return NULL;
}
// Receive a line
