From d31ed6ac719cd3c7c1dcac5f9000b19536087b7e Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 21 Oct 2015 22:47:24 +0200 Subject: http2: s/priority/weight --- docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 | 2 +- docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 | 2 +- docs/libcurl/opts/CURLOPT_STREAM_PRIORITY.3 | 56 --------------------------- docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 | 58 ++++++++++++++++++++++++++++ docs/libcurl/symbols-in-versions | 5 ++- include/curl/curl.h | 4 +- lib/http2.c | 10 ++--- lib/url.c | 4 +- lib/urldata.h | 4 +- 9 files changed, 75 insertions(+), 70 deletions(-) delete mode 100644 docs/libcurl/opts/CURLOPT_STREAM_PRIORITY.3 create mode 100644 docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 diff --git a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 index f3dcff31d..081a73250 100644 --- a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 +++ b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 @@ -53,4 +53,4 @@ Added in 7.46.0 .SH RETURN VALUE Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. .SH "SEE ALSO" -.BR CURLOPT_STREAM_PRIORITY "(3), " CURLOPT_STREAM_DEPENDS_E "(3), " +.BR CURLOPT_STREAM_WEIGHT "(3), " CURLOPT_STREAM_DEPENDS_E "(3), " diff --git a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 index 1684c369d..1b3fbfa1c 100644 --- a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 +++ b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 @@ -56,4 +56,4 @@ Added in 7.46.0 .SH RETURN VALUE Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. .SH "SEE ALSO" -.BR CURLOPT_STREAM_PRIORITY "(3), " CURLOPT_STREAM_DEPENDS "(3), " +.BR CURLOPT_STREAM_WEIGHT "(3), " CURLOPT_STREAM_DEPENDS "(3), " diff --git a/docs/libcurl/opts/CURLOPT_STREAM_PRIORITY.3 b/docs/libcurl/opts/CURLOPT_STREAM_PRIORITY.3 deleted file mode 100644 index 4b0f16a95..000000000 --- a/docs/libcurl/opts/CURLOPT_STREAM_PRIORITY.3 +++ /dev/null @@ -1,56 +0,0 @@ -.\" ************************************************************************** -.\" * _ _ ____ _ -.\" * Project ___| | | | _ \| | -.\" * / __| | | | |_) | | -.\" * | (__| |_| | _ <| |___ -.\" * \___|\___/|_| \_\_____| -.\" * -.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, , et al. -.\" * -.\" * This software is licensed as described in the file COPYING, which -.\" * you should have received as part of this distribution. The terms -.\" * are also available at http://curl.haxx.se/docs/copyright.html. -.\" * -.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell -.\" * copies of the Software, and permit persons to whom the Software is -.\" * furnished to do so, under the terms of the COPYING file. -.\" * -.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -.\" * KIND, either express or implied. -.\" * -.\" ************************************************************************** -.\" -.TH CURLOPT_STREAM_PRIORITY 3 "13 Sep 2015" "libcurl 7.46.0" "curl_easy_setopt options" -.SH NAME -CURLOPT_STREAM_PRIORITY \- set numerical stream priority -.SH SYNOPSIS -#include - -CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_PRIORITY, long prio); -.SH DESCRIPTION -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 -used to set an individual priority for this particular stream used by the easy -\fIhandle\fP. Setting and using priorities really only makes sense and is only -usable when doing multiple streams over the same connections, which thus -implies that you use \fICURLMOPT_PIPELINING(3)\fP. - -This option can be set during transfer. - -See section 5.3 of RFC 7540 for protocol details: -https://httpwg.github.io/specs/rfc7540.html#StreamPriority -.SH DEFAULT -If nothing is set, the HTTP/2 protocol itself will use its own default which -is 16. -.SH PROTOCOLS -HTTP/2 -.SH EXAMPLE -TODO -.SH AVAILABILITY -Added in 7.46.0 -.SH RETURN VALUE -Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. -.SH "SEE ALSO" -.BR CURLOPT_STREAM_DEPENDS "(3), " CURLOPT_STREAM_DEPENDS_E "(3), " -.BR CURLOPT_PIPEWAIT "(3), " CURLMOPT_PIPELINING "(3), " diff --git a/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 b/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 new file mode 100644 index 000000000..c292c02e3 --- /dev/null +++ b/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 @@ -0,0 +1,58 @@ +.\" ************************************************************************** +.\" * _ _ ____ _ +.\" * Project ___| | | | _ \| | +.\" * / __| | | | |_) | | +.\" * | (__| |_| | _ <| |___ +.\" * \___|\___/|_| \_\_____| +.\" * +.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, , et al. +.\" * +.\" * This software is licensed as described in the file COPYING, which +.\" * you should have received as part of this distribution. The terms +.\" * are also available at http://curl.haxx.se/docs/copyright.html. +.\" * +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell +.\" * copies of the Software, and permit persons to whom the Software is +.\" * furnished to do so, under the terms of the COPYING file. +.\" * +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +.\" * KIND, either express or implied. +.\" * +.\" ************************************************************************** +.\" +.TH CURLOPT_STREAM_WEIGHT 3 "13 Sep 2015" "libcurl 7.46.0" "curl_easy_setopt options" +.SH NAME +CURLOPT_STREAM_WEIGHT \- set numerical stream priority +.SH SYNOPSIS +#include + +CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_WEIGHT, long prio); +.SH DESCRIPTION +Set the long \fIprio\fP to a number between 1 and 256. + +When using HTTP/2, this option can be used to set an individual weight for +this particular stream used by the easy \fIhandle\fP. Setting and using +weights really only makes sense and is only usable when doing multiple streams +over the same connections, which thus implies that you use +\fICURLMOPT_PIPELINING(3)\fP. + +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: +https://httpwg.github.io/specs/rfc7540.html#StreamPriority +.SH DEFAULT +If nothing is set, the HTTP/2 protocol itself will use its own default which +is 16. +.SH PROTOCOLS +HTTP/2 +.SH EXAMPLE +TODO +.SH AVAILABILITY +Added in 7.46.0 +.SH RETURN VALUE +Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. +.SH "SEE ALSO" +.BR CURLOPT_STREAM_DEPENDS "(3), " CURLOPT_STREAM_DEPENDS_E "(3), " +.BR CURLOPT_PIPEWAIT "(3), " CURLMOPT_PIPELINING "(3), " diff --git a/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions index 5f6d7e504..732ad19ed 100644 --- a/docs/libcurl/symbols-in-versions +++ b/docs/libcurl/symbols-in-versions @@ -526,6 +526,9 @@ CURLOPT_SSL_VERIFYHOST 7.8.1 CURLOPT_SSL_VERIFYPEER 7.4.2 CURLOPT_SSL_VERIFYSTATUS 7.41.0 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_KEEPIDLE 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_HTTP_VERSION_1_0 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_0 7.33.0 CURL_HTTP_VERSION_NONE 7.9.1 CURL_IPRESOLVE_V4 7.10.8 CURL_IPRESOLVE_V6 7.10.8 diff --git a/include/curl/curl.h b/include/curl/curl.h index 5ea3d4ce9..86692bbb7 100644 --- a/include/curl/curl.h +++ b/include/curl/curl.h @@ -1648,8 +1648,8 @@ typedef enum { /* Set the protocol used when curl is given a URL without a protocol */ CINIT(DEFAULT_PROTOCOL, OBJECTPOINT, 238), - /* Set stream priority, 1 - 256 */ - CINIT(STREAM_PRIORITY, LONG, 239), + /* Set stream weight, 1 - 256 (default is 16) */ + CINIT(STREAM_WEIGHT, LONG, 239), /* Set stream dependency on another CURL handle */ CINIT(STREAM_DEPENDS, OBJECTPOINT, 240), diff --git a/lib/http2.c b/lib/http2.c index 87d4a19ec..261e7f98d 100644 --- a/lib/http2.c +++ b/lib/http2.c @@ -52,7 +52,7 @@ */ 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) { - set->stream_prio = NGHTTP2_DEFAULT_WEIGHT; + set->stream_weight = NGHTTP2_DEFAULT_WEIGHT; } 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? data->set.stream_depends_on->req.protop:NULL); 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->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_on = data->set.stream_depends_on; } @@ -1029,7 +1029,7 @@ static int h2_session_send(struct SessionHandle *data, nghttp2_session *h2) { 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_on != data->state.stream_depends_on) ) { /* send new weight and/or dependency */ diff --git a/lib/url.c b/lib/url.c index 866fee2eb..94b906d77 100644 --- a/lib/url.c +++ b/lib/url.c @@ -2663,13 +2663,13 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option, case CURLOPT_PIPEWAIT: data->set.pipewait = (0 != va_arg(param, long))?TRUE:FALSE; break; - case CURLOPT_STREAM_PRIORITY: + case CURLOPT_STREAM_WEIGHT: #ifndef USE_NGHTTP2 return CURLE_NOT_BUILT_IN; #else arg = va_arg(param, long); if((arg>=1) && (arg <= 256)) - data->set.stream_prio = (int)arg; + data->set.stream_weight = (int)arg; break; #endif case CURLOPT_STREAM_DEPENDS: diff --git a/lib/urldata.h b/lib/urldata.h index 7d6025cb5..6ddf15e37 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -1340,7 +1340,7 @@ struct UrlState { struct SessionHandle *stream_depends_on; 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; bool stream_depends_e; /* set or don't set the Exclusive bit */ - int stream_prio; + int stream_weight; }; struct Names { -- cgit v1.2.1