1
0
mirror of https://github.com/moparisthebest/curl synced 2024-08-13 17:03:50 -04:00

http2: s/priority/weight

This commit is contained in:
Daniel Stenberg 2015-10-21 22:47:24 +02:00
parent 419d410ca0
commit d31ed6ac71
8 changed files with 28 additions and 23 deletions

View File

@ -53,4 +53,4 @@ Added in 7.46.0
.SH RETURN VALUE .SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO" .SH "SEE ALSO"
.BR CURLOPT_STREAM_PRIORITY "(3), " CURLOPT_STREAM_DEPENDS_E "(3), " .BR CURLOPT_STREAM_WEIGHT "(3), " CURLOPT_STREAM_DEPENDS_E "(3), "

View File

@ -56,4 +56,4 @@ Added in 7.46.0
.SH RETURN VALUE .SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO" .SH "SEE ALSO"
.BR CURLOPT_STREAM_PRIORITY "(3), " CURLOPT_STREAM_DEPENDS "(3), " .BR CURLOPT_STREAM_WEIGHT "(3), " CURLOPT_STREAM_DEPENDS "(3), "

View File

@ -20,23 +20,25 @@
.\" * .\" *
.\" ************************************************************************** .\" **************************************************************************
.\" .\"
.TH CURLOPT_STREAM_PRIORITY 3 "13 Sep 2015" "libcurl 7.46.0" "curl_easy_setopt options" .TH CURLOPT_STREAM_WEIGHT 3 "13 Sep 2015" "libcurl 7.46.0" "curl_easy_setopt options"
.SH NAME .SH NAME
CURLOPT_STREAM_PRIORITY \- set numerical stream priority CURLOPT_STREAM_WEIGHT \- set numerical stream priority
.SH SYNOPSIS .SH SYNOPSIS
#include <curl/curl.h> #include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_PRIORITY, long prio); CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_WEIGHT, long prio);
.SH DESCRIPTION .SH DESCRIPTION
Set the long \fIprio\fP to a number between 1 and 256. Set the long \fIprio\fP to a number between 1 and 256.
For protocols with priorities on streams, such as HTTP/2, this option can be When using HTTP/2, this option can be used to set an individual weight for
used to set an individual priority for this particular stream used by the easy this particular stream used by the easy \fIhandle\fP. Setting and using
\fIhandle\fP. Setting and using priorities really only makes sense and is only weights really only makes sense and is only usable when doing multiple streams
usable when doing multiple streams over the same connections, which thus over the same connections, which thus implies that you use
implies that you use \fICURLMOPT_PIPELINING(3)\fP. \fICURLMOPT_PIPELINING(3)\fP.
This option can be set during transfer. This option can be set during transfer and will then cause the updated weight
info get sent to the server the next time a HTTP/2 frame is sent to the
server.
See section 5.3 of RFC 7540 for protocol details: See section 5.3 of RFC 7540 for protocol details:
https://httpwg.github.io/specs/rfc7540.html#StreamPriority https://httpwg.github.io/specs/rfc7540.html#StreamPriority

View File

@ -526,6 +526,9 @@ CURLOPT_SSL_VERIFYHOST 7.8.1
CURLOPT_SSL_VERIFYPEER 7.4.2 CURLOPT_SSL_VERIFYPEER 7.4.2
CURLOPT_SSL_VERIFYSTATUS 7.41.0 CURLOPT_SSL_VERIFYSTATUS 7.41.0
CURLOPT_STDERR 7.1 CURLOPT_STDERR 7.1
CURLOPT_STREAM_DEPENDS 7.46.0
CURLOPT_STREAM_DEPENDS_E 7.46.0
CURLOPT_STREAM_WEIGHT 7.46.0
CURLOPT_TCP_KEEPALIVE 7.25.0 CURLOPT_TCP_KEEPALIVE 7.25.0
CURLOPT_TCP_KEEPIDLE 7.25.0 CURLOPT_TCP_KEEPIDLE 7.25.0
CURLOPT_TCP_KEEPINTVL 7.25.0 CURLOPT_TCP_KEEPINTVL 7.25.0
@ -677,8 +680,8 @@ CURL_GLOBAL_SSL 7.8
CURL_GLOBAL_WIN32 7.8.1 CURL_GLOBAL_WIN32 7.8.1
CURL_HTTP_VERSION_1_0 7.9.1 CURL_HTTP_VERSION_1_0 7.9.1
CURL_HTTP_VERSION_1_1 7.9.1 CURL_HTTP_VERSION_1_1 7.9.1
CURL_HTTP_VERSION_2_0 7.33.0
CURL_HTTP_VERSION_2 7.43.0 CURL_HTTP_VERSION_2 7.43.0
CURL_HTTP_VERSION_2_0 7.33.0
CURL_HTTP_VERSION_NONE 7.9.1 CURL_HTTP_VERSION_NONE 7.9.1
CURL_IPRESOLVE_V4 7.10.8 CURL_IPRESOLVE_V4 7.10.8
CURL_IPRESOLVE_V6 7.10.8 CURL_IPRESOLVE_V6 7.10.8

View File

@ -1648,8 +1648,8 @@ typedef enum {
/* Set the protocol used when curl is given a URL without a protocol */ /* Set the protocol used when curl is given a URL without a protocol */
CINIT(DEFAULT_PROTOCOL, OBJECTPOINT, 238), CINIT(DEFAULT_PROTOCOL, OBJECTPOINT, 238),
/* Set stream priority, 1 - 256 */ /* Set stream weight, 1 - 256 (default is 16) */
CINIT(STREAM_PRIORITY, LONG, 239), CINIT(STREAM_WEIGHT, LONG, 239),
/* Set stream dependency on another CURL handle */ /* Set stream dependency on another CURL handle */
CINIT(STREAM_DEPENDS, OBJECTPOINT, 240), CINIT(STREAM_DEPENDS, OBJECTPOINT, 240),

View File

@ -52,7 +52,7 @@
*/ */
void Curl_http2_init_state(struct UrlState *state) void Curl_http2_init_state(struct UrlState *state)
{ {
state->stream_prio = NGHTTP2_DEFAULT_WEIGHT; state->stream_weight = NGHTTP2_DEFAULT_WEIGHT;
} }
/* /*
@ -61,7 +61,7 @@ void Curl_http2_init_state(struct UrlState *state)
*/ */
void Curl_http2_init_userset(struct UserDefined *set) void Curl_http2_init_userset(struct UserDefined *set)
{ {
set->stream_prio = NGHTTP2_DEFAULT_WEIGHT; set->stream_weight = NGHTTP2_DEFAULT_WEIGHT;
} }
static int http2_perform_getsock(const struct connectdata *conn, static int http2_perform_getsock(const struct connectdata *conn,
@ -1013,9 +1013,9 @@ static void h2_pri_spec(struct SessionHandle *data,
struct HTTP *depstream = (data->set.stream_depends_on? struct HTTP *depstream = (data->set.stream_depends_on?
data->set.stream_depends_on->req.protop:NULL); data->set.stream_depends_on->req.protop:NULL);
int32_t depstream_id = depstream? depstream->stream_id:0; int32_t depstream_id = depstream? depstream->stream_id:0;
nghttp2_priority_spec_init(pri_spec, depstream_id, data->set.stream_prio, nghttp2_priority_spec_init(pri_spec, depstream_id, data->set.stream_weight,
data->set.stream_depends_e); data->set.stream_depends_e);
data->state.stream_prio = data->set.stream_prio; data->state.stream_weight = data->set.stream_weight;
data->state.stream_depends_e = data->set.stream_depends_e; data->state.stream_depends_e = data->set.stream_depends_e;
data->state.stream_depends_on = data->set.stream_depends_on; data->state.stream_depends_on = data->set.stream_depends_on;
} }
@ -1029,7 +1029,7 @@ static int h2_session_send(struct SessionHandle *data,
nghttp2_session *h2) nghttp2_session *h2)
{ {
struct HTTP *stream = data->req.protop; struct HTTP *stream = data->req.protop;
if((data->set.stream_prio != data->state.stream_prio) || if((data->set.stream_weight != data->state.stream_weight) ||
(data->set.stream_depends_e != data->state.stream_depends_e) || (data->set.stream_depends_e != data->state.stream_depends_e) ||
(data->set.stream_depends_on != data->state.stream_depends_on) ) { (data->set.stream_depends_on != data->state.stream_depends_on) ) {
/* send new weight and/or dependency */ /* send new weight and/or dependency */

View File

@ -2663,13 +2663,13 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
case CURLOPT_PIPEWAIT: case CURLOPT_PIPEWAIT:
data->set.pipewait = (0 != va_arg(param, long))?TRUE:FALSE; data->set.pipewait = (0 != va_arg(param, long))?TRUE:FALSE;
break; break;
case CURLOPT_STREAM_PRIORITY: case CURLOPT_STREAM_WEIGHT:
#ifndef USE_NGHTTP2 #ifndef USE_NGHTTP2
return CURLE_NOT_BUILT_IN; return CURLE_NOT_BUILT_IN;
#else #else
arg = va_arg(param, long); arg = va_arg(param, long);
if((arg>=1) && (arg <= 256)) if((arg>=1) && (arg <= 256))
data->set.stream_prio = (int)arg; data->set.stream_weight = (int)arg;
break; break;
#endif #endif
case CURLOPT_STREAM_DEPENDS: case CURLOPT_STREAM_DEPENDS:

View File

@ -1340,7 +1340,7 @@ struct UrlState {
struct SessionHandle *stream_depends_on; struct SessionHandle *stream_depends_on;
bool stream_depends_e; /* set or don't set the Exclusive bit */ bool stream_depends_e; /* set or don't set the Exclusive bit */
int stream_prio; int stream_weight;
}; };
@ -1660,7 +1660,7 @@ struct UserDefined {
struct SessionHandle *stream_depends_on; struct SessionHandle *stream_depends_on;
bool stream_depends_e; /* set or don't set the Exclusive bit */ bool stream_depends_e; /* set or don't set the Exclusive bit */
int stream_prio; int stream_weight;
}; };
struct Names { struct Names {