GNU libmicrohttpd 0.9.77
Loading...
Searching...
No Matches
generation of responses

Typedefs

typedef void(* MHD_ContentReaderFreeCallback) (void *cls)
 

Enumerations

enum  MHD_ResponseMemoryMode { MHD_RESPMEM_PERSISTENT , MHD_RESPMEM_MUST_FREE , MHD_RESPMEM_MUST_COPY }
 

Functions

_MHD_EXTERN enum MHD_Result MHD_queue_response (struct MHD_Connection *connection, unsigned int status_code, struct MHD_Response *response)
 
_MHD_EXTERN struct MHD_ResponseMHD_create_response_from_callback (uint64_t size, size_t block_size, MHD_ContentReaderCallback crc, void *crc_cls, MHD_ContentReaderFreeCallback crfc)
 
 _MHD_DEPR_FUNC ("MHD_create_response_from_data() is deprecated, use MHD_create_response_from_buffer()") _MHD_EXTERN struct MHD_Response *MHD_create_response_from_data(size_t size
 
_MHD_EXTERN struct MHD_ResponseMHD_create_response_from_buffer (size_t size, void *buffer, enum MHD_ResponseMemoryMode mode)
 
_MHD_EXTERN struct MHD_ResponseMHD_create_response_from_buffer_with_free_callback (size_t size, void *buffer, MHD_ContentReaderFreeCallback crfc)
 
_MHD_EXTERN struct MHD_ResponseMHD_create_response_from_buffer_with_free_callback_cls (size_t size, void *buffer, MHD_ContentReaderFreeCallback crfc, void *crfc_cls)
 
_MHD_EXTERN struct MHD_ResponseMHD_create_response_from_fd (size_t size, int fd)
 
_MHD_EXTERN struct MHD_ResponseMHD_create_response_from_pipe (int fd)
 
_MHD_EXTERN struct MHD_ResponseMHD_create_response_from_fd64 (uint64_t size, int fd)
 
 _MHD_DEPR_FUNC ("Function MHD_create_response_from_fd_at_offset() is deprecated, use MHD_create_response_from_fd_at_offset64()") _MHD_EXTERN struct MHD_Response *MHD_create_response_from_fd_at_offset(size_t size
 
_MHD_EXTERN struct MHD_ResponseMHD_create_response_from_fd_at_offset64 (uint64_t size, int fd, uint64_t offset)
 
_MHD_EXTERN struct MHD_ResponseMHD_create_response_from_iovec (const struct MHD_IoVec *iov, unsigned int iovcnt, MHD_ContentReaderFreeCallback free_cb, void *cls)
 
_MHD_EXTERN void MHD_destroy_response (struct MHD_Response *response)
 
_MHD_EXTERN enum MHD_Result MHD_add_response_header (struct MHD_Response *response, const char *header, const char *content)
 
_MHD_EXTERN enum MHD_Result MHD_add_response_footer (struct MHD_Response *response, const char *footer, const char *content)
 
_MHD_EXTERN enum MHD_Result MHD_del_response_header (struct MHD_Response *response, const char *header, const char *content)
 
_MHD_EXTERN int MHD_get_response_headers (struct MHD_Response *response, MHD_KeyValueIterator iterator, void *iterator_cls)
 
_MHD_EXTERN const char * MHD_get_response_header (struct MHD_Response *response, const char *key)
 
void MHD_response_queue_for_destroy (struct MHD_Response *response)
 
enum MHD_Bool MHD_response_add_header (struct MHD_Response *response, const char *header, const char *content)
 
enum MHD_Bool MHD_response_add_trailer (struct MHD_Response *response, const char *footer, const char *content)
 
enum MHD_Bool MHD_response_del_header (struct MHD_Response *response, const char *header, const char *content)
 
unsigned int MHD_response_get_headers (struct MHD_Response *response, MHD_KeyValueIterator iterator, void *iterator_cls)
 
const char * MHD_response_get_header (struct MHD_Response *response, const char *key)
 
struct MHD_ResponseMHD_response_from_buffer (enum MHD_HTTP_StatusCode sc, size_t size, void *buffer, enum MHD_ResponseMemoryMode mode)
 
struct MHD_ResponseMHD_response_from_callback (enum MHD_HTTP_StatusCode sc, uint64_t size, size_t block_size, MHD_ContentReaderCallback crc, void *crc_cls, MHD_ContentReaderFreeCallback crfc)
 
struct MHD_ResponseMHD_response_from_fd (enum MHD_HTTP_StatusCode sc, int fd, uint64_t offset, uint64_t size)
 
struct MHD_HTTP_HeaderMHD_get_response_element_n_ (struct MHD_Response *response, enum MHD_ValueKind kind, const char *key, size_t key_len)
 
struct MHD_ResponseMHD_create_response_from_fd_at_offset (size_t size, int fd, off_t offset)
 
struct MHD_ResponseMHD_create_response_from_data (size_t size, void *data, int must_free, int must_copy)
 

Detailed Description

MHD API used to generate responses.

Typedef Documentation

◆ MHD_ContentReaderFreeCallback

typedef void(* MHD_ContentReaderFreeCallback) (void *cls)

This method is called by libmicrohttpd if we are done with a content reader. It should be used to free resources associated with the content reader.

Parameters
clsclosure

Definition at line 2612 of file microhttpd.h.

Enumeration Type Documentation

◆ MHD_ResponseMemoryMode

Specification for how MHD should treat the memory buffer given for the response.

Enumerator
MHD_RESPMEM_PERSISTENT 

Buffer is a persistent (static/global) buffer that won't change for at least the lifetime of the response, MHD should just use it, not free it, not copy it, just keep an alias to it.

MHD_RESPMEM_MUST_FREE 

Buffer is heap-allocated with malloc() (or equivalent) and should be freed by MHD after processing the response has concluded (response reference counter reaches zero).

MHD_RESPMEM_MUST_COPY 

Buffer is in transient memory, but not on the heap (for example, on the stack or non-malloc() allocated) and only valid during the call to MHD_create_response_from_buffer. MHD must make its own private copy of the data for processing.

Definition at line 3438 of file microhttpd.h.

Function Documentation

◆ _MHD_DEPR_FUNC() [1/2]

_MHD_DEPR_FUNC ( "Function MHD_create_response_from_fd_at_offset() is  deprecated,
use MHD_create_response_from_fd_at_offset64()"   
)

Create a response object with the content of provided file with specified offset used as the response body.

The response object can be extended with header information and then be used any number of times.

If response object is used to answer HEAD request then the body of the response is not used, while all headers (including automatic headers) are used.

Parameters
sizesize of the data portion of the response
fdfile descriptor referring to a file on disk with the data; will be closed when response is destroyed; fd should be in 'blocking' mode
offsetoffset to start reading from in the file; Be careful! off_t may have been compiled to be a 64-bit variable for MHD, in which case your application also has to be compiled using the same options! Read the MHD manual for more details.
Returns
NULL on error (i.e. invalid arguments, out of memory)

◆ _MHD_DEPR_FUNC() [2/2]

_MHD_DEPR_FUNC ( "MHD_create_response_from_data() is  deprecated,
use MHD_create_response_from_buffer()"   
)

Create a response object. The response object can be extended with header information and then be used any number of times.

Parameters
sizesize of the data portion of the response
datathe data itself
must_freelibmicrohttpd should free data when done
must_copylibmicrohttpd must make a copy of data right away, the data may be released anytime after this call returns
Returns
NULL on error (i.e. invalid arguments, out of memory)

◆ MHD_add_response_footer()

enum MHD_Result MHD_add_response_footer ( struct MHD_Response response,
const char *  footer,
const char *  content 
)

Add a footer line to the response.

Parameters
responseresponse to remove a header from
footerthe footer to delete
contentvalue to delete
Returns
MHD_NO on error (i.e. invalid footer or content format).

Definition at line 571 of file response.c.

References add_response_entry(), and MHD_FOOTER_KIND.

Here is the call graph for this function:

◆ MHD_add_response_header()

enum MHD_Result MHD_add_response_header ( struct MHD_Response response,
const char *  header,
const char *  content 
)

Add a header line to the response.

When reply is generated with queued response, some headers are generated automatically. Automatically generated headers are only sent to the client, but not added back to the response object.

The list of automatic headers:

  • "Date" header is added automatically unless already set by this function
    See also
    MHD_USE_SUPPRESS_DATE_NO_CLOCK
  • "Content-Length" is added automatically when required, attempt to set it manually by this function is ignored.
    See also
    MHD_RF_INSANITY_HEADER_CONTENT_LENGTH
  • "Transfer-Encoding" with value "chunked" is added automatically, when chunked transfer encoding is used automatically. Same header with the same value can be set manually by this function to enforce chunked encoding, however for HTTP/1.0 clients chunked encoding will not be used and manually set "Transfer-Encoding" header is automatically removed for HTTP/1.0 clients
  • "Connection" may be added automatically with value "Keep-Alive" (only for HTTP/1.0 clients) or "Close". The header "Connection" with value "Close" could be set by this function to enforce closure of the connection after sending this response. "Keep-Alive" cannot be enforced and will be removed automatically.
    See also
    MHD_RF_SEND_KEEP_ALIVE_HEADER
    Some headers are pre-processed by this function:
  • "Connection" headers are combined into single header entry, value is normilised, "Keep-Alive" tokens are removed.
  • "Transfer-Encoding" header: the only one header is allowed, the only allowed value is "chunked".
  • "Date" header: the only one header is allowed, the second added header replaces the first one.
  • "Content-Length" application-defined header is not allowed.
    See also
    MHD_RF_INSANITY_HEADER_CONTENT_LENGTH
    Headers are used in order as they were added.
Parameters
responsethe response to add a header to
headerthe header name to add, no need to be static, an internal copy will be created automatically
contentthe header value to add, no need to be static, an internal copy will be created automatically
Returns
MHD_YES on success, MHD_NO on error (i.e. invalid header or content format), or out of memory

Definition at line 493 of file response.c.

References _MHD_remove_header, add_response_entry(), add_response_header_connection(), MHD_Response::flags, MHD_Response::flags_auto, MHD_HTTP_Header::header, mhd_assert, MHD_get_response_element_n_(), MHD_HEADER_KIND, MHD_HTTP_HEADER_CONNECTION, MHD_HTTP_HEADER_CONTENT_LENGTH, MHD_HTTP_HEADER_DATE, MHD_HTTP_HEADER_TRANSFER_ENCODING, MHD_NO, MHD_RAF_HAS_DATE_HDR, MHD_RAF_HAS_TRANS_ENC_CHUNKED, MHD_RF_INSANITY_HEADER_CONTENT_LENGTH, MHD_STATICSTR_LEN_, MHD_str_equal_caseless_(), MHD_YES, NULL, and MHD_HTTP_Header::value.

Referenced by MHD_queue_auth_fail_response2(), and MHD_queue_basic_auth_fail_response().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MHD_create_response_from_buffer()

struct MHD_Response * MHD_create_response_from_buffer ( size_t  size,
void *  buffer,
enum MHD_ResponseMemoryMode  mode 
)

Create a response object with the content of provided buffer used as the response body.

The response object can be extended with header information and then be used any number of times.

If response object is used to answer HEAD request then the body of the response is not used, while all headers (including automatic headers) are used.

Parameters
sizesize of the data portion of the response
buffersize bytes containing the response's data portion
modeflags for buffer management
Returns
NULL on error (i.e. invalid arguments, out of memory)

Definition at line 1312 of file response.c.

References MHD_create_response_from_data(), MHD_RESPMEM_MUST_COPY, and MHD_RESPMEM_MUST_FREE.

Referenced by transmit_error_response_len().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MHD_create_response_from_buffer_with_free_callback()

_MHD_EXTERN struct MHD_Response * MHD_create_response_from_buffer_with_free_callback ( size_t  size,
void *  buffer,
MHD_ContentReaderFreeCallback  crfc 
)

Create a response object with the content of provided buffer used as the response body.

The response object can be extended with header information and then be used any number of times.

If response object is used to answer HEAD request then the body of the response is not used, while all headers (including automatic headers) are used.

Parameters
sizesize of the data portion of the response
buffersize bytes containing the response's data portion
crfcfunction to call to free the buffer
Returns
NULL on error (i.e. invalid arguments, out of memory)
Note
Available since MHD_VERSION 0x00096000

Create a response object with the content of provided buffer used as the response body.

The response object can be extended with header information and then be used any number of times.

If response object is used to answer HEAD request then the body of the response is not used, while all headers (including automatic headers) are used.

Parameters
sizesize of the data portion of the response
buffersize bytes containing the response's data portion
crfcfunction to call to free the buffer
Returns
NULL on error (i.e. invalid arguments, out of memory)

Definition at line 1341 of file response.c.

References MHD_Response::crfc, MHD_create_response_from_data(), MHD_NO, MHD_YES, and NULL.

Referenced by MHD_create_response_from_buffer_with_free_callback_cls().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MHD_create_response_from_buffer_with_free_callback_cls()

_MHD_EXTERN struct MHD_Response * MHD_create_response_from_buffer_with_free_callback_cls ( size_t  size,
void *  buffer,
MHD_ContentReaderFreeCallback  crfc,
void *  crfc_cls 
)

Create a response object with the content of provided buffer used as the response body.

The response object can be extended with header information and then be used any number of times.

If response object is used to answer HEAD request then the body of the response is not used, while all headers (including automatic headers) are used.

Parameters
sizesize of the data portion of the response
buffersize bytes containing the response's data portion
crfcfunction to call to cleanup, if set to NULL then callback is not called
crfc_clsan argument for crfc
Returns
NULL on error (i.e. invalid arguments, out of memory)
Note
Available since MHD_VERSION 0x00097302

Definition at line 1380 of file response.c.

References MHD_Response::crc_cls, MHD_Response::crfc, MHD_create_response_from_buffer_with_free_callback(), and NULL.

Here is the call graph for this function:

◆ MHD_create_response_from_callback()

struct MHD_Response * MHD_create_response_from_callback ( uint64_t  size,
size_t  block_size,
MHD_ContentReaderCallback  crc,
void *  crc_cls,
MHD_ContentReaderFreeCallback  crfc 
)

Create a response object. The response object can be extended with header information and then be used any number of times.

Parameters
sizesize of the data portion of the response, MHD_SIZE_UNKNOWN for unknown
block_sizepreferred block size for querying crc (advisory only, MHD may still call crc using smaller chunks); this is essentially the buffer size used for IO, clients should pick a value that is appropriate for IO and memory performance requirements
crccallback to use to obtain response data
crc_clsextra argument to crc
crfccallback to call to free crc_cls resources
Returns
NULL on error (i.e. invalid arguments, out of memory)

Definition at line 825 of file response.c.

References MHD_Response::crc, MHD_Response::crc_cls, MHD_Response::crfc, MHD_Response::data, MHD_Response::data_buffer_size, MHD_Response::fd, MHD_calloc_(), MHD_mutex_init_, MHD_Response::mutex, NULL, MHD_Response::reference_count, and MHD_Response::total_size.

Referenced by MHD_create_response_from_fd_at_offset64(), and MHD_create_response_from_pipe().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MHD_create_response_from_data()

struct MHD_Response * MHD_create_response_from_data ( size_t  size,
void *  data,
int  must_free,
int  must_copy 
)

Create a response object with the content of provided buffer used as the response body.

The response object can be extended with header information and then be used any number of times.

If response object is used to answer HEAD request then the body of the response is not used, while all headers (including automatic headers) are used.

Parameters
sizesize of the data portion of the response
datathe data itself
must_freelibmicrohttpd should free data when done
must_copylibmicrohttpd must make a copy of data right away, the data maybe released anytime after this call returns
Returns
NULL on error (i.e. invalid arguments, out of memory)

Definition at line 1241 of file response.c.

References MHD_Response::crc_cls, MHD_Response::crfc, data, MHD_Response::data, MHD_Response::data_buffer_size, MHD_Response::data_size, MHD_Response::fd, MHD_calloc_(), MHD_mutex_destroy_chk_, MHD_mutex_init_, MHD_SIZE_UNKNOWN, MHD_YES, must_copy, must_free, MHD_Response::mutex, NULL, MHD_Response::reference_count, and MHD_Response::total_size.

Referenced by MHD_create_response_from_buffer(), and MHD_create_response_from_buffer_with_free_callback().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MHD_create_response_from_fd()

struct MHD_Response * MHD_create_response_from_fd ( size_t  size,
int  fd 
)

Create a response object with the content of provided file used as the response body.

The response object can be extended with header information and then be used any number of times.

If response object is used to answer HEAD request then the body of the response is not used, while all headers (including automatic headers) are used.

Parameters
sizesize of the data portion of the response
fdfile descriptor referring to a file on disk with the data; will be closed when response is destroyed; fd should be in 'blocking' mode
Returns
NULL on error (i.e. invalid arguments, out of memory)

Create a response object with the content of provided file used as the response body.

The response object can be extended with header information and then be used any number of times.

If response object is used to answer HEAD request then the body of the response is not used, while all headers (including automatic headers) are used.

Parameters
sizesize of the data portion of the response
fdfile descriptor referring to a file on disk with the data
Returns
NULL on error (i.e. invalid arguments, out of memory)

Definition at line 1180 of file response.c.

References fd, and MHD_create_response_from_fd_at_offset64().

Here is the call graph for this function:

◆ MHD_create_response_from_fd64()

_MHD_EXTERN struct MHD_Response * MHD_create_response_from_fd64 ( uint64_t  size,
int  fd 
)

Create a response object with the content of provided file used as the response body.

The response object can be extended with header information and then be used any number of times.

If response object is used to answer HEAD request then the body of the response is not used, while all headers (including automatic headers) are used.

Parameters
sizesize of the data portion of the response; sizes larger than 2 GiB may be not supported by OS or MHD build; see MHD_FEATURE_LARGE_FILE
fdfile descriptor referring to a file on disk with the data; will be closed when response is destroyed; fd should be in 'blocking' mode
Returns
NULL on error (i.e. invalid arguments, out of memory)

Definition at line 1210 of file response.c.

References fd, and MHD_create_response_from_fd_at_offset64().

Here is the call graph for this function:

◆ MHD_create_response_from_fd_at_offset()

struct MHD_Response * MHD_create_response_from_fd_at_offset ( size_t  size,
int  fd,
off_t  offset 
)

Create a response object with the content of provided file with specified offset used as the response body.

The response object can be extended with header information and then be used any number of times.

If response object is used to answer HEAD request then the body of the response is not used, while all headers (including automatic headers) are used.

Parameters
sizesize of the data portion of the response
fdfile descriptor referring to a file on disk with the data; will be closed when response is destroyed; fd should be in 'blocking' mode
offsetoffset to start reading from in the file; Be careful! off_t may have been compiled to be a 64-bit variable for MHD, in which case your application also has to be compiled using the same options! Read the MHD manual for more details.
Returns
NULL on error (i.e. invalid arguments, out of memory)

Definition at line 1060 of file response.c.

References fd, MHD_create_response_from_fd_at_offset64(), and offset.

Here is the call graph for this function:

◆ MHD_create_response_from_fd_at_offset64()

_MHD_EXTERN struct MHD_Response * MHD_create_response_from_fd_at_offset64 ( uint64_t  size,
int  fd,
uint64_t  offset 
)

Create a response object with the content of provided file with specified offset used as the response body.

The response object can be extended with header information and then be used any number of times.

If response object is used to answer HEAD request then the body of the response is not used, while all headers (including automatic headers) are used.

Parameters
sizesize of the data portion of the response; sizes larger than 2 GiB may be not supported by OS or MHD build; see MHD_FEATURE_LARGE_FILE
fdfile descriptor referring to a file on disk with the data; will be closed when response is destroyed; fd should be in 'blocking' mode
offsetoffset to start reading from in the file; reading file beyond 2 GiB may be not supported by OS or MHD build; see MHD_FEATURE_LARGE_FILE
Returns
NULL on error (i.e. invalid arguments, out of memory)

Definition at line 1094 of file response.c.

References MHD_Response::crc_cls, fd, MHD_Response::fd, MHD_Response::fd_off, file_reader(), free_callback(), INT32_MAX, MHD_Response::is_pipe, MHD_create_response_from_callback(), MHD_FILE_READ_BLOCK_SIZE, NULL, and offset.

Referenced by MHD_create_response_from_fd(), MHD_create_response_from_fd64(), and MHD_create_response_from_fd_at_offset().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MHD_create_response_from_iovec()

_MHD_EXTERN struct MHD_Response * MHD_create_response_from_iovec ( const struct MHD_IoVec iov,
unsigned int  iovcnt,
MHD_ContentReaderFreeCallback  free_cb,
void *  cls 
)

Create a response object with an array of memory buffers used as the response body.

The response object can be extended with header information and then be used any number of times.

If response object is used to answer HEAD request then the body of the response is not used, while all headers (including automatic headers) are used.

Parameters
iovthe array for response data buffers, an internal copy of this will be made
iovcntthe number of elements in iov
free_cbthe callback to clean up any data associated with iov when the response is destroyed.
clsthe argument passed to free_cb
Returns
NULL on error (i.e. invalid arguments, out of memory)
Note
Available since MHD_VERSION 0x00097204

Create a response object with an array of memory buffers used as the response body.

The response object can be extended with header information and then be used any number of times.

If response object is used to answer HEAD request then the body of the response is not used, while all headers (including automatic headers) are used.

Parameters
iovthe array for response data buffers, an internal copy of this will be made
iovcntthe number of elements in iov
free_cbthe callback to clean up any data associated with iov when the response is destroyed.
clsthe argument passed to free_cb
Returns
NULL on error (i.e. invalid arguments, out of memory)

< Index in the copy of iov

Definition at line 1417 of file response.c.

References MHD_Response::crc_cls, MHD_Response::crfc, MHD_Response::data, MHD_Response::data_iov, MHD_Response::data_iovcnt, MHD_Response::data_size, MHD_Response::fd, MHD_IoVec::iov_base, MHD_IoVec::iov_len, mhd_assert, MHD_calloc_(), MHD_IOV_ELMN_MAX_SIZE, MHD_mutex_destroy_chk_, MHD_mutex_init_, MHD_Response::mutex, NULL, MHD_Response::reference_count, SSIZE_MAX, and MHD_Response::total_size.

Here is the call graph for this function:

◆ MHD_create_response_from_pipe()

_MHD_EXTERN struct MHD_Response * MHD_create_response_from_pipe ( int  fd)

Create a response object with the response body created by reading the provided pipe.

The response object can be extended with header information and then be used ONLY ONCE.

If response object is used to answer HEAD request then the body of the response is not used, while all headers (including automatic headers) are used.

Parameters
fdfile descriptor referring to a read-end of a pipe with the data; will be closed when response is destroyed; fd should be in 'blocking' mode
Returns
NULL on error (i.e. invalid arguments, out of memory)
Note
Available since MHD_VERSION 0x00097102

Create a response object with the response body created by reading the provided pipe.

The response object can be extended with header information and then be used ONLY ONCE.

If response object is used to answer HEAD request then the body of the response is not used, while all headers (including automatic headers) are used.

Parameters
fdfile descriptor referring to a read-end of a pipe with the data; will be closed when response is destroyed; fd should be in 'blocking' mode
Returns
NULL on error (i.e. invalid arguments, out of memory)

Definition at line 1145 of file response.c.

References MHD_Response::crc_cls, fd, MHD_Response::fd, free_callback(), MHD_Response::is_pipe, MHD_create_response_from_callback(), MHD_FILE_READ_BLOCK_SIZE, MHD_SIZE_UNKNOWN, NULL, and pipe_reader().

Here is the call graph for this function:

◆ MHD_del_response_header()

enum MHD_Result MHD_del_response_header ( struct MHD_Response response,
const char *  header,
const char *  content 
)

Delete a header (or footer) line from the response.

For "Connection" headers this function remove all tokens from existing value. Successful result means that at least one token has been removed. If all tokens are removed from "Connection" header, the empty "Connection" header removed.

Parameters
responseresponse to remove a header from
headerthe header to delete
contentvalue to delete
Returns
MHD_NO on error (no such header known)

Definition at line 597 of file response.c.

References _MHD_remove_header, del_response_header_connection(), MHD_Response::first_header, MHD_Response::flags_auto, MHD_HTTP_Header::header, MHD_HTTP_Header::header_size, MHD_HTTP_HEADER_CONNECTION, MHD_HTTP_HEADER_DATE, MHD_HTTP_HEADER_TRANSFER_ENCODING, MHD_NO, MHD_RAF_HAS_CONNECTION_HDR, MHD_RAF_HAS_DATE_HDR, MHD_RAF_HAS_TRANS_ENC_CHUNKED, MHD_STATICSTR_LEN_, MHD_str_equal_caseless_bin_n_(), MHD_YES, MHD_HTTP_Header::next, NULL, MHD_HTTP_Header::value, and MHD_HTTP_Header::value_size.

Here is the call graph for this function:

◆ MHD_destroy_response()

void MHD_destroy_response ( struct MHD_Response response)

Destroy a response object and associated resources. Note that libmicrohttpd may keep some of the resources around if the response is still in the queue for some clients, so the memory may not necessarily be freed immediately.

Parameters
responseresponse to destroy

Definition at line 1966 of file response.c.

References MHD_Response::crc_cls, MHD_Response::crfc, MHD_Response::data_iov, MHD_Response::first_header, MHD_HTTP_Header::header, MHD_mutex_destroy_chk_, MHD_mutex_lock_chk_, MHD_mutex_unlock_chk_, MHD_Response::mutex, MHD_HTTP_Header::next, NULL, MHD_Response::reference_count, and MHD_HTTP_Header::value.

Referenced by cleanup_connection(), connection_reset(), MHD_cleanup_connections(), MHD_connection_close_(), MHD_connection_handle_idle(), and transmit_error_response_len().

Here is the caller graph for this function:

◆ MHD_get_response_element_n_()

struct MHD_HTTP_Header * MHD_get_response_element_n_ ( struct MHD_Response response,
enum MHD_ValueKind  kind,
const char *  key,
size_t  key_len 
)

Get a particular header (or footer) element from the response.

Function returns the first found element.

Parameters
responseresponse to query
kindthe kind of element: header or footer
keythe key which header to get
key_lenthe length of the key
Returns
NULL if header element does not exist

Definition at line 732 of file response.c.

References MHD_Response::first_header, MHD_HTTP_Header::header, MHD_HTTP_Header::header_size, MHD_HTTP_Header::kind, mhd_assert, MHD_str_equal_caseless_bin_n_(), MHD_HTTP_Header::next, and NULL.

Referenced by add_response_header_connection(), del_response_header_connection(), and MHD_add_response_header().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MHD_get_response_header()

const char * MHD_get_response_header ( struct MHD_Response response,
const char *  key 
)

Get a particular header (or footer) from the response.

Parameters
responseresponse to query
keywhich header to get
Returns
NULL if header does not exist

Definition at line 698 of file response.c.

References MHD_Response::first_header, MHD_HTTP_Header::header, MHD_HTTP_Header::header_size, MHD_str_equal_caseless_bin_n_(), MHD_HTTP_Header::next, NULL, and MHD_HTTP_Header::value.

Here is the call graph for this function:

◆ MHD_get_response_headers()

int MHD_get_response_headers ( struct MHD_Response response,
MHD_KeyValueIterator  iterator,
void *  iterator_cls 
)

Get all of the headers (and footers) added to a response.

Parameters
responseresponse to query
iteratorcallback to call on each header; may be NULL (then just count headers)
iterator_clsextra argument to iterator
Returns
number of entries iterated over

Get all of the headers (and footers) added to a response.

Parameters
responseresponse to query
iteratorcallback to call on each header; maybe NULL (then just count headers)
iterator_clsextra argument to iterator
Returns
number of entries iterated over

Definition at line 666 of file response.c.

References MHD_Response::first_header, MHD_HTTP_Header::header, MHD_HTTP_Header::kind, MHD_NO, MHD_HTTP_Header::next, NULL, and MHD_HTTP_Header::value.

◆ MHD_queue_response()

enum MHD_Result MHD_queue_response ( struct MHD_Connection connection,
unsigned int  status_code,
struct MHD_Response response 
)

Queue a response to be transmitted to the client (as soon as possible but after MHD_AccessHandlerCallback returns).

For any active connection this function must be called only by MHD_AccessHandlerCallback callback. For suspended connection this function can be called at any moment. Response will be sent as soon as connection is resumed.

Parameters
connectionthe connection identifying the client
status_codeHTTP status code (i.e. MHD_HTTP_OK)
responseresponse to transmit
Returns
MHD_NO on error (i.e. reply already sent), MHD_YES on success or if message has been queued
See also
MHD_AccessHandlerCallback

Definition at line 5078 of file connection.c.

References _, MHD_Connection::daemon, MHD_Connection::discard_request, MHD_Response::fd, MHD_Response::first_header, MHD_Response::flags, MHD_Response::flags_auto, MHD_HTTP_Header::header, MHD_Connection::http_mthd, MHD_Connection::http_ver, MHD_Connection::in_idle, MHD_Response::is_pipe, MHD_ALLOW_UPGRADE, mhd_assert, MHD_CONNECTION_FULL_REQ_RECEIVED, MHD_connection_handle_idle(), MHD_CONNECTION_HEADERS_PROCESSED, MHD_CONNECTION_START_REPLY, MHD_HTTP_HEADER_CONNECTION, MHD_HTTP_MTHD_HEAD, MHD_HTTP_NO_CONTENT, MHD_HTTP_NOT_MODIFIED, MHD_HTTP_OK, MHD_HTTP_SWITCHING_PROTOCOLS, MHD_HTTP_VER_1_0, MHD_ICY_FLAG, MHD_increment_response_rc(), MHD_IS_HTTP_VER_1_1_COMPAT, MHD_NO, MHD_RAF_HAS_CONNECTION_HDR, MHD_RF_HTTP_1_0_COMPATIBLE_STRICT, MHD_RF_HTTP_1_0_SERVER, MHD_SEND_SPIPE_SUPPRESS_NEEDED, MHD_str_equal_caseless_(), MHD_str_has_s_token_caseless_, MHD_update_last_activity_(), MHD_USE_INTERNAL_POLLING_THREAD, MHD_USE_TLS, MHD_YES, NULL, MHD_Daemon::options, MHD_Connection::pid, MHD_Connection::remaining_upload_size, MHD_Connection::response, MHD_Connection::response_write_position, MHD_Connection::responseCode, MHD_Daemon::shutdown, MHD_Daemon::sigpipe_blocked, MHD_Connection::sk_spipe_suppress, MHD_Connection::state, MHD_Connection::suspended, MHD_Response::total_size, and MHD_HTTP_Header::value.

Referenced by MHD_queue_auth_fail_response2(), MHD_queue_basic_auth_fail_response(), and transmit_error_response_len().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MHD_response_add_header()

enum MHD_Bool MHD_response_add_header ( struct MHD_Response response,
const char *  header,
const char *  content 
)

Add a header line to the response.

Parameters
responseresponse to add a header to
headerthe header to add
contentvalue to add
Returns
MHD_NO on error (i.e. invalid header or content format), or out of memory

Definition at line 125 of file response.c.

References add_response_entry(), MHD_HTTP_Header::header, MHD_HEADER_KIND, MHD_NO, and MHD_YES.

Referenced by MHD_response_for_upgrade().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MHD_response_add_trailer()

enum MHD_Bool MHD_response_add_trailer ( struct MHD_Response response,
const char *  footer,
const char *  content 
)

Add a tailer line to the response.

Parameters
responseresponse to add a footer to
footerthe footer to add
contentvalue to add
Returns
MHD_NO on error (i.e. invalid footer or content format), or out of memory

Definition at line 147 of file response.c.

References add_response_entry(), MHD_FOOTER_KIND, MHD_NO, and MHD_YES.

Here is the call graph for this function:

◆ MHD_response_del_header()

enum MHD_Bool MHD_response_del_header ( struct MHD_Response response,
const char *  header,
const char *  content 
)

Delete a header (or footer) line from the response.

Parameters
responseresponse to remove a header from
headerthe header to delete
contentvalue to delete
Returns
MHD_NO on error (no such header known)

Definition at line 168 of file response.c.

References MHD_Response::first_header, MHD_HTTP_Header::header, MHD_NO, MHD_YES, MHD_HTTP_Header::next, NULL, MHD_HTTP_Header::prev, and MHD_HTTP_Header::value.

◆ MHD_response_from_buffer()

struct MHD_Response * MHD_response_from_buffer ( enum MHD_HTTP_StatusCode  sc,
size_t  size,
void *  buffer,
enum MHD_ResponseMemoryMode  mode 
)

Create a response object. The response object can be extended with header information and then be used any number of times.

Parameters
scstatus code to use for the response; MHD_HTTP_NO_CONTENT is only valid if size is 0;
sizesize of the data portion of the response
buffersize bytes containing the response's data portion
modeflags for buffer management
Returns
NULL on error (i.e. invalid arguments, out of memory)

Definition at line 41 of file response_from_buffer.c.

References MHD_Response::crc_cls, MHD_Response::crfc, MHD_Response::data, MHD_Response::data_size, MHD_Response::fd, mhd_assert, MHD_calloc_(), MHD_mutex_destroy_chk_, MHD_mutex_init_, MHD_RESPMEM_MUST_COPY, MHD_RESPMEM_PERSISTENT, MHD_Response::mutex, NULL, MHD_Response::reference_count, MHD_Response::status_code, and MHD_Response::total_size.

Referenced by parse_request_headers(), and transmit_error_response().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MHD_response_from_callback()

struct MHD_Response * MHD_response_from_callback ( enum MHD_HTTP_StatusCode  sc,
uint64_t  size,
size_t  block_size,
MHD_ContentReaderCallback  crc,
void *  crc_cls,
MHD_ContentReaderFreeCallback  crfc 
)

Create a response action. The response object can be extended with header information and then be used any number of times.

Parameters
scstatus code to return
sizesize of the data portion of the response, MHD_SIZE_UNKNOWN for unknown
block_sizepreferred block size for querying crc (advisory only, MHD may still call crc using smaller chunks); this is essentially the buffer size used for IO, clients should pick a value that is appropriate for IO and memory performance requirements
crccallback to use to obtain response data
crc_clsextra argument to crc
crfccallback to call to free crc_cls resources
Returns
NULL on error (i.e. invalid arguments, out of memory)

Definition at line 46 of file response_from_callback.c.

References MHD_Response::crc, MHD_Response::crc_cls, MHD_Response::crfc, MHD_Response::data, MHD_Response::data_buffer_size, MHD_Response::fd, mhd_assert, MHD_calloc_(), MHD_mutex_init_, MHD_Response::mutex, NULL, MHD_Response::reference_count, MHD_Response::status_code, and MHD_Response::total_size.

Referenced by MHD_response_from_fd().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MHD_response_from_fd()

struct MHD_Response * MHD_response_from_fd ( enum MHD_HTTP_StatusCode  sc,
int  fd,
uint64_t  offset,
uint64_t  size 
)

Create a response object based on an fd from which data is read. The response object can be extended with header information and then be used any number of times.

Parameters
scstatus code to return
fdfile descriptor referring to a file on disk with the data; will be closed when response is destroyed; fd should be in 'blocking' mode
offsetoffset to start reading from in the file; reading file beyond 2 GiB may be not supported by OS or MHD build; see MHD_FEATURE_LARGE_FILE
sizesize of the data portion of the response; sizes larger than 2 GiB may be not supported by OS or MHD build; see MHD_FEATURE_LARGE_FILE
Returns
NULL on error (i.e. invalid arguments, out of memory)

Definition at line 176 of file response_from_fd.c.

References MHD_Response::crc_cls, fd, MHD_Response::fd, MHD_Response::fd_off, file_reader(), free_callback(), INT32_MAX, mhd_assert, MHD_FILE_READ_BLOCK_SIZE, MHD_response_from_callback(), NULL, and offset.

Here is the call graph for this function:

◆ MHD_response_get_header()

const char * MHD_response_get_header ( struct MHD_Response response,
const char *  key 
)

Get a particular header (or footer) from the response.

Parameters
responseresponse to query
keywhich header to get
Returns
NULL if header does not exist

Definition at line 243 of file response.c.

References MHD_Response::first_header, MHD_HTTP_Header::header, MHD_str_equal_caseless_(), MHD_HTTP_Header::next, NULL, and MHD_HTTP_Header::value.

Referenced by build_header_response().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MHD_response_get_headers()

unsigned int MHD_response_get_headers ( struct MHD_Response response,
MHD_KeyValueIterator  iterator,
void *  iterator_cls 
)

Get all of the headers (and footers) added to a response.

Parameters
responseresponse to query
iteratorcallback to call on each header; maybe NULL (then just count headers)
iterator_clsextra argument to iterator
Returns
number of entries iterated over

Definition at line 211 of file response.c.

References MHD_Response::first_header, MHD_HTTP_Header::header, MHD_HTTP_Header::kind, MHD_YES, MHD_HTTP_Header::next, NULL, and MHD_HTTP_Header::value.

◆ MHD_response_queue_for_destroy()

void MHD_response_queue_for_destroy ( struct MHD_Response response)

Explicitly decrease reference counter of a response object. If the counter hits zero, destroys a response object and associated resources. Usually, this is implicitly done by converting a response to an action and returning the action to MHD.

Parameters
responseresponse to decrement RC of

Definition at line 88 of file response.c.

References MHD_Response::crc_cls, MHD_Response::crfc, MHD_Response::first_header, MHD_HTTP_Header::header, MHD_mutex_destroy_chk_, MHD_mutex_lock_chk_, MHD_mutex_unlock_chk_, MHD_Response::mutex, MHD_HTTP_Header::next, NULL, MHD_Response::reference_count, and MHD_HTTP_Header::value.

Referenced by cleanup_connection(), MHD_connection_cleanup_(), MHD_connection_close_(), MHD_request_handle_idle_(), MHD_response_for_upgrade(), thread_main_handle_connection(), and transmit_error_response().

Here is the caller graph for this function: