response: added PANIC for wrong use

This commit is contained in:
Evgeny Grin (Karlson2k)
2024-09-02 01:31:35 +02:00
parent 332e10db9d
commit 152414c667
2 changed files with 19 additions and 1 deletions
+6 -1
View File
@@ -354,7 +354,12 @@ struct MHD_Response
*/
struct mhd_ResponseInternalErrData special_resp;
#ifndef NDEBUG
/**
* Should be always 'false' for the response lifetime
*/
bool was_destroyed;
#ifndef NDEBUG
struct mhd_ResponseDebug dbg;
#endif
};
+13
View File
@@ -29,6 +29,7 @@
#include "mhd_response.h"
#include "mhd_assert.h"
#include "mhd_panic.h"
#include "mhd_atomic_counter.h"
#include "sys_malloc.h"
@@ -39,6 +40,9 @@
#include "response_funcs.h"
#include "response_from.h"
#define mhd_RESPONSE_DESTOYED "Attempt to use destroyed response, " \
"re-use non-reusable response or wrong MHD_Response pointer"
/**
* Perform full response de-initialisation, with cleaning-up / freeing
* all content data and headers.
@@ -54,6 +58,8 @@ response_full_deinit (struct MHD_Response *restrict r)
if (r->reuse.reusable)
mhd_response_deinit_reusable (r);
mhd_response_deinit_content_data (r);
r->was_destroyed = true;
free (r);
}
@@ -62,6 +68,8 @@ MHD_INTERNAL MHD_FN_PAR_NONNULL_ALL_ void
mhd_response_dec_use_count (struct MHD_Response *restrict r)
{
mhd_assert (r->frozen);
if (r->was_destroyed)
MHD_PANIC (mhd_RESPONSE_DESTOYED);
if (r->reuse.reusable)
{
@@ -77,6 +85,8 @@ MHD_INTERNAL MHD_FN_PAR_NONNULL_ALL_ void
mhd_response_inc_use_count (struct MHD_Response *restrict r)
{
mhd_assert (r->frozen);
if (r->was_destroyed)
MHD_PANIC (mhd_RESPONSE_DESTOYED);
if (! r->reuse.reusable)
return;
@@ -89,6 +99,9 @@ MHD_EXTERN_
MHD_FN_PAR_NONNULL_ (1) void
MHD_response_destroy (struct MHD_Response *response)
{
if (response->was_destroyed)
MHD_PANIC (mhd_RESPONSE_DESTOYED);
if (! response->frozen)
{
/* This response has been never used for actions */