libmicrohttpd2

HTTP server C library (MHD 2.x, alpha)
Log | Files | Refs | README | LICENSE

commit 28555183e68eb95ba583458c53f8ce452f8fd00c
parent 881319d4ec275b9f216b6dbd0c626d614a6ab341
Author: Evgeny Grin (Karlson2k) <k2k@drgrin.dev>
Date:   Fri, 30 Oct 2026 17:33:21 +0100

Added MHD_FN_PAR_NONNULL_IF_NONZERO_ to public functions

Diffstat:
Msrc/include/microhttpd2.h | 15++++++++++++---
Msrc/include/microhttpd2_main.h.in | 14+++++++++++---
Msrc/include/microhttpd2_preamble.h.in | 1+
Msrc/mhd2/action.c | 5++++-
Msrc/mhd2/dcc_action.c | 1+
Msrc/mhd2/mhd_action.h | 3++-
Msrc/mhd2/response_from.c | 3+++
7 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/src/include/microhttpd2.h b/src/include/microhttpd2.h @@ -3914,6 +3914,7 @@ MHD_connection_set_psk ( struct MHD_ServerCredentialsContext *mscc, size_t psk_size, const /*void? */ char *psk) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2) MHD_FN_PAR_IN_SIZE_ (3, 2); #define MHD_connection_set_psk_unavailable(mscc) \ @@ -6455,7 +6456,8 @@ MHD_DCC_action_finish_with_footer ( struct MHD_DynamicContentCreatorContext *ctx, size_t num_footers, const struct MHD_NameValueCStr *MHD_RESTRICT footers) -MHD_FN_PAR_NONNULL_ (1); +MHD_FN_PAR_NONNULL_ (1) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2); /** @@ -6599,6 +6601,7 @@ MHD_response_from_buffer ( const char *buffer, MHD_FreeCallback free_cb, void *free_cb_cls) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2) MHD_FN_PAR_IN_SIZE_ (3, 2); @@ -6653,6 +6656,7 @@ MHD_response_from_buffer_copy ( enum MHD_HTTP_StatusCode sc, size_t buffer_size, const char *buffer) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2) MHD_FN_PAR_IN_SIZE_ (3, 2); @@ -6704,6 +6708,7 @@ MHD_response_from_iovec ( const struct MHD_IoVec *iov, MHD_FreeCallback free_cb, void *free_cb_cls) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2) MHD_FN_PAR_IN_SIZE_ (3, 2); @@ -6926,7 +6931,8 @@ MHD_FN_PAR_NONNULL_ (1); * @ingroup action */ typedef const struct MHD_UploadAction * -(MHD_FN_PAR_NONNULL_ (2) MHD_FN_PAR_INOUT_SIZE_ (4, 3) +(MHD_FN_PAR_NONNULL_ (2) MHD_FN_PAR_NONNULL_IF_NONZERO_ (4, 3) + MHD_FN_PAR_INOUT_SIZE_ (4, 3) *MHD_UploadCallback)(void *upload_cls, struct MHD_Request *request, size_t content_data_size, @@ -6974,7 +6980,8 @@ MHD_action_process_upload ( void *uc_full_cls, MHD_UploadCallback uc_inc, void *uc_inc_cls) -MHD_FN_PAR_NONNULL_ (1); +MHD_FN_PAR_NONNULL_ (1) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2); /** * Create an action that handles an upload as full upload data. @@ -7399,6 +7406,7 @@ MHD_action_upgrade (struct MHD_Request *MHD_RESTRICT request, size_t num_headers, const struct MHD_NameValueCStr *MHD_RESTRICT headers) MHD_FN_PAR_NONNULL_ (1) MHD_FN_PAR_NONNULL_ (2) MHD_FN_PAR_CSTR_ (2) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (6, 5) MHD_FN_PAR_IN_SIZE_ (6, 5); @@ -7436,6 +7444,7 @@ MHD_upload_action_upgrade ( size_t num_headers, const struct MHD_NameValueCStr *MHD_RESTRICT headers) MHD_FN_PAR_NONNULL_ (1) MHD_FN_PAR_NONNULL_ (2) MHD_FN_PAR_CSTR_ (2) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (6, 5) MHD_FN_PAR_IN_SIZE_ (6, 5); diff --git a/src/include/microhttpd2_main.h.in b/src/include/microhttpd2_main.h.in @@ -1394,7 +1394,8 @@ MHD_DCC_action_finish_with_footer ( struct MHD_DynamicContentCreatorContext *ctx, size_t num_footers, const struct MHD_NameValueCStr *MHD_RESTRICT footers) -MHD_FN_PAR_NONNULL_ (1); +MHD_FN_PAR_NONNULL_ (1) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2); /** @@ -1538,6 +1539,7 @@ MHD_response_from_buffer ( const char *buffer, MHD_FreeCallback free_cb, void *free_cb_cls) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2) MHD_FN_PAR_IN_SIZE_ (3, 2); @@ -1592,6 +1594,7 @@ MHD_response_from_buffer_copy ( enum MHD_HTTP_StatusCode sc, size_t buffer_size, const char *buffer) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2) MHD_FN_PAR_IN_SIZE_ (3, 2); @@ -1643,6 +1646,7 @@ MHD_response_from_iovec ( const struct MHD_IoVec *iov, MHD_FreeCallback free_cb, void *free_cb_cls) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2) MHD_FN_PAR_IN_SIZE_ (3, 2); @@ -1865,7 +1869,8 @@ MHD_FN_PAR_NONNULL_ (1); * @ingroup action */ typedef const struct MHD_UploadAction * -(MHD_FN_PAR_NONNULL_ (2) MHD_FN_PAR_INOUT_SIZE_ (4, 3) +(MHD_FN_PAR_NONNULL_ (2) MHD_FN_PAR_NONNULL_IF_NONZERO_ (4, 3) + MHD_FN_PAR_INOUT_SIZE_ (4, 3) *MHD_UploadCallback)(void *upload_cls, struct MHD_Request *request, size_t content_data_size, @@ -1913,7 +1918,8 @@ MHD_action_process_upload ( void *uc_full_cls, MHD_UploadCallback uc_inc, void *uc_inc_cls) -MHD_FN_PAR_NONNULL_ (1); +MHD_FN_PAR_NONNULL_ (1) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2); /** * Create an action that handles an upload as full upload data. @@ -2338,6 +2344,7 @@ MHD_action_upgrade (struct MHD_Request *MHD_RESTRICT request, size_t num_headers, const struct MHD_NameValueCStr *MHD_RESTRICT headers) MHD_FN_PAR_NONNULL_ (1) MHD_FN_PAR_NONNULL_ (2) MHD_FN_PAR_CSTR_ (2) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (6, 5) MHD_FN_PAR_IN_SIZE_ (6, 5); @@ -2375,6 +2382,7 @@ MHD_upload_action_upgrade ( size_t num_headers, const struct MHD_NameValueCStr *MHD_RESTRICT headers) MHD_FN_PAR_NONNULL_ (1) MHD_FN_PAR_NONNULL_ (2) MHD_FN_PAR_CSTR_ (2) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (6, 5) MHD_FN_PAR_IN_SIZE_ (6, 5); diff --git a/src/include/microhttpd2_preamble.h.in b/src/include/microhttpd2_preamble.h.in @@ -3914,6 +3914,7 @@ MHD_connection_set_psk ( struct MHD_ServerCredentialsContext *mscc, size_t psk_size, const /*void? */ char *psk) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2) MHD_FN_PAR_IN_SIZE_ (3, 2); #define MHD_connection_set_psk_unavailable(mscc) \ diff --git a/src/mhd2/action.c b/src/mhd2/action.c @@ -136,7 +136,8 @@ MHD_action_from_response (struct MHD_Request *MHD_RESTRICT request, MHD_EXTERN_ -MHD_FN_PAR_NONNULL_ (1) const struct MHD_Action * +MHD_FN_PAR_NONNULL_ (1) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2) const struct MHD_Action * MHD_action_process_upload (struct MHD_Request *request, size_t large_buffer_size, MHD_UploadCallback uc_full, @@ -222,6 +223,7 @@ MHD_action_parse_post (struct MHD_Request *request, MHD_EXTERN_ MHD_FN_PAR_NONNULL_ (1) MHD_FN_PAR_NONNULL_ (2) MHD_FN_PAR_CSTR_ (2) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (6, 5) MHD_FN_PAR_IN_SIZE_ (6, 5) const struct MHD_Action * MHD_action_upgrade (struct MHD_Request *MHD_RESTRICT request, const char *MHD_RESTRICT upgrade_hdr_value, @@ -260,6 +262,7 @@ MHD_action_upgrade (struct MHD_Request *MHD_RESTRICT request, MHD_EXTERN_ MHD_FN_PAR_NONNULL_ (1) MHD_FN_PAR_NONNULL_ (2) MHD_FN_PAR_CSTR_ (2) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (6, 5) MHD_FN_PAR_IN_SIZE_ (6, 5) const struct MHD_UploadAction * MHD_upload_action_upgrade ( struct MHD_Request *MHD_RESTRICT request, diff --git a/src/mhd2/dcc_action.c b/src/mhd2/dcc_action.c @@ -115,6 +115,7 @@ MHD_DCC_action_continue_zc ( MHD_EXTERN_ MHD_FN_PAR_NONNULL_ (1) +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2) const struct MHD_DynamicContentCreatorAction * MHD_DCC_action_finish_with_footer ( struct MHD_DynamicContentCreatorContext *ctx, diff --git a/src/mhd2/mhd_action.h b/src/mhd2/mhd_action.h @@ -115,7 +115,8 @@ enum mhd_ActionType #ifndef MHD_UPLOADCALLBACK_DEFINED typedef const struct MHD_UploadAction * -(MHD_FN_PAR_NONNULL_ (2) MHD_FN_PAR_INOUT_SIZE_ (4, 3) +(MHD_FN_PAR_NONNULL_ (2) MHD_FN_PAR_NONNULL_IF_NONZERO_ (4, 3) + MHD_FN_PAR_INOUT_SIZE_ (4, 3) *MHD_UploadCallback)(void *upload_cls, struct MHD_Request *request, size_t content_data_size, diff --git a/src/mhd2/response_from.c b/src/mhd2/response_from.c @@ -156,6 +156,7 @@ MHD_response_from_callback_2cls (enum MHD_HTTP_StatusCode sc, static const unsigned char empty_buf[1] = { 0 }; MHD_EXTERN_ +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2) MHD_FN_PAR_IN_SIZE_ (3, 2) struct MHD_Response * MHD_response_from_buffer ( enum MHD_HTTP_StatusCode sc, @@ -196,6 +197,7 @@ response_cntn_free_buf (void *ptr) MHD_EXTERN_ +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2) MHD_FN_PAR_IN_SIZE_ (3, 2) struct MHD_Response * MHD_response_from_buffer_copy ( enum MHD_HTTP_StatusCode sc, @@ -353,6 +355,7 @@ response_from_iovec_inner ( MHD_EXTERN_ +MHD_FN_PAR_NONNULL_IF_NONZERO_ (3, 2) MHD_FN_PAR_IN_SIZE_ (3, 2) struct MHD_Response * MHD_response_from_iovec ( enum MHD_HTTP_StatusCode sc,