Next: , Previous: , Up: Top   [Contents][Index]

7 Handling requests

Function: int MHD_get_connection_values (struct MHD_Connection *connection, enum MHD_ValueKind kind, MHD_KeyValueIterator iterator, void *iterator_cls)

Get all the headers matching kind from the request. The kind argument can be a bitmask, ORing the various header kinds that are requested.

The iterator callback is invoked once for each header, with iterator_cls as first argument. After version 0.9.19, the headers are iterated in the same order as they were received from the network; previous versions iterated over the headers in reverse order.

MHD_get_connection_values returns the number of entries iterated over; this can be less than the number of headers if, while iterating, iterator returns MHD_NO.

iterator can be NULL: in this case this function just counts and returns the number of headers.

In the case of MHD_GET_ARGUMENT_KIND, the value argument will be NULL if the URL contained a key without an equals operator. For example, for a HTTP request to the URL “http://foo/bar?key”, the value argument is NULL; in contrast, a HTTP request to the URL “http://foo/bar?key=”, the value argument is the empty string. The normal case is that the URL contains “http://foo/bar?key=value” in which case value would be the string “value” and key would contain the string “key”.

Function: int MHD_set_connection_value (struct MHD_Connection *connection, enum MHD_ValueKind kind, const char *key, const char *value)

This function can be used to append an entry to the list of HTTP headers of a connection (so that the MHD_get_connection_values function will return them – and the MHD PostProcessor will also see them). This maybe required in certain situations (see Mantis #1399) where (broken) HTTP implementations fail to supply values needed by the post processor (or other parts of the application).

This function MUST only be called from within the MHD_AccessHandlerCallback (otherwise, access maybe improperly synchronized). Furthermore, the client must guarantee that the key and value arguments are 0-terminated strings that are NOT freed until the connection is closed. (The easiest way to do this is by passing only arguments to permanently allocated strings.).

connection is the connection for which the entry for key of the given kind should be set to the given value.

The function returns MHD_NO if the operation could not be performed due to insufficient memory and MHD_YES on success.

Function: const char * MHD_lookup_connection_value (struct MHD_Connection *connection, enum MHD_ValueKind kind, const char *key)

Get a particular header value. If multiple values match the kind, return one of them (the “first”, whatever that means). key must reference a zero-terminated ASCII-coded string representing the header to look for: it is compared against the headers using strcasecmp(), so case is ignored. A value of NULL for key can be used to lookup ’trailing’ values without a key, for example if a URI is of the form “”, a key of NULL can be used to access “tailer" The function returns NULL if no matching item was found.

Next: , Previous: , Up: Top   [Contents][Index]