### Function

# Soup headers_parse_request

since: 3.0

#### Declaration [src]

    guint
    soup_headers_parse_request (
      const char* str,
      int len,
      SoupMessageHeaders* req_headers,
      char** req_method,
      char** req_path,
      SoupHTTPVersion* ver
    )

#### Description [src]

Parses the headers of an HTTP request in `str` and stores the results in `req_method`, `req_path`, `ver`, and `req_headers`.

Beware that `req_headers` may be modified even on failure.

Available since: 3.0

#### Parameters

`str`

  Type: `const char*`

  The headers (up to, but not including, the trailing blank line)

  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

`len`

  Type: `int`

  Length of `str`.

`req_headers`

  Type: `SoupMessageHeaders`

  `SoupMessageHeaders` to store the header values in.

  The data is owned by the caller of the function.

`req_method`

  Type: `char**`

  If non-`NULL`, will be filled in with the request method.

  The argument will be set by the function.
  The argument can be `NULL`.
  The caller of the function takes ownership of the data, and is responsible for freeing it.
  The value is a NUL terminated UTF-8 string.

`req_path`

  Type: `char**`

  If non-`NULL`, will be filled in with the request path.

  The argument will be set by the function.
  The argument can be `NULL`.
  The caller of the function takes ownership of the data, and is responsible for freeing it.
  The value is a NUL terminated UTF-8 string.

`ver`

  Type: `SoupHTTPVersion`

  If non-`NULL`, will be filled in with the HTTP version.

  The argument will be set by the function.
  The argument can be `NULL`.
  The caller of the function takes ownership of the data, and is responsible for freeing it.

#### Return value

Type: `guint`

`SOUP_STATUS_OK` if the headers could be parsed, or an HTTP error to be returned to the client if they could not be.