From ffebc20f6d6dff925df4fbd2e16c32b7e1e51806 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 21 Feb 2023 17:48:46 -0800 Subject: [PATCH] vendor: update github.com/VictoriaMetrics/fasthttp from v1.1.0 to v1.2.0 The v1.2.0 adds HostClient.DoCtx() function, which is needed by https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3747 for implementing fast canceling of pending requests to scrape targets on config update --- go.mod | 2 +- go.sum | 4 +- .../VictoriaMetrics/fasthttp/bytesconv_32.go | 1 + .../VictoriaMetrics/fasthttp/bytesconv_64.go | 1 + .../VictoriaMetrics/fasthttp/client.go | 41 ++++++++-- .../VictoriaMetrics/fasthttp/compress.go | 40 +++++----- .../VictoriaMetrics/fasthttp/doc.go | 77 ++++++++++++------- .../github.com/VictoriaMetrics/fasthttp/fs.go | 31 ++++---- .../VictoriaMetrics/fasthttp/header.go | 16 ++-- .../VictoriaMetrics/fasthttp/http.go | 64 +++++++-------- .../VictoriaMetrics/fasthttp/server.go | 53 +++++++------ .../VictoriaMetrics/fasthttp/tcpdialer.go | 44 +++++------ .../VictoriaMetrics/fasthttp/uri.go | 38 ++++----- .../VictoriaMetrics/fasthttp/uri_unix.go | 1 + .../VictoriaMetrics/fasthttp/uri_windows.go | 1 + vendor/modules.txt | 4 +- 16 files changed, 232 insertions(+), 186 deletions(-) diff --git a/go.mod b/go.mod index fb162011a..e1e903c7b 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( // Do not use the original github.com/valyala/fasthttp because of issues // like https://github.com/valyala/fasthttp/commit/996610f021ff45fdc98c2ce7884d5fa4e7f9199b - github.com/VictoriaMetrics/fasthttp v1.1.0 + github.com/VictoriaMetrics/fasthttp v1.2.0 github.com/VictoriaMetrics/metrics v1.23.1 github.com/VictoriaMetrics/metricsql v0.56.1 github.com/aws/aws-sdk-go-v2 v1.17.4 diff --git a/go.sum b/go.sum index 2136b23f8..e5a78ea24 100644 --- a/go.sum +++ b/go.sum @@ -64,8 +64,8 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/Microsoft/go-winio v0.5.1 h1:aPJp2QD7OOrhO5tQXqQoGSJc+DjDtWTGLOmNyAm6FgY= github.com/VictoriaMetrics/fastcache v1.12.0 h1:vnVi/y9yKDcD9akmc4NqAoqgQhJrOwUF+j9LTgn4QDE= github.com/VictoriaMetrics/fastcache v1.12.0/go.mod h1:tjiYeEfYXCqacuvYw/7UoDIeJaNxq6132xHICNP77w8= -github.com/VictoriaMetrics/fasthttp v1.1.0 h1:3crd4YWHsMwu60GUXRH6OstowiFvqrwS4a/ueoLdLL0= -github.com/VictoriaMetrics/fasthttp v1.1.0/go.mod h1:/7DMcogqd+aaD3G3Hg5kFgoFwlR2uydjiWvoLp5ZTqQ= +github.com/VictoriaMetrics/fasthttp v1.2.0 h1:nd9Wng4DlNtaI27WlYh5mGXCJOmee/2c2blTJwfyU9I= +github.com/VictoriaMetrics/fasthttp v1.2.0/go.mod h1:zv5YSmasAoSyv8sBVexfArzFDIGGTN4TfCKAtAw7IfE= github.com/VictoriaMetrics/metrics v1.18.1/go.mod h1:ArjwVz7WpgpegX/JpB0zpNF2h2232kErkEnzH1sxMmA= github.com/VictoriaMetrics/metrics v1.23.1 h1:/j8DzeJBxSpL2qSIdqnRFLvQQhbJyJbbEi22yMm7oL0= github.com/VictoriaMetrics/metrics v1.23.1/go.mod h1:rAr/llLpEnAdTehiNlUxKgnjcOuROSzpw0GvjpEbvFc= diff --git a/vendor/github.com/VictoriaMetrics/fasthttp/bytesconv_32.go b/vendor/github.com/VictoriaMetrics/fasthttp/bytesconv_32.go index 143775474..6b527f9c8 100644 --- a/vendor/github.com/VictoriaMetrics/fasthttp/bytesconv_32.go +++ b/vendor/github.com/VictoriaMetrics/fasthttp/bytesconv_32.go @@ -1,3 +1,4 @@ +//go:build !amd64 && !arm64 && !ppc64 // +build !amd64,!arm64,!ppc64 package fasthttp diff --git a/vendor/github.com/VictoriaMetrics/fasthttp/bytesconv_64.go b/vendor/github.com/VictoriaMetrics/fasthttp/bytesconv_64.go index 09d07ef10..870549e19 100644 --- a/vendor/github.com/VictoriaMetrics/fasthttp/bytesconv_64.go +++ b/vendor/github.com/VictoriaMetrics/fasthttp/bytesconv_64.go @@ -1,3 +1,4 @@ +//go:build amd64 || arm64 || ppc64 // +build amd64 arm64 ppc64 package fasthttp diff --git a/vendor/github.com/VictoriaMetrics/fasthttp/client.go b/vendor/github.com/VictoriaMetrics/fasthttp/client.go index 64b194df7..a88e56cc5 100644 --- a/vendor/github.com/VictoriaMetrics/fasthttp/client.go +++ b/vendor/github.com/VictoriaMetrics/fasthttp/client.go @@ -3,6 +3,7 @@ package fasthttp import ( "bufio" "bytes" + "context" "crypto/tls" "errors" "fmt" @@ -872,17 +873,40 @@ func (c *HostClient) DoDeadline(req *Request, resp *Response, deadline time.Time return clientDoDeadline(req, resp, deadline, c) } +// DoCtx performs the given request and waits for response until +// the given context is cancelled or deadline is reached. +// +// Request must contain at least non-zero RequestURI with full url (including +// scheme and host) or non-zero Host header + RequestURI. +// +// The function doesn't follow redirects. Use Get* for following redirects. +// +// Response is ignored if resp is nil. +// +// ErrTimeout is returned if the response wasn't returned until +// the deadline provided by the given context. +// +// ErrNoFreeConns is returned if all HostClient.MaxConns connections +// to the host are busy. +// +// It is recommended obtaining req and resp via AcquireRequest +// and AcquireResponse in performance-critical code. +func (c *HostClient) DoCtx(ctx context.Context, req *Request, resp *Response) error { + return clientDoCtx(ctx, req, resp, c) +} + func clientDoTimeout(req *Request, resp *Response, timeout time.Duration, c clientDoer) error { deadline := time.Now().Add(timeout) return clientDoDeadline(req, resp, deadline, c) } func clientDoDeadline(req *Request, resp *Response, deadline time.Time, c clientDoer) error { - timeout := -time.Since(deadline) - if timeout <= 0 { - return ErrTimeout - } + ctx, cancel := context.WithDeadline(context.Background(), deadline) + defer cancel() + return clientDoCtx(ctx, req, resp, c) +} +func clientDoCtx(ctx context.Context, req *Request, resp *Response, c clientDoer) error { var ch chan error chv := errorChPool.Get() if chv == nil { @@ -910,7 +934,6 @@ func clientDoDeadline(req *Request, resp *Response, deadline time.Time, c client ch <- c.Do(reqCopy, respCopy) }() - tc := acquireTimer(timeout) var err error select { case err = <-ch: @@ -921,10 +944,12 @@ func clientDoDeadline(req *Request, resp *Response, deadline time.Time, c client ReleaseResponse(respCopy) ReleaseRequest(reqCopy) errorChPool.Put(chv) - case <-tc.C: - err = ErrTimeout + case <-ctx.Done(): + err = ctx.Err() + if errors.Is(err, context.DeadlineExceeded) { + err = ErrTimeout + } } - releaseTimer(tc) return err } diff --git a/vendor/github.com/VictoriaMetrics/fasthttp/compress.go b/vendor/github.com/VictoriaMetrics/fasthttp/compress.go index ed2e0ad33..c37a807ea 100644 --- a/vendor/github.com/VictoriaMetrics/fasthttp/compress.go +++ b/vendor/github.com/VictoriaMetrics/fasthttp/compress.go @@ -127,11 +127,11 @@ var ( // // Supported compression levels are: // -// * CompressNoCompression -// * CompressBestSpeed -// * CompressBestCompression -// * CompressDefaultCompression -// * CompressHuffmanOnly +// - CompressNoCompression +// - CompressBestSpeed +// - CompressBestCompression +// - CompressDefaultCompression +// - CompressHuffmanOnly func AppendGzipBytesLevel(dst, src []byte, level int) []byte { w := &byteSliceWriter{dst} WriteGzipLevel(w, src, level) @@ -143,11 +143,11 @@ func AppendGzipBytesLevel(dst, src []byte, level int) []byte { // // Supported compression levels are: // -// * CompressNoCompression -// * CompressBestSpeed -// * CompressBestCompression -// * CompressDefaultCompression -// * CompressHuffmanOnly +// - CompressNoCompression +// - CompressBestSpeed +// - CompressBestCompression +// - CompressDefaultCompression +// - CompressHuffmanOnly func WriteGzipLevel(w io.Writer, p []byte, level int) (int, error) { switch w.(type) { case *byteSliceWriter, @@ -224,11 +224,11 @@ func AppendGunzipBytes(dst, src []byte) ([]byte, error) { // // Supported compression levels are: // -// * CompressNoCompression -// * CompressBestSpeed -// * CompressBestCompression -// * CompressDefaultCompression -// * CompressHuffmanOnly +// - CompressNoCompression +// - CompressBestSpeed +// - CompressBestCompression +// - CompressDefaultCompression +// - CompressHuffmanOnly func AppendDeflateBytesLevel(dst, src []byte, level int) []byte { w := &byteSliceWriter{dst} WriteDeflateLevel(w, src, level) @@ -240,11 +240,11 @@ func AppendDeflateBytesLevel(dst, src []byte, level int) []byte { // // Supported compression levels are: // -// * CompressNoCompression -// * CompressBestSpeed -// * CompressBestCompression -// * CompressDefaultCompression -// * CompressHuffmanOnly +// - CompressNoCompression +// - CompressBestSpeed +// - CompressBestCompression +// - CompressDefaultCompression +// - CompressHuffmanOnly func WriteDeflateLevel(w io.Writer, p []byte, level int) (int, error) { switch w.(type) { case *byteSliceWriter, diff --git a/vendor/github.com/VictoriaMetrics/fasthttp/doc.go b/vendor/github.com/VictoriaMetrics/fasthttp/doc.go index 501eff6f1..8ef161d56 100644 --- a/vendor/github.com/VictoriaMetrics/fasthttp/doc.go +++ b/vendor/github.com/VictoriaMetrics/fasthttp/doc.go @@ -3,38 +3,57 @@ Package fasthttp provides fast HTTP server and client API. Fasthttp provides the following features: - * Optimized for speed. Easily handles more than 100K qps and more than 1M - concurrent keep-alive connections on modern hardware. - * Optimized for low memory usage. - * Easy 'Connection: Upgrade' support via RequestCtx.Hijack. - * Server supports requests' pipelining. Multiple requests may be read from - a single network packet and multiple responses may be sent in a single - network packet. This may be useful for highly loaded REST services. - * Server provides the following anti-DoS limits: + - Optimized for speed. Easily handles more than 100K qps and more than 1M + concurrent keep-alive connections on modern hardware. - * The number of concurrent connections. - * The number of concurrent connections per client IP. - * The number of requests per connection. - * Request read timeout. - * Response write timeout. - * Maximum request header size. - * Maximum request body size. - * Maximum request execution time. - * Maximum keep-alive connection lifetime. - * Early filtering out non-GET requests. + - Optimized for low memory usage. - * A lot of additional useful info is exposed to request handler: + - Easy 'Connection: Upgrade' support via RequestCtx.Hijack. - * Server and client address. - * Per-request logger. - * Unique request id. - * Request start time. - * Connection start time. - * Request sequence number for the current connection. + - Server supports requests' pipelining. Multiple requests may be read from + a single network packet and multiple responses may be sent in a single + network packet. This may be useful for highly loaded REST services. - * Client supports automatic retry on idempotent requests' failure. - * Fasthttp API is designed with the ability to extend existing client - and server implementations or to write custom client and server - implementations from scratch. + - Server provides the following anti-DoS limits: + + - The number of concurrent connections. + + - The number of concurrent connections per client IP. + + - The number of requests per connection. + + - Request read timeout. + + - Response write timeout. + + - Maximum request header size. + + - Maximum request body size. + + - Maximum request execution time. + + - Maximum keep-alive connection lifetime. + + - Early filtering out non-GET requests. + + - A lot of additional useful info is exposed to request handler: + + - Server and client address. + + - Per-request logger. + + - Unique request id. + + - Request start time. + + - Connection start time. + + - Request sequence number for the current connection. + + - Client supports automatic retry on idempotent requests' failure. + + - Fasthttp API is designed with the ability to extend existing client + and server implementations or to write custom client and server + implementations from scratch. */ package fasthttp diff --git a/vendor/github.com/VictoriaMetrics/fasthttp/fs.go b/vendor/github.com/VictoriaMetrics/fasthttp/fs.go index 268021438..72629fb25 100644 --- a/vendor/github.com/VictoriaMetrics/fasthttp/fs.go +++ b/vendor/github.com/VictoriaMetrics/fasthttp/fs.go @@ -51,8 +51,8 @@ func ServeFileUncompressed(ctx *RequestCtx, path string) { // // HTTP response may contain uncompressed file contents in the following cases: // -// * Missing 'Accept-Encoding: gzip' request header. -// * No write access to directory containing the file. +// - Missing 'Accept-Encoding: gzip' request header. +// - No write access to directory containing the file. // // Directory contents is returned if path points to directory. // @@ -69,8 +69,8 @@ func ServeFileBytes(ctx *RequestCtx, path []byte) { // // HTTP response may contain uncompressed file contents in the following cases: // -// * Missing 'Accept-Encoding: gzip' request header. -// * No write access to directory containing the file. +// - Missing 'Accept-Encoding: gzip' request header. +// - No write access to directory containing the file. // // Directory contents is returned if path points to directory. // @@ -123,12 +123,11 @@ type PathRewriteFunc func(ctx *RequestCtx) []byte // // Examples: // -// * host=foobar.com, slashesCount=0, original path="/foo/bar". +// - host=foobar.com, slashesCount=0, original path="/foo/bar". // Resulting path: "/foobar.com/foo/bar" // -// * host=img.aaa.com, slashesCount=1, original path="/images/123/456.jpg" +// - host=img.aaa.com, slashesCount=1, original path="/images/123/456.jpg" // Resulting path: "/img.aaa.com/123/456.jpg" -// func NewVHostPathRewriter(slashesCount int) PathRewriteFunc { return func(ctx *RequestCtx) []byte { path := stripLeadingSlashes(ctx.Path(), slashesCount) @@ -157,9 +156,9 @@ var strInvalidHost = []byte("invalid-host") // // Examples: // -// * slashesCount = 0, original path: "/foo/bar", result: "/foo/bar" -// * slashesCount = 1, original path: "/foo/bar", result: "/bar" -// * slashesCount = 2, original path: "/foo/bar", result: "" +// - slashesCount = 0, original path: "/foo/bar", result: "/foo/bar" +// - slashesCount = 1, original path: "/foo/bar", result: "/bar" +// - slashesCount = 2, original path: "/foo/bar", result: "" // // The returned path rewriter may be used as FS.PathRewrite . func NewPathSlashesStripper(slashesCount int) PathRewriteFunc { @@ -173,9 +172,9 @@ func NewPathSlashesStripper(slashesCount int) PathRewriteFunc { // // Examples: // -// * prefixSize = 0, original path: "/foo/bar", result: "/foo/bar" -// * prefixSize = 3, original path: "/foo/bar", result: "o/bar" -// * prefixSize = 7, original path: "/foo/bar", result: "r" +// - prefixSize = 0, original path: "/foo/bar", result: "/foo/bar" +// - prefixSize = 3, original path: "/foo/bar", result: "o/bar" +// - prefixSize = 7, original path: "/foo/bar", result: "r" // // The returned path rewriter may be used as FS.PathRewrite . func NewPathPrefixStripper(prefixSize int) PathRewriteFunc { @@ -273,9 +272,9 @@ const FSHandlerCacheDuration = 10 * time.Second // from requested path before searching requested file in the root folder. // Examples: // -// * stripSlashes = 0, original path: "/foo/bar", result: "/foo/bar" -// * stripSlashes = 1, original path: "/foo/bar", result: "/bar" -// * stripSlashes = 2, original path: "/foo/bar", result: "" +// - stripSlashes = 0, original path: "/foo/bar", result: "/foo/bar" +// - stripSlashes = 1, original path: "/foo/bar", result: "/bar" +// - stripSlashes = 2, original path: "/foo/bar", result: "" // // The returned request handler automatically generates index pages // for directories without index.html. diff --git a/vendor/github.com/VictoriaMetrics/fasthttp/header.go b/vendor/github.com/VictoriaMetrics/fasthttp/header.go index f374c2b59..711329180 100644 --- a/vendor/github.com/VictoriaMetrics/fasthttp/header.go +++ b/vendor/github.com/VictoriaMetrics/fasthttp/header.go @@ -90,8 +90,8 @@ func (h *ResponseHeader) SetContentRange(startPos, endPos, contentLength int) { // SetByteRange sets 'Range: bytes=startPos-endPos' header. // -// * If startPos is negative, then 'bytes=-startPos' value is set. -// * If endPos is negative, then 'bytes=startPos-' value is set. +// - If startPos is negative, then 'bytes=-startPos' value is set. +// - If endPos is negative, then 'bytes=startPos-' value is set. func (h *RequestHeader) SetByteRange(startPos, endPos int) { h.parseRawHeaders() @@ -1985,9 +1985,9 @@ func normalizeHeaderKey(b []byte) { // after dashes are also uppercased. All the other letters are lowercased. // Examples: // -// * coNTENT-TYPe -> Content-Type -// * HOST -> Host -// * foo-bar-baz -> Foo-Bar-Baz +// - coNTENT-TYPe -> Content-Type +// - HOST -> Host +// - foo-bar-baz -> Foo-Bar-Baz func AppendNormalizedHeaderKey(dst []byte, key string) []byte { dst = append(dst, key...) normalizeHeaderKey(dst[len(dst)-len(key):]) @@ -2001,9 +2001,9 @@ func AppendNormalizedHeaderKey(dst []byte, key string) []byte { // after dashes are also uppercased. All the other letters are lowercased. // Examples: // -// * coNTENT-TYPe -> Content-Type -// * HOST -> Host -// * foo-bar-baz -> Foo-Bar-Baz +// - coNTENT-TYPe -> Content-Type +// - HOST -> Host +// - foo-bar-baz -> Foo-Bar-Baz func AppendNormalizedHeaderKeyBytes(dst, key []byte) []byte { return AppendNormalizedHeaderKey(dst, b2s(key)) } diff --git a/vendor/github.com/VictoriaMetrics/fasthttp/http.go b/vendor/github.com/VictoriaMetrics/fasthttp/http.go index 3c7fc56d1..795f8fbde 100644 --- a/vendor/github.com/VictoriaMetrics/fasthttp/http.go +++ b/vendor/github.com/VictoriaMetrics/fasthttp/http.go @@ -216,14 +216,14 @@ func (resp *Response) IsBodyStream() bool { // // This function may be used in the following cases: // -// * if request body is too big (more than 10MB). -// * if request body is streamed from slow external sources. -// * if request body must be streamed to the server in chunks +// - if request body is too big (more than 10MB). +// - if request body is streamed from slow external sources. +// - if request body must be streamed to the server in chunks // (aka `http client push` or `chunked transfer-encoding`). // // Note that GET and HEAD requests cannot have body. // -/// See also SetBodyStream. +// / See also SetBodyStream. func (req *Request) SetBodyStreamWriter(sw StreamWriter) { sr := NewStreamReader(sw) req.SetBodyStream(sr, -1) @@ -233,9 +233,9 @@ func (req *Request) SetBodyStreamWriter(sw StreamWriter) { // // This function may be used in the following cases: // -// * if response body is too big (more than 10MB). -// * if response body is streamed from slow external sources. -// * if response body must be streamed to the client in chunks +// - if response body is too big (more than 10MB). +// - if response body is streamed from slow external sources. +// - if response body must be streamed to the client in chunks // (aka `http server push` or `chunked transfer-encoding`). // // See also SetBodyStream. @@ -831,11 +831,11 @@ func (resp *Response) resetSkipHeader() { // // If MayContinue returns true, the caller must: // -// - Either send StatusExpectationFailed response if request headers don't -// satisfy the caller. -// - Or send StatusContinue response before reading request body -// with ContinueReadBody. -// - Or close the connection. +// - Either send StatusExpectationFailed response if request headers don't +// satisfy the caller. +// - Or send StatusContinue response before reading request body +// with ContinueReadBody. +// - Or close the connection. // // io.EOF is returned if r is closed before reading the first header byte. func (req *Request) Read(r *bufio.Reader) error { @@ -857,11 +857,11 @@ var errGetOnly = errors.New("non-GET request received") // // If MayContinue returns true, the caller must: // -// - Either send StatusExpectationFailed response if request headers don't -// satisfy the caller. -// - Or send StatusContinue response before reading request body -// with ContinueReadBody. -// - Or close the connection. +// - Either send StatusExpectationFailed response if request headers don't +// satisfy the caller. +// - Or send StatusContinue response before reading request body +// with ContinueReadBody. +// - Or close the connection. // // io.EOF is returned if r is closed before reading the first header byte. func (req *Request) ReadLimitBody(r *bufio.Reader, maxBodySize int) error { @@ -900,11 +900,11 @@ func (req *Request) readLimitBody(r *bufio.Reader, maxBodySize int, getOnly bool // // The caller must do one of the following actions if MayContinue returns true: // -// - Either send StatusExpectationFailed response if request headers don't -// satisfy the caller. -// - Or send StatusContinue response before reading request body -// with ContinueReadBody. -// - Or close the connection. +// - Either send StatusExpectationFailed response if request headers don't +// satisfy the caller. +// - Or send StatusContinue response before reading request body +// with ContinueReadBody. +// - Or close the connection. func (req *Request) MayContinue() bool { return bytes.Equal(req.Header.peek(strExpect), str100Continue) } @@ -1138,11 +1138,11 @@ func (resp *Response) WriteGzip(w *bufio.Writer) error { // // Level is the desired compression level: // -// * CompressNoCompression -// * CompressBestSpeed -// * CompressBestCompression -// * CompressDefaultCompression -// * CompressHuffmanOnly +// - CompressNoCompression +// - CompressBestSpeed +// - CompressBestCompression +// - CompressDefaultCompression +// - CompressHuffmanOnly // // The method gzips response body and sets 'Content-Encoding: gzip' // header before writing response to w. @@ -1169,11 +1169,11 @@ func (resp *Response) WriteDeflate(w *bufio.Writer) error { // // Level is the desired compression level: // -// * CompressNoCompression -// * CompressBestSpeed -// * CompressBestCompression -// * CompressDefaultCompression -// * CompressHuffmanOnly +// - CompressNoCompression +// - CompressBestSpeed +// - CompressBestCompression +// - CompressDefaultCompression +// - CompressHuffmanOnly // // The method deflates response body and sets 'Content-Encoding: deflate' // header before writing response to w. diff --git a/vendor/github.com/VictoriaMetrics/fasthttp/server.go b/vendor/github.com/VictoriaMetrics/fasthttp/server.go index c2432c840..309c78b92 100644 --- a/vendor/github.com/VictoriaMetrics/fasthttp/server.go +++ b/vendor/github.com/VictoriaMetrics/fasthttp/server.go @@ -318,11 +318,11 @@ func CompressHandler(h RequestHandler) RequestHandler { // // Level is the desired compression level: // -// * CompressNoCompression -// * CompressBestSpeed -// * CompressBestCompression -// * CompressDefaultCompression -// * CompressHuffmanOnly +// - CompressNoCompression +// - CompressBestSpeed +// - CompressBestCompression +// - CompressDefaultCompression +// - CompressHuffmanOnly func CompressHandlerLevel(h RequestHandler, level int) RequestHandler { return func(ctx *RequestCtx) { h(ctx) @@ -405,8 +405,8 @@ type HijackHandler func(c net.Conn) // // The server skips calling the handler in the following cases: // -// * 'Connection: close' header exists in either request or response. -// * Unexpected error during response writing to the connection. +// - 'Connection: close' header exists in either request or response. +// - Unexpected error during response writing to the connection. // // The server stops processing requests from hijacked connections. // Server limits such as Concurrency, ReadTimeout, WriteTimeout, etc. @@ -417,9 +417,8 @@ type HijackHandler func(c net.Conn) // Arbitrary 'Connection: Upgrade' protocols may be implemented // with HijackHandler. For instance, // -// * WebSocket ( https://en.wikipedia.org/wiki/WebSocket ) -// * HTTP/2.0 ( https://en.wikipedia.org/wiki/HTTP/2 ) -// +// - WebSocket ( https://en.wikipedia.org/wiki/WebSocket ) +// - HTTP/2.0 ( https://en.wikipedia.org/wiki/HTTP/2 ) func (ctx *RequestCtx) Hijack(handler HijackHandler) { ctx.hijackHandler = handler } @@ -759,15 +758,15 @@ func SaveMultipartFile(fh *multipart.FileHeader, path string) error { // // The value is searched in the following places: // -// * Query string. -// * POST or PUT body. +// - Query string. +// - POST or PUT body. // // There are more fine-grained methods for obtaining form values: // -// * QueryArgs for obtaining values from query string. -// * PostArgs for obtaining values from POST or PUT body. -// * MultipartForm for obtaining values from multipart form. -// * FormFile for obtaining uploaded files. +// - QueryArgs for obtaining values from query string. +// - PostArgs for obtaining values from POST or PUT body. +// - MultipartForm for obtaining values from multipart form. +// - FormFile for obtaining uploaded files. // // The returned value is valid until returning from RequestHandler. func (ctx *RequestCtx) FormValue(key string) []byte { @@ -896,10 +895,10 @@ func (ctx *RequestCtx) SuccessString(contentType, body string) { // // statusCode must have one of the following values: // -// * StatusMovedPermanently (301) -// * StatusFound (302) -// * StatusSeeOther (303) -// * StatusTemporaryRedirect (307) +// - StatusMovedPermanently (301) +// - StatusFound (302) +// - StatusSeeOther (303) +// - StatusTemporaryRedirect (307) // // All other statusCode values are replaced by StatusFound (302). // @@ -918,10 +917,10 @@ func (ctx *RequestCtx) Redirect(uri string, statusCode int) { // // statusCode must have one of the following values: // -// * StatusMovedPermanently (301) -// * StatusFound (302) -// * StatusSeeOther (303) -// * StatusTemporaryRedirect (307) +// - StatusMovedPermanently (301) +// - StatusFound (302) +// - StatusSeeOther (303) +// - StatusTemporaryRedirect (307) // // All other statusCode values are replaced by StatusFound (302). // @@ -1056,9 +1055,9 @@ func (ctx *RequestCtx) SetBodyStream(bodyStream io.Reader, bodySize int) { // // This function may be used in the following cases: // -// * if response body is too big (more than 10MB). -// * if response body is streamed from slow external sources. -// * if response body must be streamed to the client in chunks. +// - if response body is too big (more than 10MB). +// - if response body is streamed from slow external sources. +// - if response body must be streamed to the client in chunks. // (aka `http server push`). func (ctx *RequestCtx) SetBodyStreamWriter(sw StreamWriter) { ctx.Response.SetBodyStreamWriter(sw) diff --git a/vendor/github.com/VictoriaMetrics/fasthttp/tcpdialer.go b/vendor/github.com/VictoriaMetrics/fasthttp/tcpdialer.go index e31fd7585..0e03482bf 100644 --- a/vendor/github.com/VictoriaMetrics/fasthttp/tcpdialer.go +++ b/vendor/github.com/VictoriaMetrics/fasthttp/tcpdialer.go @@ -13,12 +13,12 @@ import ( // // This function has the following additional features comparing to net.Dial: // -// * It reduces load on DNS resolver by caching resolved TCP addressed +// - It reduces load on DNS resolver by caching resolved TCP addressed // for DefaultDNSCacheDuration. -// * It dials all the resolved TCP addresses in round-robin manner until +// - It dials all the resolved TCP addresses in round-robin manner until // connection is established. This may be useful if certain addresses // are temporarily unreachable. -// * It returns ErrDialTimeout if connection cannot be established during +// - It returns ErrDialTimeout if connection cannot be established during // DefaultDialTimeout seconds. Use DialTimeout for customizing dial timeout. // // This dialer is intended for custom code wrapping before passing @@ -29,9 +29,9 @@ import ( // // The addr passed to the function must contain port. Example addr values: // -// * foobar.baz:443 -// * foo.bar:80 -// * aaa.com:8080 +// - foobar.baz:443 +// - foo.bar:80 +// - aaa.com:8080 func Dial(addr string) (net.Conn, error) { return getDialer(DefaultDialTimeout, false)(addr) } @@ -40,9 +40,9 @@ func Dial(addr string) (net.Conn, error) { // // This function has the following additional features comparing to net.Dial: // -// * It reduces load on DNS resolver by caching resolved TCP addressed +// - It reduces load on DNS resolver by caching resolved TCP addressed // for DefaultDNSCacheDuration. -// * It dials all the resolved TCP addresses in round-robin manner until +// - It dials all the resolved TCP addresses in round-robin manner until // connection is established. This may be useful if certain addresses // are temporarily unreachable. // @@ -54,9 +54,9 @@ func Dial(addr string) (net.Conn, error) { // // The addr passed to the function must contain port. Example addr values: // -// * foobar.baz:443 -// * foo.bar:80 -// * aaa.com:8080 +// - foobar.baz:443 +// - foo.bar:80 +// - aaa.com:8080 func DialTimeout(addr string, timeout time.Duration) (net.Conn, error) { return getDialer(timeout, false)(addr) } @@ -65,12 +65,12 @@ func DialTimeout(addr string, timeout time.Duration) (net.Conn, error) { // // This function has the following additional features comparing to net.Dial: // -// * It reduces load on DNS resolver by caching resolved TCP addressed +// - It reduces load on DNS resolver by caching resolved TCP addressed // for DefaultDNSCacheDuration. -// * It dials all the resolved TCP addresses in round-robin manner until +// - It dials all the resolved TCP addresses in round-robin manner until // connection is established. This may be useful if certain addresses // are temporarily unreachable. -// * It returns ErrDialTimeout if connection cannot be established during +// - It returns ErrDialTimeout if connection cannot be established during // DefaultDialTimeout seconds. Use DialDualStackTimeout for custom dial // timeout. // @@ -82,9 +82,9 @@ func DialTimeout(addr string, timeout time.Duration) (net.Conn, error) { // // The addr passed to the function must contain port. Example addr values: // -// * foobar.baz:443 -// * foo.bar:80 -// * aaa.com:8080 +// - foobar.baz:443 +// - foo.bar:80 +// - aaa.com:8080 func DialDualStack(addr string) (net.Conn, error) { return getDialer(DefaultDialTimeout, true)(addr) } @@ -94,9 +94,9 @@ func DialDualStack(addr string) (net.Conn, error) { // // This function has the following additional features comparing to net.Dial: // -// * It reduces load on DNS resolver by caching resolved TCP addressed +// - It reduces load on DNS resolver by caching resolved TCP addressed // for DefaultDNSCacheDuration. -// * It dials all the resolved TCP addresses in round-robin manner until +// - It dials all the resolved TCP addresses in round-robin manner until // connection is established. This may be useful if certain addresses // are temporarily unreachable. // @@ -108,9 +108,9 @@ func DialDualStack(addr string) (net.Conn, error) { // // The addr passed to the function must contain port. Example addr values: // -// * foobar.baz:443 -// * foo.bar:80 -// * aaa.com:8080 +// - foobar.baz:443 +// - foo.bar:80 +// - aaa.com:8080 func DialDualStackTimeout(addr string, timeout time.Duration) (net.Conn, error) { return getDialer(timeout, true)(addr) } diff --git a/vendor/github.com/VictoriaMetrics/fasthttp/uri.go b/vendor/github.com/VictoriaMetrics/fasthttp/uri.go index 37572f5d1..504eb663b 100644 --- a/vendor/github.com/VictoriaMetrics/fasthttp/uri.go +++ b/vendor/github.com/VictoriaMetrics/fasthttp/uri.go @@ -356,9 +356,9 @@ func (u *URI) RequestURI() []byte { // // Examples: // -// * For /foo/bar/baz.html path returns baz.html. -// * For /foo/bar/ returns empty byte slice. -// * For /foobar.js returns foobar.js. +// - For /foo/bar/baz.html path returns baz.html. +// - For /foo/bar/ returns empty byte slice. +// - For /foobar.js returns foobar.js. func (u *URI) LastPathSegment() []byte { path := u.Path() n := bytes.LastIndexByte(path, '/') @@ -372,14 +372,14 @@ func (u *URI) LastPathSegment() []byte { // // The following newURI types are accepted: // -// * Absolute, i.e. http://foobar.com/aaa/bb?cc . In this case the original -// uri is replaced by newURI. -// * Absolute without scheme, i.e. //foobar.com/aaa/bb?cc. In this case -// the original scheme is preserved. -// * Missing host, i.e. /aaa/bb?cc . In this case only RequestURI part -// of the original uri is replaced. -// * Relative path, i.e. xx?yy=abc . In this case the original RequestURI -// is updated according to the new relative path. +// - Absolute, i.e. http://foobar.com/aaa/bb?cc . In this case the original +// uri is replaced by newURI. +// - Absolute without scheme, i.e. //foobar.com/aaa/bb?cc. In this case +// the original scheme is preserved. +// - Missing host, i.e. /aaa/bb?cc . In this case only RequestURI part +// of the original uri is replaced. +// - Relative path, i.e. xx?yy=abc . In this case the original RequestURI +// is updated according to the new relative path. func (u *URI) Update(newURI string) { u.UpdateBytes(s2b(newURI)) } @@ -388,14 +388,14 @@ func (u *URI) Update(newURI string) { // // The following newURI types are accepted: // -// * Absolute, i.e. http://foobar.com/aaa/bb?cc . In this case the original -// uri is replaced by newURI. -// * Absolute without scheme, i.e. //foobar.com/aaa/bb?cc. In this case -// the original scheme is preserved. -// * Missing host, i.e. /aaa/bb?cc . In this case only RequestURI part -// of the original uri is replaced. -// * Relative path, i.e. xx?yy=abc . In this case the original RequestURI -// is updated according to the new relative path. +// - Absolute, i.e. http://foobar.com/aaa/bb?cc . In this case the original +// uri is replaced by newURI. +// - Absolute without scheme, i.e. //foobar.com/aaa/bb?cc. In this case +// the original scheme is preserved. +// - Missing host, i.e. /aaa/bb?cc . In this case only RequestURI part +// of the original uri is replaced. +// - Relative path, i.e. xx?yy=abc . In this case the original RequestURI +// is updated according to the new relative path. func (u *URI) UpdateBytes(newURI []byte) { u.requestURI = u.updateBytes(newURI, u.requestURI) } diff --git a/vendor/github.com/VictoriaMetrics/fasthttp/uri_unix.go b/vendor/github.com/VictoriaMetrics/fasthttp/uri_unix.go index 1e3073329..c2ac8fa46 100644 --- a/vendor/github.com/VictoriaMetrics/fasthttp/uri_unix.go +++ b/vendor/github.com/VictoriaMetrics/fasthttp/uri_unix.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows package fasthttp diff --git a/vendor/github.com/VictoriaMetrics/fasthttp/uri_windows.go b/vendor/github.com/VictoriaMetrics/fasthttp/uri_windows.go index 95917a6bc..e1391a7ac 100644 --- a/vendor/github.com/VictoriaMetrics/fasthttp/uri_windows.go +++ b/vendor/github.com/VictoriaMetrics/fasthttp/uri_windows.go @@ -1,3 +1,4 @@ +//go:build windows // +build windows package fasthttp diff --git a/vendor/modules.txt b/vendor/modules.txt index ce27af556..cfe4e5993 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -63,8 +63,8 @@ github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/service # github.com/VictoriaMetrics/fastcache v1.12.0 ## explicit; go 1.13 github.com/VictoriaMetrics/fastcache -# github.com/VictoriaMetrics/fasthttp v1.1.0 -## explicit; go 1.13 +# github.com/VictoriaMetrics/fasthttp v1.2.0 +## explicit; go 1.19 github.com/VictoriaMetrics/fasthttp github.com/VictoriaMetrics/fasthttp/fasthttputil github.com/VictoriaMetrics/fasthttp/stackless