1 /**************************************************************************/
2 /*                                                                        */
3 /*       Copyright (c) Microsoft Corporation. All rights reserved.        */
4 /*                                                                        */
5 /*       This software is licensed under the Microsoft Software License   */
6 /*       Terms for Microsoft Azure RTOS. Full text of the license can be  */
7 /*       found in the LICENSE file at https://aka.ms/AzureRTOS_EULA       */
8 /*       and in the root directory of this software.                      */
9 /*                                                                        */
10 /**************************************************************************/
11 
12 
13 /**************************************************************************/
14 /**************************************************************************/
15 /**                                                                       */
16 /** NetX Web Component                                                    */
17 /**                                                                       */
18 /**   Hypertext Transfer Protocol (HTTP)                                  */
19 /**   Hypertext Transfer Protocol Secure (HTTPS using TLS)                */
20 /**                                                                       */
21 /**************************************************************************/
22 /**************************************************************************/
23 
24 
25 /**************************************************************************/
26 /*                                                                        */
27 /*  APPLICATION INTERFACE DEFINITION                       RELEASE        */
28 /*                                                                        */
29 /*    nx_web_http_client.h                                PORTABLE C      */
30 /*                                                           6.1.6        */
31 /*  AUTHOR                                                                */
32 /*                                                                        */
33 /*    Yuxin Zhou, Microsoft Corporation                                   */
34 /*                                                                        */
35 /*  DESCRIPTION                                                           */
36 /*                                                                        */
37 /*    This file defines the NetX Web Hypertext Transfer Protocol (HTTP)   */
38 /*    component, including all data types and external references.        */
39 /*    It is assumed that nx_api.h and nx_port.h have already been         */
40 /*    included, along with fx_api.h and fx_port.h.                        */
41 /*                                                                        */
42 /*  RELEASE HISTORY                                                       */
43 /*                                                                        */
44 /*    DATE              NAME                      DESCRIPTION             */
45 /*                                                                        */
46 /*  05-19-2020     Yuxin Zhou               Initial Version 6.0           */
47 /*  09-30-2020     Yuxin Zhou               Modified comment(s),          */
48 /*                                            resulting in version 6.1    */
49 /*  04-02-2021     Yuxin Zhou               Modified comment(s), and      */
50 /*                                            improved the logic of       */
51 /*                                            parsing base64,             */
52 /*                                            resulting in version 6.1.6  */
53 /*                                                                        */
54 /**************************************************************************/
55 
56 #ifndef NX_WEB_HTTP_CLIENT_H
57 #define NX_WEB_HTTP_CLIENT_H
58 
59 /* Determine if a C++ compiler is being used.  If so, ensure that standard
60    C is used to process the API information.  */
61 
62 
63 #ifdef   __cplusplus
64 
65 /* Yes, C++ compiler is present.  Use standard C.  */
66 extern   "C" {
67 
68 #endif
69 
70 #include    "nx_api.h"
71 
72 /* Include common HTTP definitions. */
73 #include "nx_web_http_common.h"
74 
75 /* Define the HTTP ID.  */
76 #define NX_WEB_HTTP_CLIENT_ID                  0x48545450UL
77 
78 #ifndef NX_WEB_HTTP_CLIENT_TIMEOUT
79 #define NX_WEB_HTTP_CLIENT_TIMEOUT              (10 * NX_IP_PERIODIC_RATE)
80 #endif
81 
82 #ifndef NX_WEB_HTTP_CLIENT_MIN_PACKET_SIZE
83 #define NX_WEB_HTTP_CLIENT_MIN_PACKET_SIZE      600
84 #endif
85 
86 /* Define HTTP Client states.  */
87 
88 #define NX_WEB_HTTP_CLIENT_STATE_READY          1
89 #define NX_WEB_HTTP_CLIENT_STATE_GET            2
90 #define NX_WEB_HTTP_CLIENT_STATE_PUT            3
91 #define NX_WEB_HTTP_CLIENT_STATE_POST           4
92 #define NX_WEB_HTTP_CLIENT_STATE_HEAD           5
93 #define NX_WEB_HTTP_CLIENT_STATE_DELETE         6
94 
95 #ifdef  NX_WEB_HTTP_DIGEST_ENABLE
96 
97 /* Include the MD5 digest header file.  */
98 
99 #include "nx_md5.h"
100 
101 #endif
102 
103 
104 #ifdef NX_WEB_HTTPS_ENABLE
105 #include "nx_secure_tls_api.h"
106 #endif
107 
108 /* Define the */
109 typedef struct NX_WEB_HTTP_CLIENT_STATUS_MAP_STRUCT
110 {
111     CHAR           *nx_web_http_client_status_string;              /* String of status    */
112     UINT           nx_web_http_client_status_code;                 /* Status code         */
113 } NX_WEB_HTTP_CLIENT_STATUS_MAP;
114 
115 /* Define the HTTP Client data structure.  */
116 
117 typedef struct NX_WEB_HTTP_CLIENT_STRUCT
118 {
119     ULONG           nx_web_http_client_id;                              /* HTTP Server ID                       */
120     CHAR           *nx_web_http_client_name;                            /* Name of this HTTP Client             */
121     UINT            nx_web_http_client_state;                           /* Current state of HTTP Client         */
122     UINT            nx_web_http_client_connect_port;                    /* Client port to connect to the server */
123     NX_IP          *nx_web_http_client_ip_ptr;                          /* Pointer to associated IP structure   */
124     NX_PACKET_POOL *nx_web_http_client_packet_pool_ptr;                 /* Pointer to HTTP Client packet pool   */
125     ULONG           nx_web_http_client_total_transfer_bytes;            /* Total number of bytes to transfer    */
126     ULONG           nx_web_http_client_actual_bytes_transferred;        /* Number of bytes actually transferred */
127     ULONG           nx_web_http_client_total_receive_bytes;             /* Total number of bytes to receive     */
128     ULONG           nx_web_http_client_actual_bytes_received;           /* Number of bytes actually received    */
129     NX_TCP_SOCKET   nx_web_http_client_socket;                          /* HTTP Client TCP socket               */
130     NXD_ADDRESS     nx_web_http_client_server_address;                  /* IP address of remote server          */
131     NX_PACKET      *nx_web_http_client_request_packet_ptr;              /* Pointer to current request packet    */
132     UINT            nx_web_http_client_method;                          /* Current method (e.g. GET, PUT)       */
133 #ifndef NX_WEB_HTTP_KEEPALIVE_DISABLE
134     UCHAR           nx_web_http_client_keep_alive;                      /* Flag of keep alive                   */
135 #else
136     UCHAR           nx_web_http_client_reserved;                        /* Reserved                             */
137 #endif /* NX_WEB_HTTP_KEEPALIVE_DISABLE */
138     UCHAR           nx_web_http_client_response_header_received;        /* Flag of response header received     */
139     UCHAR           nx_web_http_client_request_chunked;                 /* Flag for chunked request             */
140     UCHAR           nx_web_http_client_response_chunked;                /* Flag for chunked response            */
141     UINT            nx_web_http_client_chunked_response_remaining_size; /* Remaining size of the response       */
142     NX_PACKET      *nx_web_http_client_response_packet;                 /* Pointer to the received response     */
143     /* Pointer to application callback invoked for each field in the response header. */
144     VOID          (*nx_web_http_client_response_callback)(struct NX_WEB_HTTP_CLIENT_STRUCT *client_ptr,
145                                                           CHAR *field_name, UINT field_name_length,
146                                                           CHAR *field_value, UINT field_value_length);
147 #ifdef NX_WEB_HTTPS_ENABLE
148     UINT                  nx_web_http_client_is_https;                  /* If using TLS for HTTPS, set to true. */
149     NX_SECURE_TLS_SESSION nx_web_http_client_tls_session;                      /* TLS session for HTTPS.               */
150 #endif
151 #ifdef  NX_WEB_HTTP_DIGEST_ENABLE
152     NX_MD5          nx_web_http_client_md5data;                         /* HTTP Client MD5 work area            */
153 #endif
154 } NX_WEB_HTTP_CLIENT;
155 
156 
157 
158 #ifndef NX_WEB_HTTP_CLIENT_SOURCE_CODE
159 
160 /* Application caller is present, perform API mapping.  */
161 
162 /* Determine if error checking is desired.  If so, map API functions
163    to the appropriate error checking front-ends.  Otherwise, map API
164    functions to the core functions that actually perform the work.
165    Note: error checking is enabled by default.  */
166 
167 #ifdef NX_DISABLE_ERROR_CHECKING
168 
169 /* Services without error checking.  */
170 
171 #define nx_web_http_client_create                       _nx_web_http_client_create
172 #define nx_web_http_client_delete                       _nx_web_http_client_delete
173 #define nx_web_http_client_get_start                    _nx_web_http_client_get_start
174 #define nx_web_http_client_get_start_extended           _nx_web_http_client_get_start_extended
175 #define nx_web_http_client_put_start                    _nx_web_http_client_put_start
176 #define nx_web_http_client_put_start_extended           _nx_web_http_client_put_start_extended
177 #define nx_web_http_client_post_start                   _nx_web_http_client_post_start
178 #define nx_web_http_client_post_start_extended          _nx_web_http_client_post_start_extended
179 #define nx_web_http_client_head_start                   _nx_web_http_client_head_start
180 #define nx_web_http_client_head_start_extended          _nx_web_http_client_head_start_extended
181 #define nx_web_http_client_delete_start                 _nx_web_http_client_delete_start
182 #define nx_web_http_client_delete_start_extended        _nx_web_http_client_delete_start_extended
183 #define nx_web_http_client_get_secure_start             _nx_web_http_client_get_secure_start
184 #define nx_web_http_client_get_secure_start_extended    _nx_web_http_client_get_secure_start_extended
185 #define nx_web_http_client_put_secure_start             _nx_web_http_client_put_secure_start
186 #define nx_web_http_client_put_secure_start_extended    _nx_web_http_client_put_secure_start_extended
187 #define nx_web_http_client_post_secure_start            _nx_web_http_client_post_secure_start
188 #define nx_web_http_client_post_secure_start_extended   _nx_web_http_client_post_secure_start_extended
189 #define nx_web_http_client_head_secure_start            _nx_web_http_client_head_secure_start
190 #define nx_web_http_client_head_secure_start_extended   _nx_web_http_client_head_secure_start_extended
191 #define nx_web_http_client_delete_secure_start          _nx_web_http_client_delete_secure_start
192 #define nx_web_http_client_delete_secure_start_extended _nx_web_http_client_delete_secure_start_extended
193 #define nx_web_http_client_response_body_get            _nx_web_http_client_response_body_get
194 #define nx_web_http_client_put_packet                   _nx_web_http_client_put_packet
195 #define nx_web_http_client_response_header_callback_set _nx_web_http_client_response_header_callback_set
196 #define nx_web_http_client_request_initialize           _nx_web_http_client_request_initialize
197 #define nx_web_http_client_request_initialize_extended  _nx_web_http_client_request_initialize_extended
198 #define nx_web_http_client_request_send                 _nx_web_http_client_request_send
199 #define nx_web_http_client_request_header_add           _nx_web_http_client_request_header_add
200 #define nx_web_http_client_connect                      _nx_web_http_client_connect
201 #define nx_web_http_client_secure_connect               _nx_web_http_client_secure_connect
202 #define nx_web_http_client_request_packet_allocate      _nx_web_http_client_request_packet_allocate
203 #define nx_web_http_client_request_packet_send          _nx_web_http_client_request_packet_send
204 #define nx_web_http_client_request_chunked_set          _nx_web_http_client_request_chunked_set
205 
206 #else
207 
208 /* Services with error checking.  */
209 
210 #define nx_web_http_client_create(p,n,i,pp,w)           _nxe_web_http_client_create(p,n,i,pp,w, sizeof(NX_WEB_HTTP_CLIENT))
211 #define nx_web_http_client_delete                       _nxe_web_http_client_delete
212 #define nx_web_http_client_get_start                    _nxe_web_http_client_get_start
213 #define nx_web_http_client_get_start_extended           _nxe_web_http_client_get_start_extended
214 #define nx_web_http_client_put_start                    _nxe_web_http_client_put_start
215 #define nx_web_http_client_put_start_extended           _nxe_web_http_client_put_start_extended
216 #define nx_web_http_client_post_start                   _nxe_web_http_client_post_start
217 #define nx_web_http_client_post_start_extended          _nx_web_http_client_post_start_extended
218 #define nx_web_http_client_head_start                   _nxe_web_http_client_head_start
219 #define nx_web_http_client_head_start_extended          _nxe_web_http_client_head_start_extended
220 #define nx_web_http_client_delete_start                 _nxe_web_http_client_delete_start
221 #define nx_web_http_client_delete_start_extended        _nxe_web_http_client_delete_start_extended
222 #define nx_web_http_client_get_secure_start             _nxe_web_http_client_get_secure_start
223 #define nx_web_http_client_get_secure_start_extended    _nxe_web_http_client_get_secure_start_extended
224 #define nx_web_http_client_put_secure_start             _nxe_web_http_client_put_secure_start
225 #define nx_web_http_client_put_secure_start_extended    _nxe_web_http_client_put_secure_start_extended
226 #define nx_web_http_client_post_secure_start            _nxe_web_http_client_post_secure_start
227 #define nx_web_http_client_post_secure_start_extended   _nxe_web_http_client_post_secure_start_extended
228 #define nx_web_http_client_head_secure_start            _nxe_web_http_client_head_secure_start
229 #define nx_web_http_client_head_secure_start_extended   _nxe_web_http_client_head_secure_start_extended
230 #define nx_web_http_client_delete_secure_start          _nxe_web_http_client_delete_secure_start
231 #define nx_web_http_client_delete_secure_start_extended _nxe_web_http_client_delete_secure_start_extended
232 #define nx_web_http_client_response_body_get            _nxe_web_http_client_response_body_get
233 #define nx_web_http_client_put_packet                   _nxe_web_http_client_put_packet
234 #define nx_web_http_client_response_header_callback_set _nxe_web_http_client_response_header_callback_set
235 #define nx_web_http_client_request_initialize           _nxe_web_http_client_request_initialize
236 #define nx_web_http_client_request_initialize_extended  _nxe_web_http_client_request_initialize_extended
237 #define nx_web_http_client_request_send                 _nxe_web_http_client_request_send
238 #define nx_web_http_client_request_header_add           _nxe_web_http_client_request_header_add
239 #define nx_web_http_client_connect                      _nxe_web_http_client_connect
240 #define nx_web_http_client_secure_connect               _nxe_web_http_client_secure_connect
241 #define nx_web_http_client_request_packet_allocate      _nxe_web_http_client_request_packet_allocate
242 #define nx_web_http_client_request_packet_send          _nxe_web_http_client_request_packet_send
243 #define nx_web_http_client_request_chunked_set          _nxe_web_http_client_request_chunked_set
244 
245 #endif  /* NX_DISABLE_ERROR_CHECKING */
246 
247 /* Define the prototypes accessible to the application software.  */
248 
249 
250 #ifdef NX_DISABLE_ERROR_CHECKING
251 UINT        _nx_web_http_client_create(NX_WEB_HTTP_CLIENT *client_ptr, CHAR *client_name, NX_IP *ip_ptr, NX_PACKET_POOL *pool_ptr, ULONG window_size);
252 #else
253 UINT        _nxe_web_http_client_create(NX_WEB_HTTP_CLIENT *client_ptr, CHAR *client_name, NX_IP *ip_ptr, NX_PACKET_POOL *pool_ptr, ULONG window_size, UINT http_client_size);
254 #endif  /* NX_DISABLE_ERROR_CHECKING */
255 
256 
257 UINT        nx_web_http_client_delete(NX_WEB_HTTP_CLIENT *client_ptr);
258 UINT        nx_web_http_client_response_body_get(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET **packet_ptr, ULONG wait_option);
259 UINT        nx_web_http_client_put_packet(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET *packet_ptr, ULONG wait_option);
260 UINT        nx_web_http_client_get_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, CHAR *host, CHAR *username, CHAR *password, ULONG wait_option);
261 UINT        nx_web_http_client_get_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
262                                                   CHAR *username, UINT username_length, CHAR *password, UINT password_length, ULONG wait_option);
263 UINT        nx_web_http_client_put_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, CHAR *host, CHAR *username, CHAR *password, ULONG total_bytes, ULONG wait_option);
264 UINT        nx_web_http_client_put_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
265                                                   CHAR *username, UINT username_length, CHAR *password, UINT password_length, ULONG total_bytes, ULONG wait_option);
266 UINT        nx_web_http_client_post_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, CHAR *host, CHAR *username, CHAR *password, ULONG total_bytes, ULONG wait_option);
267 UINT        nx_web_http_client_post_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
268                                                    CHAR *username, UINT username_length, CHAR *password, UINT password_length, ULONG total_bytes, ULONG wait_option);
269 UINT        nx_web_http_client_head_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, CHAR *host, CHAR *username, CHAR *password, ULONG wait_option);
270 UINT        nx_web_http_client_head_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
271                                                    CHAR *username, UINT username_length, CHAR *password, UINT password_length, ULONG wait_option);
272 UINT        nx_web_http_client_delete_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, CHAR *host, CHAR *username, CHAR *password, ULONG wait_option);
273 UINT        nx_web_http_client_delete_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
274                                                      CHAR *username, UINT username_length, CHAR *password, UINT password_length, ULONG wait_option);
275 
276 UINT        nx_web_http_client_response_header_callback_set(NX_WEB_HTTP_CLIENT *client_ptr,
277                                                             VOID (*callback_function)(NX_WEB_HTTP_CLIENT *client_ptr,
278                                                             CHAR *field_name,
279                                                             UINT field_name_length,
280                                                             CHAR *field_value,
281                                                             UINT field_value_length));
282 
283 UINT        nx_web_http_client_connect(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, ULONG wait_option);
284 
285 UINT        nx_web_http_client_request_initialize(NX_WEB_HTTP_CLIENT *client_ptr,
286                                                   UINT method,
287                                                   CHAR *resource,
288                                                   CHAR *host,
289                                                   UINT input_size,
290                                                   UINT transfer_encoding_chunked,
291                                                   CHAR *username,
292                                                   CHAR *password,
293                                                   UINT wait_option);
294 
295 UINT        nx_web_http_client_request_initialize_extended(NX_WEB_HTTP_CLIENT *client_ptr,
296                                                            UINT method,
297                                                            CHAR *resource,
298                                                            UINT resource_length,
299                                                            CHAR *host,
300                                                            UINT host_length,
301                                                            UINT input_size,
302                                                            UINT transfer_encoding_chunked,
303                                                            CHAR *username,
304                                                            UINT username_length,
305                                                            CHAR *password,
306                                                            UINT password_length,
307                                                            UINT wait_option);
308 
309 UINT        nx_web_http_client_request_packet_allocate(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET **packet_ptr,
310                                                        UINT wait_option);
311 
312 UINT        nx_web_http_client_request_header_add(NX_WEB_HTTP_CLIENT *client_ptr, CHAR *field_name, UINT name_length,
313                                                   CHAR *field_value, UINT value_length, UINT wait_option);
314 
315 UINT        nx_web_http_client_request_send(NX_WEB_HTTP_CLIENT *client_ptr, ULONG wait_option);
316 
317 UINT        nx_web_http_client_request_packet_send(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET *packet_ptr, UINT more_data, ULONG wait_option);
318 
319 UINT        nx_web_http_client_request_chunked_set(NX_WEB_HTTP_CLIENT *client_ptr, UINT chunk_size, NX_PACKET *packet_ptr);
320 
321 #ifdef NX_WEB_HTTPS_ENABLE
322 
323 UINT        nx_web_http_client_secure_connect(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
324                                               UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
325                                               ULONG wait_option);
326 
327 UINT        nx_web_http_client_get_secure_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource,
328                                                 CHAR *host, CHAR *username, CHAR *password,
329                                                 UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
330                                                 ULONG wait_option);
331 UINT        nx_web_http_client_get_secure_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
332                                                          CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
333                                                          CHAR *username, UINT username_length, CHAR *password, UINT password_length,
334                                                          UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
335                                                          ULONG wait_option);
336 UINT        nx_web_http_client_put_secure_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource,
337                                                 CHAR *host, CHAR *username, CHAR *password, ULONG total_bytes,
338                                                 UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
339                                                 ULONG wait_option);
340 UINT        nx_web_http_client_put_secure_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
341                                                          CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
342                                                          CHAR *username, UINT username_length, CHAR *password, UINT password_length, ULONG total_bytes,
343                                                          UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
344                                                          ULONG wait_option);
345 UINT        nx_web_http_client_post_secure_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource,
346                                                  CHAR *host, CHAR *username, CHAR *password, ULONG total_bytes,
347                                                  UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
348                                                  ULONG wait_option);
349 UINT        nx_web_http_client_post_secure_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
350                                                           CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
351                                                           CHAR *username, UINT username_length, CHAR *password, UINT password_length, ULONG total_bytes,
352                                                           UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
353                                                           ULONG wait_option);
354 UINT        nx_web_http_client_head_secure_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource,
355                                                  CHAR *host, CHAR *username, CHAR *password,
356                                                  UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
357                                                  ULONG wait_option);
358 UINT        nx_web_http_client_head_secure_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
359                                                           CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
360                                                           CHAR *username, UINT username_length, CHAR *password, UINT password_length,
361                                                           UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
362                                                           ULONG wait_option);
363 UINT        nx_web_http_client_delete_secure_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource,
364                                                    CHAR *host, CHAR *username, CHAR *password,
365                                                    UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
366                                                    ULONG wait_option);
367 UINT        nx_web_http_client_delete_secure_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
368                                                             CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
369                                                             CHAR *username, UINT username_length, CHAR *password, UINT password_length,
370                                                             UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
371                                                             ULONG wait_option);
372 
373 #endif
374 #else
375 
376 /* HTTP source code is being compiled, do not perform any API mapping.  */
377 
378 UINT        _nxe_web_http_client_create(NX_WEB_HTTP_CLIENT *client_ptr, CHAR *client_name, NX_IP *ip_ptr, NX_PACKET_POOL *pool_ptr, ULONG window_size, UINT http_client_size);
379 UINT        _nx_web_http_client_create(NX_WEB_HTTP_CLIENT *client_ptr, CHAR *client_name, NX_IP *ip_ptr, NX_PACKET_POOL *pool_ptr, ULONG window_size);
380 UINT        _nxe_web_http_client_delete(NX_WEB_HTTP_CLIENT *client_ptr);
381 UINT        _nx_web_http_client_delete(NX_WEB_HTTP_CLIENT *client_ptr);
382 UINT        _nxe_web_http_client_response_body_get(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET **packet_ptr, ULONG wait_option);
383 UINT        _nx_web_http_client_response_body_get(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET **packet_ptr, ULONG wait_option);
384 UINT        _nxe_web_http_client_put_packet(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET *packet_ptr, ULONG wait_option);
385 UINT        _nx_web_http_client_put_packet(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET *packet_ptr, ULONG wait_option);
386 UINT        _nxe_web_http_client_get_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, CHAR *host, CHAR *username, CHAR *password, ULONG wait_option);
387 UINT        _nx_web_http_client_get_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, CHAR *host, CHAR *username, CHAR *password, ULONG wait_option);
388 UINT        _nxe_web_http_client_get_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip,
389                                                     UINT server_port, CHAR *resource, UINT resource_length,
390                                                     CHAR *host, UINT host_length, CHAR *username,
391                                                     UINT username_length, CHAR *password,
392                                                     UINT password_length, ULONG wait_option);
393 UINT        _nx_web_http_client_get_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip,
394                                                    UINT server_port, CHAR *resource, UINT resource_length,
395                                                    CHAR *host, UINT host_length, CHAR *username,
396                                                    UINT username_length, CHAR *password,
397                                                    UINT password_length, ULONG wait_option);
398 UINT        _nxe_web_http_client_put_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, CHAR *host, CHAR *username, CHAR *password, ULONG total_bytes, ULONG wait_option);
399 UINT        _nx_web_http_client_put_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, CHAR *host, CHAR *username, CHAR *password, ULONG total_bytes, ULONG wait_option);
400 UINT        _nxe_web_http_client_put_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip,
401                                                     UINT server_port, CHAR *resource, UINT resource_length,
402                                                     CHAR *host, UINT host_length, CHAR *username,
403                                                     UINT username_length, CHAR *password,
404                                                     UINT password_length, ULONG total_bytes,
405                                                     ULONG wait_option);
406 UINT        _nx_web_http_client_put_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip,
407                                                    UINT server_port, CHAR *resource, UINT resource_length,
408                                                    CHAR *host, UINT host_length, CHAR *username,
409                                                    UINT username_length, CHAR *password,
410                                                    UINT password_length, ULONG total_bytes,
411                                                    ULONG wait_option);
412 UINT        _nxe_web_http_client_post_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, CHAR *host, CHAR *username, CHAR *password, ULONG total_bytes, ULONG wait_option);
413 UINT        _nx_web_http_client_post_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, CHAR *host, CHAR *username, CHAR *password, ULONG total_bytes, ULONG wait_option);
414 UINT        _nxe_web_http_client_post_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip,
415                                                      UINT server_port, CHAR *resource, UINT resource_length,
416                                                      CHAR *host, UINT host_length, CHAR *username,
417                                                      UINT username_length, CHAR *password,
418                                                      UINT password_length, ULONG total_bytes,
419                                                      ULONG wait_option);
420 UINT        _nx_web_http_client_post_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip,
421                                                     UINT server_port, CHAR *resource, UINT resource_length,
422                                                     CHAR *host, UINT host_length, CHAR *username,
423                                                     UINT username_length, CHAR *password,
424                                                     UINT password_length, ULONG total_bytes,
425                                                     ULONG wait_option);
426 UINT        _nxe_web_http_client_head_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, CHAR *host, CHAR *username, CHAR *password, ULONG wait_option);
427 UINT        _nx_web_http_client_head_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, CHAR *host, CHAR *username, CHAR *password, ULONG wait_option);
428 UINT        _nxe_web_http_client_head_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip,
429                                                      UINT server_port, CHAR *resource, UINT resource_length,
430                                                      CHAR *host, UINT host_length, CHAR *username,
431                                                      UINT username_length, CHAR *password,
432                                                      UINT password_length, ULONG wait_option);
433 UINT        _nx_web_http_client_head_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip,
434                                                     UINT server_port, CHAR *resource, UINT resource_length,
435                                                     CHAR *host, UINT host_length, CHAR *username,
436                                                     UINT username_length, CHAR *password,
437                                                     UINT password_length, ULONG wait_option);
438 UINT        _nxe_web_http_client_delete_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, CHAR *host, CHAR *username, CHAR *password, ULONG wait_option);
439 UINT        _nx_web_http_client_delete_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource, CHAR *host, CHAR *username, CHAR *password, ULONG wait_option);
440 UINT        _nxe_web_http_client_delete_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip,
441                                                        UINT server_port, CHAR *resource, UINT resource_length,
442                                                        CHAR *host, UINT host_length, CHAR *username,
443                                                        UINT username_length, CHAR *password,
444                                                        UINT password_length, ULONG wait_option);
445 UINT        _nx_web_http_client_delete_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip,
446                                                       UINT server_port, CHAR *resource, UINT resource_length,
447                                                       CHAR *host, UINT host_length, CHAR *username,
448                                                       UINT username_length, CHAR *password,
449                                                       UINT password_length, ULONG wait_option);
450 
451 
452 UINT        _nxe_web_http_client_response_header_callback_set(NX_WEB_HTTP_CLIENT *client_ptr,
453                                                               VOID (*callback_function)(NX_WEB_HTTP_CLIENT *client_ptr,
454                                                               CHAR *field_name,
455                                                               UINT field_name_length,
456                                                               CHAR *field_value,
457                                                               UINT field_value_length));
458 UINT        _nx_web_http_client_response_header_callback_set(NX_WEB_HTTP_CLIENT *client_ptr,
459                                                              VOID (*callback_function)(NX_WEB_HTTP_CLIENT *client_ptr,
460                                                              CHAR *field_name,
461                                                              UINT field_name_length,
462                                                              CHAR *field_value,
463                                                              UINT field_value_length));
464 UINT        _nx_web_http_client_connect(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, ULONG wait_option);
465 UINT        _nxe_web_http_client_connect(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, ULONG wait_option);
466 UINT        _nx_web_http_client_request_initialize(NX_WEB_HTTP_CLIENT *client_ptr,
467                                                    UINT method,
468                                                    CHAR *resource,
469                                                    CHAR *host,
470                                                    UINT input_size,
471                                                    UINT transfer_encoding_chunked,
472                                                    CHAR *username,
473                                                    CHAR *password,
474                                                    UINT wait_option);
475 UINT        _nxe_web_http_client_request_initialize(NX_WEB_HTTP_CLIENT *client_ptr,
476                                                     UINT method,
477                                                     CHAR *resource,
478                                                     CHAR *host,
479                                                     UINT input_size,
480                                                     UINT transfer_encoding_chunked,
481                                                     CHAR *username,
482                                                     CHAR *password,
483                                                     UINT wait_option);
484 UINT        _nx_web_http_client_request_initialize_extended(NX_WEB_HTTP_CLIENT *client_ptr,
485                                                             UINT method,
486                                                             CHAR *resource,
487                                                             UINT resource_length,
488                                                             CHAR *host,
489                                                             UINT host_length,
490                                                             UINT input_size,
491                                                             UINT transfer_encoding_chunked,
492                                                             CHAR *username,
493                                                             UINT username_length,
494                                                             CHAR *password,
495                                                             UINT password_length,
496                                                             UINT wait_option);
497 UINT        _nxe_web_http_client_request_initialize_extended(NX_WEB_HTTP_CLIENT *client_ptr,
498                                                              UINT method,
499                                                              CHAR *resource,
500                                                              UINT resource_length,
501                                                              CHAR *host,
502                                                              UINT host_length,
503                                                              UINT input_size,
504                                                              UINT transfer_encoding_chunked,
505                                                              CHAR *username,
506                                                              UINT username_length,
507                                                              CHAR *password,
508                                                              UINT password_length,
509                                                              UINT wait_option);
510 
511 
512 UINT        _nx_web_http_client_request_send(NX_WEB_HTTP_CLIENT *client_ptr, ULONG wait_option);
513 UINT        _nxe_web_http_client_request_send(NX_WEB_HTTP_CLIENT *client_ptr, ULONG wait_option);
514 UINT        _nx_web_http_client_request_packet_allocate(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET **packet_ptr,
515                                                         UINT wait_option);
516 UINT        _nxe_web_http_client_request_packet_allocate(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET **packet_ptr,
517                                                          UINT wait_option);
518 
519 UINT        _nx_web_http_client_request_header_add(NX_WEB_HTTP_CLIENT *client_ptr, CHAR *field_name, UINT name_length,
520                                                    CHAR *field_value, UINT value_length, UINT wait_option);
521 UINT        _nxe_web_http_client_request_header_add(NX_WEB_HTTP_CLIENT *client_ptr, CHAR *field_name, UINT name_length,
522                                                     CHAR *field_value, UINT value_length, UINT wait_option);
523 
524 UINT        _nx_web_http_client_request_packet_send(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET *packet_ptr, UINT more_data, ULONG wait_option);
525 UINT        _nxe_web_http_client_request_packet_send(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET *packet_ptr, UINT more_data, ULONG wait_option);
526 
527 UINT        _nx_web_http_client_request_chunked_set(NX_WEB_HTTP_CLIENT *client_ptr, UINT chunk_size, NX_PACKET *packet_ptr);
528 UINT        _nxe_web_http_client_request_chunked_set(NX_WEB_HTTP_CLIENT *client_ptr, UINT chunk_size, NX_PACKET *packet_ptr);
529 
530 #ifdef NX_WEB_HTTPS_ENABLE
531 UINT        _nx_web_http_client_secure_connect(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
532                                                UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
533                                                ULONG wait_option);
534 UINT        _nxe_web_http_client_secure_connect(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
535                                                 UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
536                                                 ULONG wait_option);
537 UINT        _nxe_web_http_client_get_secure_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource,
538                                                   CHAR *host, CHAR *username, CHAR *password,
539                                                   UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
540                                                   ULONG wait_option);
541 UINT        _nx_web_http_client_get_secure_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource,
542                                                  CHAR *host, CHAR *username, CHAR *password,
543                                                  UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
544                                                  ULONG wait_option);
545 UINT        _nxe_web_http_client_get_secure_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
546                                                            CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
547                                                            CHAR *username, UINT username_length, CHAR *password, UINT password_length,
548                                                            UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
549                                                            ULONG wait_option);
550 UINT        _nx_web_http_client_get_secure_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
551                                                           CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
552                                                           CHAR *username, UINT username_length, CHAR *password, UINT password_length,
553                                                           UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
554                                                           ULONG wait_option);
555 UINT        _nxe_web_http_client_put_secure_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource,
556                                                   CHAR *host, CHAR *username, CHAR *password, ULONG total_bytes,
557                                                   UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
558                                                   ULONG wait_option);
559 UINT        _nx_web_http_client_put_secure_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource,
560                                                  CHAR *host, CHAR *username, CHAR *password, ULONG total_bytes,
561                                                  UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
562                                                  ULONG wait_option);
563 UINT        _nxe_web_http_client_put_secure_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
564                                                            CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
565                                                            CHAR *username, UINT username_length, CHAR *password, UINT password_length, ULONG total_bytes,
566                                                            UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
567                                                            ULONG wait_option);
568 UINT        _nx_web_http_client_put_secure_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
569                                                           CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
570                                                           CHAR *username, UINT username_length, CHAR *password, UINT password_length, ULONG total_bytes,
571                                                           UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
572                                                           ULONG wait_option);
573 UINT        _nxe_web_http_client_post_secure_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource,
574                                                    CHAR *host, CHAR *username, CHAR *password, ULONG total_bytes,
575                                                    UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
576                                                    ULONG wait_option);
577 UINT        _nx_web_http_client_post_secure_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource,
578                                                   CHAR *host, CHAR *username, CHAR *password, ULONG total_bytes,
579                                                   UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
580                                                   ULONG wait_option);
581 UINT        _nxe_web_http_client_post_secure_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
582                                                             CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
583                                                             CHAR *username, UINT username_length, CHAR *password, UINT password_length, ULONG total_bytes,
584                                                             UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
585                                                             ULONG wait_option);
586 UINT        _nx_web_http_client_post_secure_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
587                                                            CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
588                                                            CHAR *username, UINT username_length, CHAR *password, UINT password_length, ULONG total_bytes,
589                                                            UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
590                                                            ULONG wait_option);
591 
592 UINT        _nxe_web_http_client_head_secure_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource,
593                                                 CHAR *host, CHAR *username, CHAR *password,
594                                                 UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
595                                                 ULONG wait_option);
596 UINT        _nx_web_http_client_head_secure_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource,
597                                                 CHAR *host, CHAR *username, CHAR *password,
598                                                 UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
599                                                 ULONG wait_option);
600 UINT        _nxe_web_http_client_head_secure_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
601                                                             CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
602                                                             CHAR *username, UINT username_length, CHAR *password, UINT password_length,
603                                                             UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
604                                                             ULONG wait_option);
605 UINT        _nx_web_http_client_head_secure_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
606                                                            CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
607                                                            CHAR *username, UINT username_length, CHAR *password, UINT password_length,
608                                                            UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
609                                                            ULONG wait_option);
610 UINT        _nxe_web_http_client_delete_secure_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource,
611                                                 CHAR *host, CHAR *username, CHAR *password,
612                                                 UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
613                                                 ULONG wait_option);
614 UINT        _nx_web_http_client_delete_secure_start(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port, CHAR *resource,
615                                                 CHAR *host, CHAR *username, CHAR *password,
616                                                 UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
617                                                 ULONG wait_option);
618 UINT        _nxe_web_http_client_delete_secure_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
619                                                               CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
620                                                               CHAR *username, UINT username_length, CHAR *password, UINT password_length,
621                                                               UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
622                                                               ULONG wait_option);
623 UINT        _nx_web_http_client_delete_secure_start_extended(NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *server_ip, UINT server_port,
624                                                              CHAR *resource, UINT resource_length, CHAR *host, UINT host_length,
625                                                              CHAR *username, UINT username_length, CHAR *password, UINT password_length,
626                                                              UINT (*tls_setup)(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *),
627                                                              ULONG wait_option);
628 
629 
630 
631 #endif
632 
633 /* Define internal HTTP functions.  */
634 
635 UINT        _nx_web_http_client_type_get(CHAR *name, CHAR *http_type_string);
636 UINT        _nx_web_http_client_content_length_get(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET *packet_ptr);
637 UINT        _nx_web_http_client_process_header_fields(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET *packet_ptr);
638 UINT        _nx_web_http_client_number_convert(UINT number, CHAR *string);
639 UINT        _nx_web_http_client_content_type_header_add(NX_WEB_HTTP_CLIENT *client_ptr, CHAR *resource, ULONG wait_option);
640 UINT        _nx_web_http_client_content_length_header_add(NX_WEB_HTTP_CLIENT *client_ptr, ULONG total_bytes, ULONG wait_option);
641 VOID        _nx_web_http_client_error_exit(NX_WEB_HTTP_CLIENT *client_ptr, UINT wait_option);
642 UINT        _nx_web_http_client_receive(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET **packet_ptr, ULONG wait_option);
643 UINT        _nx_web_http_client_send(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET *packet_ptr, ULONG wait_option);
644 UINT        _nx_web_http_client_get_server_response(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET **packet_ptr, ULONG wait_option);
645 VOID        _nx_web_http_client_cleanup(NX_WEB_HTTP_CLIENT *client_ptr);
646 UINT        _nx_web_http_client_memicmp(UCHAR *src, ULONG src_length, UCHAR *dest, ULONG dest_length);
647 UINT        _nx_web_http_client_response_read(NX_WEB_HTTP_CLIENT *client_ptr, UCHAR *data, ULONG wait_option, NX_PACKET **current_packet_pptr, UCHAR **current_data_pptr);
648 UINT        _nx_web_http_client_response_byte_expect(NX_WEB_HTTP_CLIENT *client_ptr, UCHAR data, ULONG wait_option, NX_PACKET **current_packet_pptr, UCHAR **current_data_pptr);
649 UINT        _nx_web_http_client_chunked_size_get(NX_WEB_HTTP_CLIENT *client_ptr, UINT *chunk_size, ULONG wait_option, NX_PACKET **current_packet_pptr, UCHAR **current_data_pptr);
650 UINT        _nx_web_http_client_response_chunked_get(NX_WEB_HTTP_CLIENT *client_ptr, NX_PACKET **packet_pptr, ULONG wait_option);
651 
652 #endif  /* NX_WEB_HTTP_CLIENT_SOURCE_CODE */
653 
654 /* Determine if a C++ compiler is being used.  If so, complete the standard
655    C conditional started above.  */
656 #ifdef   __cplusplus
657         }
658 #endif
659 
660 #endif  /* NX_WEB_HTTP_CLIENT_H */
661