libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

response.h (4534B)


      1 /*
      2      This file is part of libmicrohttpd
      3      Copyright (C) 2007 Daniel Pittman and Christian Grothoff
      4      Copyright (C) 2015-2022 Karlson2k (Evgeny Grin)
      5 
      6      This library is free software; you can redistribute it and/or
      7      modify it under the terms of the GNU Lesser General Public
      8      License as published by the Free Software Foundation; either
      9      version 2.1 of the License, or (at your option) any later version.
     10 
     11      This library is distributed in the hope that it will be useful,
     12      but WITHOUT ANY WARRANTY; without even the implied warranty of
     13      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14      Lesser General Public License for more details.
     15 
     16      You should have received a copy of the GNU Lesser General Public
     17      License along with this library; if not, write to the Free Software
     18      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
     19 */
     20 
     21 /**
     22  * @file response.h
     23  * @brief  Methods for managing response objects
     24  * @author Daniel Pittman
     25  * @author Christian Grothoff
     26  * @author Karlson2k (Evgeny Grin)
     27  */
     28 
     29 #ifndef RESPONSE_H
     30 #define RESPONSE_H
     31 
     32 /**
     33  * Increments the reference counter for the @a response.
     34  *
     35  * @param response object to modify
     36  */
     37 void
     38 MHD_increment_response_rc (struct MHD_Response *response);
     39 
     40 
     41 /**
     42  * We are done sending the header of a given response
     43  * to the client.  Now it is time to perform the upgrade
     44  * and hand over the connection to the application.
     45  * @remark To be called only from thread that process connection's
     46  * recv(), send() and response. Must be called right after sending
     47  * response headers.
     48  *
     49  * @param response the response that was created for an upgrade
     50  * @param connection the specific connection we are upgrading
     51  * @return #MHD_YES on success, #MHD_NO on failure (will cause
     52  *        connection to be closed)
     53  */
     54 enum MHD_Result
     55 MHD_response_execute_upgrade_ (struct MHD_Response *response,
     56                                struct MHD_Connection *connection);
     57 
     58 
     59 /**
     60  * Get a particular header (or footer) element from the response.
     61  *
     62  * Function returns the first found element.
     63  * @param response response to query
     64  * @param kind the kind of element: header or footer
     65  * @param key the key which header to get
     66  * @param key_len the length of the @a key
     67  * @return NULL if header element does not exist
     68  * @ingroup response
     69  */
     70 struct MHD_HTTP_Res_Header *
     71 MHD_get_response_element_n_ (struct MHD_Response *response,
     72                              enum MHD_ValueKind kind,
     73                              const char *key,
     74                              size_t key_len);
     75 
     76 /**
     77  * Add a header or footer line to the response without checking.
     78  *
     79  * It is assumed that parameters are correct.
     80  *
     81  * @param response response to add a header to
     82  * @param kind header or footer
     83  * @param header the header to add, does not need to be zero-terminated
     84  * @param header_len the length of the @a header
     85  * @param content value to add, does not need to be zero-terminated
     86  * @param content_len the length of the @a content
     87  * @return false on error (like out-of-memory),
     88  *         true if succeed
     89  */
     90 bool
     91 MHD_add_response_entry_no_check_ (struct MHD_Response *response,
     92                                   enum MHD_ValueKind kind,
     93                                   const char *header,
     94                                   size_t header_len,
     95                                   const char *content,
     96                                   size_t content_len);
     97 
     98 /**
     99  * Add preallocated strings a header or footer line to the response without
    100  * checking.
    101  *
    102  * Header/footer strings are not checked and assumed to be correct.
    103  *
    104  * The string must not be statically allocated!
    105  * The strings must be malloc()'ed and zero terminated. The strings will
    106  * be free()'ed when the response is destroyed.
    107  *
    108  * @param response response to add a header to
    109  * @param kind header or footer
    110  * @param header the header string to add, must be malloc()'ed and
    111  *               zero-terminated
    112  * @param header_len the length of the @a header
    113  * @param content the value string to add, must be malloc()'ed and
    114  *                zero-terminated
    115  * @param content_len the length of the @a content
    116  */
    117 bool
    118 MHD_add_response_entry_no_alloc_ (struct MHD_Response *response,
    119                                   enum MHD_ValueKind kind,
    120                                   char *header,
    121                                   size_t header_len,
    122                                   char *content,
    123                                   size_t content_len);
    124 
    125 #endif