### Function

# Soup websocket_server_process_handshake

#### Declaration [src]

    gboolean
    soup_websocket_server_process_handshake (
      SoupServerMessage* msg,
      const char* expected_origin,
      char** protocols,
      GPtrArray* supported_extensions,
      GList** accepted_extensions
    )

#### Description [src]

Examines the method and request headers in `msg` and (assuming `msg` contains a valid handshake request), fills in the handshake response.

If `expected_origin` is non-`NULL`, then only requests containing a matching “Origin” header will be accepted. If `protocols` is non-`NULL`, then only requests containing a compatible “Sec-WebSocket-Protocols” header will be accepted. If `supported_extensions` is non-`NULL`, then only requests containing valid supported extensions in “Sec-WebSocket-Extensions” header will be accepted. The accepted extensions will be returned in `accepted_extensions` parameter if non-`NULL`.

This is a low-level function; if you use `soup_server_add_websocket_handler()` to handle accepting WebSocket connections, it will call this for you.

#### Parameters

`msg` | `SoupServerMessage`
| `SoupServerMessage` containing the client side of a WebSocket handshake.
| The data is owned by the caller of the function.
`expected_origin` | `const char*`
| Expected Origin header.
| The argument can be `NULL`.
| The data is owned by the caller of the function.
| The value is a NUL terminated UTF-8 string.
`protocols` | An array of `char*`
| Allowed WebSocket protocols.
| The argument can be `NULL`.
| The array must be `NULL`-terminated.
| The data is owned by the caller of the function.
| Each element is a NUL terminated UTF-8 string.
`supported_extensions` | An array of `None`
| List of supported extension types.
| The argument can be `NULL`.
| The data is owned by the caller of the function.
`accepted_extensions` | A list of `None`
| A `GList` of `SoupWebsocketExtension` objects.
| The argument will be set by the function.
| The argument can be `NULL`.
| The called function takes ownership of the data, and is responsible for freeing it.

#### Return value

Returns: | `gboolean`
| `TRUE` if `msg` contained a valid WebSocket handshake request and was updated to contain a handshake response. `FALSE` if not.