コード例 #1
0
ファイル: nghttp2_submit.c プロジェクト: jujis008/nghttp2
int nghttp2_submit_response(nghttp2_session *session, int32_t stream_id,
                            const nghttp2_nv *nva, size_t nvlen,
                            const nghttp2_data_provider *data_prd) {
  uint8_t flags = set_response_flags(data_prd);
  return submit_headers_shared_nva(session, flags, stream_id, NULL, nva, nvlen,
                                   data_prd, NULL);
}
コード例 #2
0
ファイル: nghttp2_submit.c プロジェクト: 10jschen/nghttp2
int32_t nghttp2_submit_request(nghttp2_session *session,
                               const nghttp2_priority_spec *pri_spec,
                               const nghttp2_nv *nva, size_t nvlen,
                               const nghttp2_data_provider *data_prd,
                               void *stream_user_data) {
  uint8_t flags;
  int rv;

  if (session->server) {
    return NGHTTP2_ERR_PROTO;
  }

  if (pri_spec && !nghttp2_priority_spec_check_default(pri_spec)) {
    rv = detect_self_dependency(session, -1, pri_spec);
    if (rv != 0) {
      return rv;
    }
  } else {
    pri_spec = NULL;
  }

  flags = set_request_flags(pri_spec, data_prd);

  return submit_headers_shared_nva(session, flags, -1, pri_spec, nva, nvlen,
                                   data_prd, stream_user_data);
}
コード例 #3
0
ファイル: nghttp2_submit.c プロジェクト: 10jschen/nghttp2
int32_t nghttp2_submit_headers(nghttp2_session *session, uint8_t flags,
                               int32_t stream_id,
                               const nghttp2_priority_spec *pri_spec,
                               const nghttp2_nv *nva, size_t nvlen,
                               void *stream_user_data) {
  int rv;

  if (stream_id == -1) {
    if (session->server) {
      return NGHTTP2_ERR_PROTO;
    }
  } else if (stream_id <= 0) {
    return NGHTTP2_ERR_INVALID_ARGUMENT;
  }

  flags &= NGHTTP2_FLAG_END_STREAM;

  if (pri_spec && !nghttp2_priority_spec_check_default(pri_spec)) {
    rv = detect_self_dependency(session, stream_id, pri_spec);
    if (rv != 0) {
      return rv;
    }

    flags |= NGHTTP2_FLAG_PRIORITY;
  } else {
    pri_spec = NULL;
  }

  return submit_headers_shared_nva(session, flags, stream_id, pri_spec, nva,
                                   nvlen, NULL, stream_user_data);
}
コード例 #4
0
ファイル: nghttp2_submit.c プロジェクト: 10jschen/nghttp2
int nghttp2_submit_trailer(nghttp2_session *session, int32_t stream_id,
                           const nghttp2_nv *nva, size_t nvlen) {
  if (stream_id <= 0) {
    return NGHTTP2_ERR_INVALID_ARGUMENT;
  }

  return (int)submit_headers_shared_nva(session, NGHTTP2_FLAG_END_STREAM,
                                        stream_id, NULL, nva, nvlen, NULL,
                                        NULL);
}
コード例 #5
0
ファイル: nghttp2_submit.c プロジェクト: jujis008/nghttp2
int32_t nghttp2_submit_request(nghttp2_session *session,
                               const nghttp2_priority_spec *pri_spec,
                               const nghttp2_nv *nva, size_t nvlen,
                               const nghttp2_data_provider *data_prd,
                               void *stream_user_data) {
  uint8_t flags;

  if (pri_spec && nghttp2_priority_spec_check_default(pri_spec)) {
    pri_spec = NULL;
  }

  flags = set_request_flags(pri_spec, data_prd);

  return submit_headers_shared_nva(session, flags, -1, pri_spec, nva, nvlen,
                                   data_prd, stream_user_data);
}
コード例 #6
0
ファイル: nghttp2_submit.c プロジェクト: jujis008/nghttp2
int32_t nghttp2_submit_headers(nghttp2_session *session, uint8_t flags,
                               int32_t stream_id,
                               const nghttp2_priority_spec *pri_spec,
                               const nghttp2_nv *nva, size_t nvlen,
                               void *stream_user_data) {
  flags &= NGHTTP2_FLAG_END_STREAM;

  if (pri_spec && !nghttp2_priority_spec_check_default(pri_spec)) {
    flags |= NGHTTP2_FLAG_PRIORITY;
  } else {
    pri_spec = NULL;
  }

  return submit_headers_shared_nva(session, flags, stream_id, pri_spec, nva,
                                   nvlen, NULL, stream_user_data);
}
コード例 #7
0
ファイル: nghttp2_submit.c プロジェクト: 10jschen/nghttp2
int nghttp2_submit_response(nghttp2_session *session, int32_t stream_id,
                            const nghttp2_nv *nva, size_t nvlen,
                            const nghttp2_data_provider *data_prd) {
  uint8_t flags;

  if (stream_id <= 0) {
    return NGHTTP2_ERR_INVALID_ARGUMENT;
  }

  if (!session->server) {
    return NGHTTP2_ERR_PROTO;
  }

  flags = set_response_flags(data_prd);
  return submit_headers_shared_nva(session, flags, stream_id, NULL, nva, nvlen,
                                   data_prd, NULL);
}
コード例 #8
0
ファイル: nghttp2_submit.c プロジェクト: 0xfffffff7/nghttp2
int32_t nghttp2_submit_trailer(nghttp2_session *session, int32_t stream_id,
                               const nghttp2_nv *nva, size_t nvlen) {
  return submit_headers_shared_nva(session, NGHTTP2_FLAG_END_STREAM, stream_id,
                                   NULL, nva, nvlen, NULL, NULL, 0);
}