Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package fortio for openSUSE:Factory checked in at 2023-02-18 17:12:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fortio (Old) and /work/SRC/openSUSE:Factory/.fortio.new.22824 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fortio" Sat Feb 18 17:12:42 2023 rev:30 rq:1066525 version:1.50.1 Changes: -------- --- /work/SRC/openSUSE:Factory/fortio/fortio.changes 2023-02-14 16:48:11.991426613 +0100 +++ /work/SRC/openSUSE:Factory/.fortio.new.22824/fortio.changes 2023-02-18 17:12:51.855674968 +0100 @@ -1,0 +2,8 @@ +Sat Feb 18 08:06:56 UTC 2023 - ka...@b1-systems.de + +- Update to version 1.50.1: + * use go 1.19.6 (#711) + * Bump golang.org/x/net from 0.6.0 to 0.7.0 (#710) + * Bump fortio.org/log from 1.2.0 to 1.2.2 (#709) + +------------------------------------------------------------------- Old: ---- fortio-1.50.0.tar.gz New: ---- fortio-1.50.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fortio.spec ++++++ --- /var/tmp/diff_new_pack.d69scc/_old 2023-02-18 17:12:54.451691359 +0100 +++ /var/tmp/diff_new_pack.d69scc/_new 2023-02-18 17:12:54.455691384 +0100 @@ -19,7 +19,7 @@ %define __arch_install_post export NO_BRP_STRIP_DEBUG=true Name: fortio -Version: 1.50.0 +Version: 1.50.1 Release: 0 Summary: Load testing library, command line tool, advanced echo server and web UI License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.d69scc/_old 2023-02-18 17:12:54.495691637 +0100 +++ /var/tmp/diff_new_pack.d69scc/_new 2023-02-18 17:12:54.499691662 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/fortio/fortio</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v1.50.0</param> + <param name="revision">v1.50.1</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> @@ -17,7 +17,7 @@ <param name="compression">gz</param> </service> <service name="go_modules" mode="disabled"> - <param name="archive">fortio-1.50.0.tar.gz</param> + <param name="archive">fortio-1.50.1.tar.gz</param> </service> </services> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.d69scc/_old 2023-02-18 17:12:54.523691814 +0100 +++ /var/tmp/diff_new_pack.d69scc/_new 2023-02-18 17:12:54.527691839 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/fortio/fortio</param> - <param name="changesrevision">d1d19b6d862c57ef2b5394e21d954d1df6d4fe70</param></service></servicedata> + <param name="changesrevision">f7ca38b31431e8ae81e2ab343e6fef71dcdfae6c</param></service></servicedata> (No newline at EOF) ++++++ fortio-1.50.0.tar.gz -> fortio-1.50.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/.circleci/config.yml new/fortio-1.50.1/.circleci/config.yml --- old/fortio-1.50.0/.circleci/config.yml 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/.circleci/config.yml 2023-02-17 21:43:27.000000000 +0100 @@ -8,7 +8,7 @@ &defaultEnv docker: # specify the version - - image: docker.io/fortio/fortio.build:v52@sha256:2a85bd3b97d7eaf1718a3fc7a376d52dbe78f01cd8cb3baee87228ad92adf710 + - image: docker.io/fortio/fortio.build:v54@sha256:4775038c3ace753978c8dfd99ebbd23607b61eeb0bf6c2bf2901d0485cc1870c working_directory: /build/fortio jobs: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/.golangci.yml new/fortio-1.50.1/.golangci.yml --- old/fortio-1.50.0/.golangci.yml 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/.golangci.yml 2023-02-17 21:43:27.000000000 +0100 @@ -82,6 +82,8 @@ linters: disable: + # bad ones: + - musttag # Deprecated ones: - scopelint - golint diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/Dockerfile new/fortio-1.50.1/Dockerfile --- old/fortio-1.50.0/Dockerfile 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/Dockerfile 2023-02-17 21:43:27.000000000 +0100 @@ -1,7 +1,7 @@ # Build the binaries in larger image -FROM docker.io/fortio/fortio.build:v52@sha256:2a85bd3b97d7eaf1718a3fc7a376d52dbe78f01cd8cb3baee87228ad92adf710 as build +FROM docker.io/fortio/fortio.build:v54@sha256:4775038c3ace753978c8dfd99ebbd23607b61eeb0bf6c2bf2901d0485cc1870c as build WORKDIR /build -COPY . fortio +COPY --chown=build:build . fortio ARG MODE=install # We moved a lot of the logic into the Makefile so it can be reused in brew # but that also couples the 2, this expects to find binaries in the right place etc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/Dockerfile.build new/fortio-1.50.1/Dockerfile.build --- old/fortio-1.50.0/Dockerfile.build 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/Dockerfile.build 2023-02-17 21:43:27.000000000 +0100 @@ -1,5 +1,5 @@ # Dependencies and linters for build: -FROM golang:1.19.5 +FROM golang:1.19.6 # Need gcc for -race test (and some linters though those work with CGO_ENABLED=0) RUN apt-get -y update && \ apt-get --no-install-recommends -y upgrade && \ @@ -18,7 +18,7 @@ RUN set -x; if [ x"$(dpkg --print-architecture)" != x"s390x" ]; then \ curl -fsSL "https://download.docker.com/linux/debian/gpg" | apt-key add; \ echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/debian bullseye stable" > /etc/apt/sources.list.d/docker.list && \ - apt-get -y update && apt-get install --no-install-recommends -y docker-ce; \ + apt-get -y update && apt-get install --no-install-recommends -y docker-ce docker-buildx-plugin; \ fi # govulncheck diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/Dockerfile.echosrv new/fortio-1.50.1/Dockerfile.echosrv --- old/fortio-1.50.0/Dockerfile.echosrv 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/Dockerfile.echosrv 2023-02-17 21:43:27.000000000 +0100 @@ -1,5 +1,5 @@ # Build the binaries in larger image -FROM docker.io/fortio/fortio.build:v52@sha256:2a85bd3b97d7eaf1718a3fc7a376d52dbe78f01cd8cb3baee87228ad92adf710 as build +FROM docker.io/fortio/fortio.build:v54@sha256:4775038c3ace753978c8dfd99ebbd23607b61eeb0bf6c2bf2901d0485cc1870c as build WORKDIR /build COPY . fortio RUN make -C fortio official-build-version BUILD_DIR=/build OFFICIAL_TARGET=fortio.org/fortio/echosrv diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/Dockerfile.fcurl new/fortio-1.50.1/Dockerfile.fcurl --- old/fortio-1.50.0/Dockerfile.fcurl 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/Dockerfile.fcurl 2023-02-17 21:43:27.000000000 +0100 @@ -1,5 +1,5 @@ # Build the binaries in larger image -FROM docker.io/fortio/fortio.build:v52@sha256:2a85bd3b97d7eaf1718a3fc7a376d52dbe78f01cd8cb3baee87228ad92adf710 as build +FROM docker.io/fortio/fortio.build:v54@sha256:4775038c3ace753978c8dfd99ebbd23607b61eeb0bf6c2bf2901d0485cc1870c as build WORKDIR /build COPY . fortio RUN make -C fortio official-build-version BUILD_DIR=/build OFFICIAL_TARGET=fortio.org/fortio/fcurl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/Makefile new/fortio-1.50.1/Makefile --- old/fortio-1.50.0/Makefile 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/Makefile 2023-02-17 21:43:27.000000000 +0100 @@ -7,7 +7,8 @@ IMAGES=echosrv fcurl # plus the combo image / Dockerfile without ext. DOCKER_PREFIX := docker.io/fortio/fortio -BUILD_IMAGE_TAG := v52@sha256:2a85bd3b97d7eaf1718a3fc7a376d52dbe78f01cd8cb3baee87228ad92adf710 +# Note to self: skip 55 (was built and push with unecessarily changing git config), so 56 is next +BUILD_IMAGE_TAG := v54@sha256:4775038c3ace753978c8dfd99ebbd23607b61eeb0bf6c2bf2901d0485cc1870c BUILDX_PLATFORMS := linux/amd64,linux/arm64,linux/ppc64le,linux/s390x BUILDX_POSTFIX := ifeq '$(shell echo $(BUILDX_PLATFORMS) | awk -F "," "{print NF-1}")' '0' @@ -78,7 +79,7 @@ # This really also tests the release process and build on windows,mac,linux # and the docker images, not just "web" (ui) stuff that it also exercises. -release-test: +release-test: docker-version ./Webtest.sh # old name for release-test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/README.md new/fortio-1.50.1/README.md --- old/fortio-1.50.0/README.md 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/README.md 2023-02-17 21:43:27.000000000 +0100 @@ -58,13 +58,13 @@ The [releases](https://github.com/fortio/fortio/releases) page has binaries for many OS/architecture combinations (see assets): ```shell -curl -L https://github.com/fortio/fortio/releases/download/v1.50.0/fortio-linux_amd64-1.50.0.tgz \ +curl -L https://github.com/fortio/fortio/releases/download/v1.50.1/fortio-linux_amd64-1.50.1.tgz \ | sudo tar -C / -xvzpf - # or the debian package -wget https://github.com/fortio/fortio/releases/download/v1.50.0/fortio_1.50.0_amd64.deb -dpkg -i fortio_1.50.0_amd64.deb +wget https://github.com/fortio/fortio/releases/download/v1.50.1/fortio_1.50.1_amd64.deb +dpkg -i fortio_1.50.1_amd64.deb # or the rpm -rpm -i https://github.com/fortio/fortio/releases/download/v1.50.0/fortio-1.50.0-1.x86_64.rpm +rpm -i https://github.com/fortio/fortio/releases/download/v1.50.1/fortio-1.50.1-1.x86_64.rpm # and more, see assets in release page ``` @@ -74,7 +74,7 @@ brew install fortio ``` -On Windows, download https://github.com/fortio/fortio/releases/download/v1.50.0/fortio_win_1.50.0.zip and extract `fortio.exe` to any location, then using the Windows Command Prompt: +On Windows, download https://github.com/fortio/fortio/releases/download/v1.50.1/fortio_win_1.50.1.zip and extract `fortio.exe` to any location, then using the Windows Command Prompt: ``` fortio.exe server ``` @@ -123,7 +123,7 @@ <details> <!-- use release/updateFlags.sh to update this section --> <pre> -ΦοÏÏίο 1.50.0 usage: +ΦοÏÏίο 1.50.1 usage: fortio command [flags] target where command is one of: load (load testing), server (starts ui, rest api, http-echo, redirect, proxies, tcp-echo, udp-echo and grpc ping servers), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/Webtest.sh new/fortio-1.50.1/Webtest.sh --- old/fortio-1.50.0/Webtest.sh 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/Webtest.sh 2023-02-17 21:43:27.000000000 +0100 @@ -141,7 +141,7 @@ PPROF_URL="$BASE_URL/debug/pprof/heap?debug=1" $CURL "$PPROF_URL" | grep -i TotalAlloc # should find this in memory profile # creating dummy container to hold a volume for test certs due to remote docker bind mount limitation. -DOCKERCURLID=$(docker run -d -v $TEST_CERT_VOL --net host --name $DOCKERSECVOLNAME docker.io/fortio/fortio.build:v52@sha256:2a85bd3b97d7eaf1718a3fc7a376d52dbe78f01cd8cb3baee87228ad92adf710 sleep 120) +DOCKERCURLID=$(docker run -d -v $TEST_CERT_VOL --net host --name $DOCKERSECVOLNAME docker.io/fortio/fortio.build:v54@sha256:4775038c3ace753978c8dfd99ebbd23607b61eeb0bf6c2bf2901d0485cc1870c sleep 120) # while we have something with actual curl binary do # Test for h2c upgrade (#562) docker exec $DOCKERSECVOLNAME /usr/bin/curl -v --http2 -m 10 -d foo42 http://localhost:8080/debug | tee >(cat 1>&2) | grep foo42 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/fhttp/http_server.go new/fortio-1.50.1/fhttp/http_server.go --- old/fortio-1.50.0/fhttp/http_server.go 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/fhttp/http_server.go 2023-02-17 21:43:27.000000000 +0100 @@ -15,6 +15,7 @@ package fhttp // import "fortio.org/fortio/fhttp" // pprof import to get /debug/pprof endpoints on a mux through SetupPPROF. + import ( "bytes" "crypto/tls" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/go.mod new/fortio-1.50.1/go.mod --- old/fortio-1.50.0/go.mod 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/go.mod 2023-02-17 21:43:27.000000000 +0100 @@ -5,19 +5,19 @@ require ( fortio.org/assert v1.1.3 fortio.org/dflag v1.4.1 - fortio.org/log v1.2.0 + fortio.org/log v1.2.2 fortio.org/version v1.0.2 github.com/golang/protobuf v1.5.2 github.com/google/uuid v1.3.0 - golang.org/x/net v0.6.0 + golang.org/x/net v0.7.0 google.golang.org/grpc v1.53.0 ) require ( github.com/fsnotify/fsnotify v1.6.0 // indirect - golang.org/x/exp v0.0.0-20230212135524-a684f29349b6 // indirect + golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb // indirect golang.org/x/sys v0.5.0 // indirect golang.org/x/text v0.7.0 // indirect - google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc // indirect + google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44 // indirect google.golang.org/protobuf v1.28.1 // indirect ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/go.sum new/fortio-1.50.1/go.sum --- old/fortio-1.50.0/go.sum 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/go.sum 2023-02-17 21:43:27.000000000 +0100 @@ -2,8 +2,8 @@ fortio.org/assert v1.1.3/go.mod h1:039mG+/iYDPO8Ibx8TrNuJCm2T2SuhwRI3uL9nHTTls= fortio.org/dflag v1.4.1 h1:WDhlHMh3yrQFrvspyN5YEyr8WATdKM2dUJlTxsjCDtI= fortio.org/dflag v1.4.1/go.mod h1:pTEF7UEj6sHP9rj9gZG2GyhAGrrPJE4c6zOO7zB2yyI= -fortio.org/log v1.2.0 h1:neeowTa+D4Wpi/t+nCRSXkOEx3V3NNAFcneCtkNCW+0= -fortio.org/log v1.2.0/go.mod h1:u/8/2lyczXq52aT5Nw6reD+3cR6m/EbS2jBiIYhgiTU= +fortio.org/log v1.2.2 h1:vs42JjNwiqbMbacittZjJE9+oi72Za6aekML9gKmILg= +fortio.org/log v1.2.2/go.mod h1:u/8/2lyczXq52aT5Nw6reD+3cR6m/EbS2jBiIYhgiTU= fortio.org/version v1.0.2 h1:8NwxdX58aoeKx7T5xAPO0xlUu1Hpk42nRz5s6e6eKZ0= fortio.org/version v1.0.2/go.mod h1:2JQp9Ax+tm6QKiGuzR5nJY63kFeANcgrZ0osoQFDVm0= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= @@ -15,18 +15,18 @@ github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -golang.org/x/exp v0.0.0-20230212135524-a684f29349b6 h1:Ic9KukPQ7PegFzHckNiMTQXGgEszA7mY2Fn4ZMtnMbw= -golang.org/x/exp v0.0.0-20230212135524-a684f29349b6/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= -golang.org/x/net v0.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb h1:PaBZQdo+iSDyHT053FjUCgZQ/9uqVwPOcl7KSWhKn6w= +golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc h1:ijGwO+0vL2hJt5gaygqP2j6PfflOBrRot0IczKbmtio= -google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44 h1:EfLuoKW5WfkgVdDy7dTK8qSbH37AX5mj/MFh+bGPz14= +google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc= google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/jrpc/jrpcClient.go new/fortio-1.50.1/jrpc/jrpcClient.go --- old/fortio-1.50.0/jrpc/jrpcClient.go 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/jrpc/jrpcClient.go 2023-02-17 21:43:27.000000000 +0100 @@ -23,6 +23,7 @@ // or struct based in and out. Additionally *URL() variants are for when no additional headers or options // are needed and the url is just a plain string. If golang supported multiple signatures it would be a single // method name instead of 8. + import ( "bytes" "context" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/jrpc/jrpcServer.go new/fortio-1.50.1/jrpc/jrpcServer.go --- old/fortio-1.50.0/jrpc/jrpcServer.go 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/jrpc/jrpcServer.go 2023-02-17 21:43:27.000000000 +0100 @@ -15,6 +15,7 @@ package jrpc // import "fortio.org/fortio/jrpc" // Server side additional code (compared to jrpcClient.go). + import ( "io" "net/http" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/release/Dockerfile.in new/fortio-1.50.1/release/Dockerfile.in --- old/fortio-1.50.0/release/Dockerfile.in 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/release/Dockerfile.in 2023-02-17 21:43:27.000000000 +0100 @@ -1,5 +1,5 @@ # Concatenated after ../Dockerfile to create the tgz -FROM docker.io/fortio/fortio.build:v52@sha256:2a85bd3b97d7eaf1718a3fc7a376d52dbe78f01cd8cb3baee87228ad92adf710 as stage +FROM docker.io/fortio/fortio.build:v54@sha256:4775038c3ace753978c8dfd99ebbd23607b61eeb0bf6c2bf2901d0485cc1870c as stage ARG archs="amd64 arm64 ppc64le s390x" ENV archs=${archs} # Build image defaults to build user, switch back to root for diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.50.0/tcprunner/tcprunner.go new/fortio-1.50.1/tcprunner/tcprunner.go --- old/fortio-1.50.0/tcprunner/tcprunner.go 2023-02-13 22:13:17.000000000 +0100 +++ new/fortio-1.50.1/tcprunner/tcprunner.go 2023-02-17 21:43:27.000000000 +0100 @@ -104,7 +104,6 @@ // GeneratePayload generates a default 24 bytes unique payload for each runner thread and message sent // when no other payload is set. func GeneratePayload(t int, i int64) []byte { - //nolint:dupword // up to 9999 connections and 999 999 999 999 (999B) request s := fmt.Sprintf("Fortio\n%04d\n%012d", t, i) // 6+2+4+12 = 24 bytes return []byte(s) ++++++ vendor.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/fortio.org/log/logger.go new/vendor/fortio.org/log/logger.go --- old/vendor/fortio.org/log/logger.go 2023-02-14 09:37:54.000000000 +0100 +++ new/vendor/fortio.org/log/logger.go 2023-02-18 09:07:00.000000000 +0100 @@ -132,17 +132,24 @@ names = []string{"loglevel"} } for _, name := range names { - flag.Var(&flagV, name, fmt.Sprintf("logging `level`, one of %v", LevelToStrA)) + flag.Var(&flagV, name, fmt.Sprintf("log `level`, one of %v", LevelToStrA)) } } // --- Start of code/types needed string to level custom flag validation section --- -type flagValidation struct{} +type flagValidation struct { + ours bool +} -var flagV flagValidation +var flagV = flagValidation{true} func (f *flagValidation) String() string { + // Need to tell if it's our value or the zeroValue the flag package creates + // to decide whether to print (default ...) or not. + if !f.ours { + return "" + } return GetLogLevel().String() } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/golang.org/x/net/http2/frame.go new/vendor/golang.org/x/net/http2/frame.go --- old/vendor/golang.org/x/net/http2/frame.go 2023-02-14 09:37:54.000000000 +0100 +++ new/vendor/golang.org/x/net/http2/frame.go 2023-02-18 09:07:00.000000000 +0100 @@ -662,6 +662,15 @@ // It is the caller's responsibility not to violate the maximum frame size // and to not call other Write methods concurrently. func (f *Framer) WriteDataPadded(streamID uint32, endStream bool, data, pad []byte) error { + if err := f.startWriteDataPadded(streamID, endStream, data, pad); err != nil { + return err + } + return f.endWrite() +} + +// startWriteDataPadded is WriteDataPadded, but only writes the frame to the Framer's internal buffer. +// The caller should call endWrite to flush the frame to the underlying writer. +func (f *Framer) startWriteDataPadded(streamID uint32, endStream bool, data, pad []byte) error { if !validStreamID(streamID) && !f.AllowIllegalWrites { return errStreamID } @@ -691,7 +700,7 @@ } f.wbuf = append(f.wbuf, data...) f.wbuf = append(f.wbuf, pad...) - return f.endWrite() + return nil } // A SettingsFrame conveys configuration parameters that affect how diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/golang.org/x/net/http2/hpack/hpack.go new/vendor/golang.org/x/net/http2/hpack/hpack.go --- old/vendor/golang.org/x/net/http2/hpack/hpack.go 2023-02-14 09:37:54.000000000 +0100 +++ new/vendor/golang.org/x/net/http2/hpack/hpack.go 2023-02-18 09:07:00.000000000 +0100 @@ -359,6 +359,7 @@ var hf HeaderField wantStr := d.emitEnabled || it.indexed() + var undecodedName undecodedString if nameIdx > 0 { ihf, ok := d.at(nameIdx) if !ok { @@ -366,15 +367,27 @@ } hf.Name = ihf.Name } else { - hf.Name, buf, err = d.readString(buf, wantStr) + undecodedName, buf, err = d.readString(buf) if err != nil { return err } } - hf.Value, buf, err = d.readString(buf, wantStr) + undecodedValue, buf, err := d.readString(buf) if err != nil { return err } + if wantStr { + if nameIdx <= 0 { + hf.Name, err = d.decodeString(undecodedName) + if err != nil { + return err + } + } + hf.Value, err = d.decodeString(undecodedValue) + if err != nil { + return err + } + } d.buf = buf if it.indexed() { d.dynTab.add(hf) @@ -459,46 +472,52 @@ return 0, origP, errNeedMore } -// readString decodes an hpack string from p. +// readString reads an hpack string from p. // -// wantStr is whether s will be used. If false, decompression and -// []byte->string garbage are skipped if s will be ignored -// anyway. This does mean that huffman decoding errors for non-indexed -// strings past the MAX_HEADER_LIST_SIZE are ignored, but the server -// is returning an error anyway, and because they're not indexed, the error -// won't affect the decoding state. -func (d *Decoder) readString(p []byte, wantStr bool) (s string, remain []byte, err error) { +// It returns a reference to the encoded string data to permit deferring decode costs +// until after the caller verifies all data is present. +func (d *Decoder) readString(p []byte) (u undecodedString, remain []byte, err error) { if len(p) == 0 { - return "", p, errNeedMore + return u, p, errNeedMore } isHuff := p[0]&128 != 0 strLen, p, err := readVarInt(7, p) if err != nil { - return "", p, err + return u, p, err } if d.maxStrLen != 0 && strLen > uint64(d.maxStrLen) { - return "", nil, ErrStringLength + // Returning an error here means Huffman decoding errors + // for non-indexed strings past the maximum string length + // are ignored, but the server is returning an error anyway + // and because the string is not indexed the error will not + // affect the decoding state. + return u, nil, ErrStringLength } if uint64(len(p)) < strLen { - return "", p, errNeedMore - } - if !isHuff { - if wantStr { - s = string(p[:strLen]) - } - return s, p[strLen:], nil + return u, p, errNeedMore } + u.isHuff = isHuff + u.b = p[:strLen] + return u, p[strLen:], nil +} - if wantStr { - buf := bufPool.Get().(*bytes.Buffer) - buf.Reset() // don't trust others - defer bufPool.Put(buf) - if err := huffmanDecode(buf, d.maxStrLen, p[:strLen]); err != nil { - buf.Reset() - return "", nil, err - } +type undecodedString struct { + isHuff bool + b []byte +} + +func (d *Decoder) decodeString(u undecodedString) (string, error) { + if !u.isHuff { + return string(u.b), nil + } + buf := bufPool.Get().(*bytes.Buffer) + buf.Reset() // don't trust others + var s string + err := huffmanDecode(buf, d.maxStrLen, u.b) + if err == nil { s = buf.String() - buf.Reset() // be nice to GC } - return s, p[strLen:], nil + buf.Reset() // be nice to GC + bufPool.Put(buf) + return s, err } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/golang.org/x/net/http2/server.go new/vendor/golang.org/x/net/http2/server.go --- old/vendor/golang.org/x/net/http2/server.go 2023-02-14 09:37:54.000000000 +0100 +++ new/vendor/golang.org/x/net/http2/server.go 2023-02-18 09:07:00.000000000 +0100 @@ -843,8 +843,13 @@ // and then reports when it's done. // At most one goroutine can be running writeFrameAsync at a time per // serverConn. -func (sc *serverConn) writeFrameAsync(wr FrameWriteRequest) { - err := wr.write.writeFrame(sc) +func (sc *serverConn) writeFrameAsync(wr FrameWriteRequest, wd *writeData) { + var err error + if wd == nil { + err = wr.write.writeFrame(sc) + } else { + err = sc.framer.endWrite() + } sc.wroteFrameCh <- frameWriteResult{wr: wr, err: err} } @@ -1251,9 +1256,16 @@ sc.writingFrameAsync = false err := wr.write.writeFrame(sc) sc.wroteFrame(frameWriteResult{wr: wr, err: err}) + } else if wd, ok := wr.write.(*writeData); ok { + // Encode the frame in the serve goroutine, to ensure we don't have + // any lingering asynchronous references to data passed to Write. + // See https://go.dev/issue/58446. + sc.framer.startWriteDataPadded(wd.streamID, wd.endStream, wd.p, nil) + sc.writingFrameAsync = true + go sc.writeFrameAsync(wr, wd) } else { sc.writingFrameAsync = true - go sc.writeFrameAsync(wr) + go sc.writeFrameAsync(wr, nil) } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/modules.txt new/vendor/modules.txt --- old/vendor/modules.txt 2023-02-14 09:37:54.000000000 +0100 +++ new/vendor/modules.txt 2023-02-18 09:07:00.000000000 +0100 @@ -7,7 +7,7 @@ fortio.org/dflag/configmap fortio.org/dflag/dynloglevel fortio.org/dflag/endpoint -# fortio.org/log v1.2.0 +# fortio.org/log v1.2.2 ## explicit; go 1.18 fortio.org/log # fortio.org/version v1.0.2 @@ -27,10 +27,10 @@ # github.com/google/uuid v1.3.0 ## explicit github.com/google/uuid -# golang.org/x/exp v0.0.0-20230212135524-a684f29349b6 +# golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb ## explicit; go 1.18 golang.org/x/exp/constraints -# golang.org/x/net v0.6.0 +# golang.org/x/net v0.7.0 ## explicit; go 1.17 golang.org/x/net/context golang.org/x/net/http/httpguts @@ -51,7 +51,7 @@ golang.org/x/text/transform golang.org/x/text/unicode/bidi golang.org/x/text/unicode/norm -# google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc +# google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44 ## explicit; go 1.19 google.golang.org/genproto/googleapis/rpc/status # google.golang.org/grpc v1.53.0