upgrade_prep.h (3551B)
1 /* SPDX-License-Identifier: LGPL-2.1-or-later OR (GPL-2.0-or-later WITH eCos-exception-2.0) */ 2 /* 3 This file is part of GNU libmicrohttpd. 4 Copyright (C) 2024 Evgeny Grin (Karlson2k) 5 6 GNU libmicrohttpd 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 GNU libmicrohttpd 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 Alternatively, you can redistribute GNU libmicrohttpd and/or 17 modify it under the terms of the GNU General Public License as 18 published by the Free Software Foundation; either version 2 of 19 the License, or (at your option) any later version, together 20 with the eCos exception, as follows: 21 22 As a special exception, if other files instantiate templates or 23 use macros or inline functions from this file, or you compile this 24 file and link it with other works to produce a work based on this 25 file, this file does not by itself cause the resulting work to be 26 covered by the GNU General Public License. However the source code 27 for this file must still be made available in accordance with 28 section (3) of the GNU General Public License v2. 29 30 This exception does not invalidate any other reasons why a work 31 based on this file might be covered by the GNU General Public 32 License. 33 34 You should have received copies of the GNU Lesser General Public 35 License and the GNU General Public License along with this library; 36 if not, see <https://www.gnu.org/licenses/>. 37 */ 38 39 /** 40 * @file src/mhd2/upgrade_prep.h 41 * @brief The declaration of functions for preparing for MHD Action for 42 * HTTP-Upgrade 43 * @author Karlson2k (Evgeny Grin) 44 */ 45 46 #ifndef MHD_UPGRADE_PREP_H 47 #define MHD_UPGRADE_PREP_H 1 48 49 #include "mhd_sys_options.h" 50 51 #include "sys_bool_type.h" 52 #include "sys_base_types.h" 53 54 struct MHD_Request; /* Forward declaration */ 55 struct MHD_NameValueCStr; /* Forward declaration */ 56 57 /** 58 * Prepare connection for the HTTP "Upgrade" action. 59 * 60 * Unlike other actions, this kind of action manipulates connection's output 61 * buffers. 62 * 63 * @param req the request object 64 * @param upgrade_hdr_value the value of the "Upgrade:" header, mandatory 65 string 66 * @param num_headers number of elements in the @a headers array, 67 * must be zero if @a headers is NULL 68 * @param headers the optional pointer to the array of the headers (the strings 69 * are copied and does not need to be valid after return from 70 * this function), 71 * can be NULL if @a num_headers is zero 72 * @param is_upload_act must be set to 'true' if the action being created is 73 * "upload" kind of action 74 * @return 'true' if succeed, 75 * 'false' otherwise 76 */ 77 MHD_INTERNAL bool 78 mhd_upgrade_prep_for_action (struct MHD_Request *restrict req, 79 const char *restrict upgrade_hdr_value, 80 size_t num_headers, 81 const struct MHD_NameValueCStr *restrict headers, 82 bool is_upload_act) 83 MHD_FN_PAR_NONNULL_ (1) MHD_FN_PAR_NONNULL_ (2) MHD_FN_PAR_CSTR_ (2) 84 MHD_FN_PAR_IN_SIZE_ (4,3); 85 86 #endif /* ! MHD_UPGRADE_PREP_H */