# nghttp2_submit_altsvc

## Synopsis

#include <nghttp2/nghttp2.h>

int nghttp2_submit_altsvc(nghttp2_session *session, uint8_t flags, int32_t stream_id, const uint8_t *origin, size_t origin_len, const uint8_t *field_value, size_t field_value_len)

  Submits ALTSVC frame.

  ALTSVC frame is a non-critical extension to HTTP/2, and defined in RFC 7383.

  The flags is currently ignored and should be `nghttp2_flag.NGHTTP2_FLAG_NONE`.

  The origin points to the origin this alternative service is associated with. The origin_len is the length of the origin. If stream_id is 0, the origin must be specified. If stream_id is not zero, the origin must be empty (in other words, origin_len must be 0).

  The ALTSVC frame is only usable from server side. If this function is invoked with client side session, this function returns `nghttp2_error.NGHTTP2_ERR_INVALID_STATE`.

  This function returns 0 if it succeeds, or one of the following negative error codes:

  `nghttp2_error.NGHTTP2_ERR_NOMEM`

    Out of memory

  `nghttp2_error.NGHTTP2_ERR_INVALID_STATE`

    The function is called from client side session

  `nghttp2_error.NGHTTP2_ERR_INVALID_ARGUMENT`

    The sum of origin_len and field_value_len is larger than 16382; or origin_len is 0 while stream_id is 0; or origin_len is not 0 while stream_id is not 0.