| /* |
| This file is part of libmicrohttpd |
| Copyright (C) 2007 Daniel Pittman and Christian Grothoff |
| Copyright (C) 2015-2022 Karlson2k (Evgeny Grin) |
| |
| This library is free software; you can redistribute it and/or |
| modify it under the terms of the GNU Lesser General Public |
| License as published by the Free Software Foundation; either |
| version 2.1 of the License, or (at your option) any later version. |
| |
| This library is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| Lesser General Public License for more details. |
| |
| You should have received a copy of the GNU Lesser General Public |
| License along with this library; if not, write to the Free Software |
| Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| */ |
| |
| /** |
| * @file response.h |
| * @brief Methods for managing response objects |
| * @author Daniel Pittman |
| * @author Christian Grothoff |
| * @author Karlson2k (Evgeny Grin) |
| */ |
| |
| #ifndef RESPONSE_H |
| #define RESPONSE_H |
| |
| /** |
| * Increments the reference counter for the @a response. |
| * |
| * @param response object to modify |
| */ |
| void |
| MHD_increment_response_rc (struct MHD_Response *response); |
| |
| |
| /** |
| * We are done sending the header of a given response |
| * to the client. Now it is time to perform the upgrade |
| * and hand over the connection to the application. |
| * @remark To be called only from thread that process connection's |
| * recv(), send() and response. Must be called right after sending |
| * response headers. |
| * |
| * @param response the response that was created for an upgrade |
| * @param connection the specific connection we are upgrading |
| * @return #MHD_YES on success, #MHD_NO on failure (will cause |
| * connection to be closed) |
| */ |
| enum MHD_Result |
| MHD_response_execute_upgrade_ (struct MHD_Response *response, |
| struct MHD_Connection *connection); |
| |
| |
| /** |
| * Get a particular header (or footer) element from the response. |
| * |
| * Function returns the first found element. |
| * @param response response to query |
| * @param kind the kind of element: header or footer |
| * @param key the key which header to get |
| * @param key_len the length of the @a key |
| * @return NULL if header element does not exist |
| * @ingroup response |
| */ |
| struct MHD_HTTP_Res_Header * |
| MHD_get_response_element_n_ (struct MHD_Response *response, |
| enum MHD_ValueKind kind, |
| const char *key, |
| size_t key_len); |
| |
| /** |
| * Add a header or footer line to the response without checking. |
| * |
| * It is assumed that parameters are correct. |
| * |
| * @param response response to add a header to |
| * @param kind header or footer |
| * @param header the header to add, does not need to be zero-terminated |
| * @param header_len the length of the @a header |
| * @param content value to add, does not need to be zero-terminated |
| * @param content_len the length of the @a content |
| * @return false on error (like out-of-memory), |
| * true if succeed |
| */ |
| bool |
| MHD_add_response_entry_no_check_ (struct MHD_Response *response, |
| enum MHD_ValueKind kind, |
| const char *header, |
| size_t header_len, |
| const char *content, |
| size_t content_len); |
| |
| /** |
| * Add preallocated strings a header or footer line to the response without |
| * checking. |
| * |
| * Header/footer strings are not checked and assumed to be correct. |
| * |
| * The string must not be statically allocated! |
| * The strings must be malloc()'ed and zero terminated. The strings will |
| * be free()'ed when the response is destroyed. |
| * |
| * @param response response to add a header to |
| * @param kind header or footer |
| * @param header the header string to add, must be malloc()'ed and |
| * zero-terminated |
| * @param header_len the length of the @a header |
| * @param content the value string to add, must be malloc()'ed and |
| * zero-terminated |
| * @param content_len the length of the @a content |
| */ |
| bool |
| MHD_add_response_entry_no_alloc_ (struct MHD_Response *response, |
| enum MHD_ValueKind kind, |
| char *header, |
| size_t header_len, |
| char *content, |
| size_t content_len); |
| |
| #endif |