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-05 19:20:20 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fortio (Old) and /work/SRC/openSUSE:Factory/.fortio.new.4462 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fortio" Sun Feb 5 19:20:20 2023 rev:28 rq:1063164 version:1.40.1 Changes: -------- --- /work/SRC/openSUSE:Factory/fortio/fortio.changes 2023-01-26 13:59:37.988533234 +0100 +++ /work/SRC/openSUSE:Factory/.fortio.new.4462/fortio.changes 2023-02-05 19:20:21.471610751 +0100 @@ -1,0 +2,10 @@ +Sat Feb 04 12:24:53 UTC 2023 - ka...@b1-systems.de + +- Update to version 1.40.1: + * fix special grpc metadata handling (#697) + * Bump docker/setup-buildx-action from 2.2.1 to 2.4.0 (#698) + * Bump github/codeql-action from 2.1.39 to 2.2.1 (#699) + * Bump google.golang.org/grpc from 1.52.1 to 1.52.3 (#694) + * Always initialize DebugHandler's startTime + misc cleanup (#693) + +------------------------------------------------------------------- Old: ---- fortio-1.40.0.tar.gz New: ---- fortio-1.40.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fortio.spec ++++++ --- /var/tmp/diff_new_pack.FyM5Ij/_old 2023-02-05 19:20:21.971613641 +0100 +++ /var/tmp/diff_new_pack.FyM5Ij/_new 2023-02-05 19:20:21.975613664 +0100 @@ -19,7 +19,7 @@ %define __arch_install_post export NO_BRP_STRIP_DEBUG=true Name: fortio -Version: 1.40.0 +Version: 1.40.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.FyM5Ij/_old 2023-02-05 19:20:22.015613896 +0100 +++ /var/tmp/diff_new_pack.FyM5Ij/_new 2023-02-05 19:20:22.019613918 +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.40.0</param> + <param name="revision">v1.40.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.40.0.tar.gz</param> + <param name="archive">fortio-1.40.1.tar.gz</param> </service> </services> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.FyM5Ij/_old 2023-02-05 19:20:22.043614057 +0100 +++ /var/tmp/diff_new_pack.FyM5Ij/_new 2023-02-05 19:20:22.047614081 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/fortio/fortio</param> - <param name="changesrevision">43a882efd38f26ec6d70685090c6fdc78b1821de</param></service></servicedata> + <param name="changesrevision">a681ef1703e792f06e70f2386dfe30038c071b10</param></service></servicedata> (No newline at EOF) ++++++ fortio-1.40.0.tar.gz -> fortio-1.40.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.40.0/.github/workflows/codeql-analysis.yml new/fortio-1.40.1/.github/workflows/codeql-analysis.yml --- old/fortio-1.40.0/.github/workflows/codeql-analysis.yml 2023-01-25 17:39:53.000000000 +0100 +++ new/fortio-1.40.1/.github/workflows/codeql-analysis.yml 2023-02-02 16:43:46.000000000 +0100 @@ -44,7 +44,7 @@ # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@a34ca99b4610d924e04c68db79e503e1f79f9f02 # pin@v2 + uses: github/codeql-action/init@3ebbd71c74ef574dbc558c82f70e52732c8b44fe # pin@v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -55,7 +55,7 @@ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@a34ca99b4610d924e04c68db79e503e1f79f9f02 # pin@v2 + uses: github/codeql-action/autobuild@3ebbd71c74ef574dbc558c82f70e52732c8b44fe # pin@v2 # â¹ï¸ Command-line programs to run using the OS shell. # ð https://git.io/JvXDl @@ -66,4 +66,4 @@ # make bootstrap # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@a34ca99b4610d924e04c68db79e503e1f79f9f02 # pin@v2 + uses: github/codeql-action/analyze@3ebbd71c74ef574dbc558c82f70e52732c8b44fe # pin@v2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.40.0/.github/workflows/main.yml new/fortio-1.40.1/.github/workflows/main.yml --- old/fortio-1.40.0/.github/workflows/main.yml 2023-01-25 17:39:53.000000000 +0100 +++ new/fortio-1.40.1/.github/workflows/main.yml 2023-02-02 16:43:46.000000000 +0100 @@ -29,7 +29,7 @@ - name: Set up Docker Buildx id: buildx - uses: docker/setup-buildx-action@8c0edbc76e98fa90f69d9a2c020dcb50019dc325 # pin@v2 + uses: docker/setup-buildx-action@15c905b16b06416d2086efa066dd8e3a35cc7f98 # pin@v2 - name: Available platforms run: echo ${{ steps.buildx.outputs.platforms }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.40.0/.github/workflows/manual-build.yml new/fortio-1.40.1/.github/workflows/manual-build.yml --- old/fortio-1.40.0/.github/workflows/manual-build.yml 2023-01-25 17:39:53.000000000 +0100 +++ new/fortio-1.40.1/.github/workflows/manual-build.yml 2023-02-02 16:43:46.000000000 +0100 @@ -30,7 +30,7 @@ - name: Set up Docker Buildx id: buildx - uses: docker/setup-buildx-action@8c0edbc76e98fa90f69d9a2c020dcb50019dc325 # pin@v2 + uses: docker/setup-buildx-action@15c905b16b06416d2086efa066dd8e3a35cc7f98 # pin@v2 - name: Build id: build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.40.0/README.md new/fortio-1.40.1/README.md --- old/fortio-1.40.0/README.md 2023-01-25 17:39:53.000000000 +0100 +++ new/fortio-1.40.1/README.md 2023-02-02 16:43:46.000000000 +0100 @@ -54,13 +54,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.40.0/fortio-linux_amd64-1.40.0.tgz \ +curl -L https://github.com/fortio/fortio/releases/download/v1.40.1/fortio-linux_amd64-1.40.1.tgz \ | sudo tar -C / -xvzpf - # or the debian package -wget https://github.com/fortio/fortio/releases/download/v1.40.0/fortio_1.40.0_amd64.deb -dpkg -i fortio_1.40.0_amd64.deb +wget https://github.com/fortio/fortio/releases/download/v1.40.1/fortio_1.40.1_amd64.deb +dpkg -i fortio_1.40.1_amd64.deb # or the rpm -rpm -i https://github.com/fortio/fortio/releases/download/v1.40.0/fortio-1.40.0-1.x86_64.rpm +rpm -i https://github.com/fortio/fortio/releases/download/v1.40.1/fortio-1.40.1-1.x86_64.rpm # and more, see assets in release page ``` @@ -70,7 +70,7 @@ brew install fortio ``` -On Windows, download https://github.com/fortio/fortio/releases/download/v1.40.0/fortio_win_1.40.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.40.1/fortio_win_1.40.1.zip and extract `fortio.exe` to any location, then using the Windows Command Prompt: ``` fortio.exe server ``` @@ -119,7 +119,7 @@ <details> <!-- use release/updateFlags.sh to update this section --> <pre> -ΦοÏÏίο 1.40.0 usage: +ΦοÏÏίο 1.40.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.40.0/fgrpc/grpcrunner.go new/fortio-1.40.1/fgrpc/grpcrunner.go --- old/fortio-1.40.0/fgrpc/grpcrunner.go 2023-01-25 17:39:53.000000000 +0100 +++ new/fortio-1.40.1/fgrpc/grpcrunner.go 2023-02-02 16:43:46.000000000 +0100 @@ -57,7 +57,7 @@ return net.Dial(fnet.UnixDomainSocket, o.UnixDomainSocket) })) } - opts = append(opts, extractDialOptions(o.Metadata)...) + opts = append(opts, o.dialOptions...) conn, err := grpc.Dial(serverAddr, opts...) if err != nil { log.Errf("failed to connect to %s with certificate %s and override %s: %v", serverAddr, o.CACert, o.CertOverride, err) @@ -89,7 +89,7 @@ var err error var res interface{} status := grpc_health_v1.HealthCheckResponse_SERVING - if grpcstate.Metadata.Len() != 0 { + if len(grpcstate.Metadata) != 0 { // filtered one outCtx = metadata.NewOutgoingContext(outCtx, grpcstate.Metadata) } if grpcstate.Ping { @@ -121,15 +121,17 @@ periodic.RunnerOptions fhttp.TLSOptions Destination string - Service string // Service to be checked when using grpc health check - Profiler string // file to save profiles to. defaults to no profiling - Payload string // Payload to be sent for grpc ping service - Streams int // number of streams. total go routines and data streams will be streams*numthreads. - Delay time.Duration // Delay to be sent when using grpc ping service - CertOverride string // Override the cert virtual host of authority for testing - AllowInitialErrors bool // whether initial errors don't cause an abort - UsePing bool // use our own Ping proto for grpc load instead of standard health check one. - Metadata metadata.MD // metadata that will be added to the request + Service string // Service to be checked when using grpc health check + Profiler string // file to save profiles to. defaults to no profiling + Payload string // Payload to be sent for grpc ping service + Streams int // number of streams. total go routines and data streams will be streams*numthreads. + Delay time.Duration // Delay to be sent when using grpc ping service + CertOverride string // Override the cert virtual host of authority for testing + AllowInitialErrors bool // whether initial errors don't cause an abort + UsePing bool // use our own Ping proto for grpc load instead of standard health check one. + Metadata metadata.MD // input metadata that will be added to the request + dialOptions []grpc.DialOption // grpc dial options extracted from Metadata (authority and user-agent extracted) + filteredMetadata metadata.MD // filtered version of Metadata metadata (without authority and user-agent) } // RunGRPCTest runs an http test and returns the aggregated stats. @@ -160,11 +162,13 @@ r := periodic.NewPeriodicRunner(&o.RunnerOptions) defer r.Options().Abort() numThreads := r.Options().NumThreads // may change + o.dialOptions, o.filteredMetadata = extractDialOptionsAndFilter(o.Metadata) total := GRPCRunnerResults{ RetCodes: make(HealthResultMap), Destination: o.Destination, Streams: o.Streams, Ping: o.UsePing, + Metadata: o.Metadata, // the original one } grpcstate := make([]GRPCRunnerResults, numThreads) out := r.Options().Out // Important as the default value is set from nil to stdout inside NewPeriodicRunner @@ -185,9 +189,9 @@ grpcstate[i].Ping = o.UsePing var err error outCtx := context.Background() - if o.Metadata.Len() != 0 { - outCtx = metadata.NewOutgoingContext(outCtx, o.Metadata) - grpcstate[i].Metadata = o.Metadata + if o.filteredMetadata.Len() != 0 { + outCtx = metadata.NewOutgoingContext(outCtx, o.filteredMetadata) + grpcstate[i].Metadata = o.filteredMetadata // the one used to send } if o.UsePing { //nolint:nestif grpcstate[i].clientP = NewPingServerClient(conn) @@ -312,18 +316,20 @@ return parsedDest } -// extractDialOptions extract special MD and convert them to dial options. -func extractDialOptions(in metadata.MD) (out []grpc.DialOption) { +// extractDialOptionsAndFilter converts special MD into dial options and filters them in outMD. +func extractDialOptionsAndFilter(in metadata.MD) (out []grpc.DialOption, outMD metadata.MD) { + outMD = make(metadata.MD, len(in)) for k, v := range in { switch k { - // Transfer these 2 and avoid having them duplicated in original MD + // Transfer these 2 case "user-agent": - delete(in, k) out = append(out, grpc.WithUserAgent(v[0])) case "host": - delete(in, k) out = append(out, grpc.WithAuthority(v[0])) + default: + outMD[k] = v } } - return out + log.Infof("Extracted dial options: %+v", out) + return out, outMD } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.40.0/fgrpc/grpcrunner_test.go new/fortio-1.40.1/fgrpc/grpcrunner_test.go --- old/fortio-1.40.0/fgrpc/grpcrunner_test.go 2023-01-25 17:39:53.000000000 +0100 +++ new/fortio-1.40.1/fgrpc/grpcrunner_test.go 2023-02-02 16:43:46.000000000 +0100 @@ -397,10 +397,10 @@ } type mdTestServer struct { + t *testing.T mdKey string mdValue string health.Server - error } func (m *mdTestServer) Ping(ctx context.Context, _ *PingMessage) (*PingMessage, error) { @@ -408,7 +408,7 @@ val := md.Get(m.mdKey) if len(val) == 0 || val[0] != m.mdValue { - m.error = fmt.Errorf("metadata %s not found or value is not %s,actual value: %v", m.mdKey, m.mdValue, val) + m.t.Errorf("metadata %s not found or value is not %s,actual value: %v", m.mdKey, m.mdValue, val) } return &PingMessage{}, nil } @@ -418,7 +418,7 @@ md, _ := metadata.FromIncomingContext(ctx) val := md.Get(m.mdKey) if len(val) == 0 || val[0] != m.mdValue { - m.error = fmt.Errorf("metadata %s not found or value is not %s,actual value: %v", m.mdKey, m.mdValue, val) + m.t.Errorf("metadata %q not found or value is not %q, actual value: %v", m.mdKey, m.mdValue, val) } return &grpc_health_v1.HealthCheckResponse{Status: grpc_health_v1.HealthCheckResponse_SERVING}, nil } @@ -427,7 +427,7 @@ server := grpc.NewServer() lis, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { - m.error = err + m.t.Fatal(err) return nil } grpc_health_v1.RegisterHealthServer(server, m) @@ -442,15 +442,13 @@ } func TestGRPCRunnerWithMetadata(t *testing.T) { - server := &mdTestServer{} + server := &mdTestServer{t: t} addr := server.Serve() - if server.error != nil { - t.Fatal(server.error) - } tests := []struct { - name string - key string - value string + name string + key string + serverKey string + value string }{ { name: "valid metadata", @@ -462,27 +460,34 @@ key: "ghi", value: "", }, + { + name: "authority", + key: "host", + serverKey: ":authority", + value: "xyz", + }, } for _, test := range tests { server.mdKey = test.key + if test.serverKey != "" { + server.mdKey = test.serverKey + } server.mdValue = test.value - server.error = nil _, err := RunGRPCTest(&GRPCRunnerOptions{ + Streams: 10, Destination: addr.String(), Metadata: map[string][]string{ test.key: {test.value}, }, }) if err != nil { - t.Errorf("Test case: %s failed , err: %v", test.name, err) - } - if server.error != nil { - t.Errorf("Test case: %s failed , err: %v", test.name, server.error) + t.Errorf("Test case: %s failed, err: %v", test.name, err) } + // errors will be set by the server } } -func Test_extractDialOptions(t *testing.T) { +func TestHeaderHandling(t *testing.T) { type args struct { in metadata.MD } @@ -542,11 +547,11 @@ } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - gotOut := extractDialOptions(tt.args.in) + gotOut, mdOut := extractDialOptionsAndFilter(tt.args.in) if !reflect.DeepEqual(len(gotOut), tt.wantOutLen) { - t.Errorf("extractDialOptions() = %v, want %v", len(gotOut), tt.wantOutLen) + t.Errorf("extractDialOptionsAndFilter() = %v, want %v", len(gotOut), tt.wantOutLen) } - if !reflect.DeepEqual(tt.args.in, tt.wantMD) { + if !reflect.DeepEqual(mdOut, tt.wantMD) { t.Errorf("got md = %v, want %v", tt.args.in, tt.wantMD) } }) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.40.0/fgrpc/pingsrv.go new/fortio-1.40.1/fgrpc/pingsrv.go --- old/fortio-1.40.0/fgrpc/pingsrv.go 2023-01-25 17:39:53.000000000 +0100 +++ new/fortio-1.40.1/fgrpc/pingsrv.go 2023-02-02 16:43:46.000000000 +0100 @@ -114,6 +114,7 @@ func PingClientCall(serverAddr string, n int, payload string, delay time.Duration, tlsOpts *fhttp.TLSOptions, md metadata.MD, ) (float64, error) { o := GRPCRunnerOptions{Destination: serverAddr, TLSOptions: *tlsOpts, Metadata: md} + o.dialOptions, o.filteredMetadata = extractDialOptionsAndFilter(md) conn, err := Dial(&o) // somehow this never seem to error out, error comes later if err != nil { return -1, err // error already logged @@ -122,7 +123,7 @@ cli := NewPingServerClient(conn) outCtx := context.Background() if md.Len() != 0 { - outCtx = metadata.NewOutgoingContext(outCtx, md) + outCtx = metadata.NewOutgoingContext(outCtx, o.filteredMetadata) } // Warm up: _, err = cli.Ping(outCtx, msg) @@ -176,7 +177,8 @@ // service. func GrpcHealthCheck(serverAddr, svcname string, n int, tlsOpts *fhttp.TLSOptions, md metadata.MD) (*HealthResultMap, error) { log.Infof("GrpcHealthCheck for %s svc '%s', %d iterations", serverAddr, svcname, n) - o := GRPCRunnerOptions{Destination: serverAddr, TLSOptions: *tlsOpts} + o := GRPCRunnerOptions{Destination: serverAddr, TLSOptions: *tlsOpts, Metadata: md} + o.dialOptions, o.filteredMetadata = extractDialOptionsAndFilter(md) conn, err := Dial(&o) if err != nil { return nil, err @@ -188,7 +190,7 @@ outCtx := context.Background() if md.Len() != 0 { - outCtx = metadata.NewOutgoingContext(outCtx, md) + outCtx = metadata.NewOutgoingContext(outCtx, o.filteredMetadata) } for i := 1; i <= n; i++ { start := time.Now() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.40.0/fgrpc/pingsrv_test.go new/fortio-1.40.1/fgrpc/pingsrv_test.go --- old/fortio-1.40.0/fgrpc/pingsrv_test.go 2023-01-25 17:39:53.000000000 +0100 +++ new/fortio-1.40.1/fgrpc/pingsrv_test.go 2023-02-02 16:43:46.000000000 +0100 @@ -129,13 +129,11 @@ server := &mdTestServer{} addr := server.Serve() TLSInsecure := &fhttp.TLSOptions{Insecure: true} - if server.error != nil { - t.Fatal(server.error) - } tests := []struct { - name string - key string - value string + name string + key string + serverKey string + value string }{ { name: "valid metadata", @@ -147,34 +145,39 @@ key: "ghi", value: "", }, + { + name: "authority", + key: "host", + serverKey: ":authority", + value: "xyz", + }, } + for _, test := range tests { server.mdKey = test.key + if test.serverKey != "" { + server.mdKey = test.serverKey + } server.mdValue = test.value - server.error = nil _, err := PingClientCall(addr.String(), 2, "", 0, TLSInsecure, metadata.MD{ test.key: []string{test.value}, }) if err != nil { t.Errorf("PingClientCall test case: %s failed , err: %v", test.name, err) } - if server.error != nil { - t.Errorf("PingClientCall test case: %s failed , err: %v", test.name, server.error) - } } for _, test := range tests { server.mdKey = test.key + if test.serverKey != "" { + server.mdKey = test.serverKey + } server.mdValue = test.value - server.error = nil _, err := GrpcHealthCheck(addr.String(), "", 2, TLSInsecure, metadata.MD{ test.key: []string{test.value}, }) if err != nil { t.Errorf("GrpcHealthCheck test case: %s failed , err: %v", test.name, err) } - if server.error != nil { - t.Errorf("GrpcHealthCheck test case: %s failed , err: %v", test.name, server.error) - } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.40.0/fhttp/http_server.go new/fortio-1.40.1/fhttp/http_server.go --- old/fortio-1.40.0/fhttp/http_server.go 2023-01-25 17:39:53.000000000 +0100 +++ new/fortio-1.40.1/fhttp/http_server.go 2023-02-02 16:43:46.000000000 +0100 @@ -45,7 +45,7 @@ var ( // Start time of the server (used in debug handler for uptime). - startTime time.Time + startTime = time.Now() // EchoRequests is the number of request received. Only updated in Debug mode. EchoRequests int64 // TODO find a way to only include this on binaries and not library mode (#433). @@ -238,9 +238,8 @@ return mux, addr.(*net.TCPAddr) } // Note: we actually use the fact it's not supported as an error server for tests - need to change that - log.Errf("Secure setup not yet supported. Will just close incoming connections for now") + log.Warnf("Closing server requested (for error testing)") listener, addr := fnet.Listen("closing server", "0") - // err = http.ServeTLS(listener, nil, "", "") // go 1.9 go func() { err := closingServer(listener) if err != nil { @@ -296,6 +295,9 @@ */ // DebugHandler returns debug/useful info to http client. +// Note this can be dangerous and shouldn't be exposed to the internet. +// A safer version is available as part of fortio's proxy +// https://github.com/fortio/proxy/blob/main/rp/reverse_proxy.go func DebugHandler(w http.ResponseWriter, r *http.Request) { LogRequest(r, "Debug") var buf bytes.Buffer @@ -536,12 +538,7 @@ // RedirectToHTTPS Sets up a redirector to https on the given port. // (Do not create a loop, make sure this is addressed from an ingress). func RedirectToHTTPS(port string) net.Addr { - m, a := HTTPServer("https redirector", port) - if m == nil { - return nil // error already logged - } - m.HandleFunc("/", RedirectToHTTPSHandler) - return a + return HTTPServerWithHandler("https redirector", port, http.HandlerFunc(RedirectToHTTPSHandler)) } // TLSInfo returns " https <cipher suite>" if the request is using TLS, or "" otherwise. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.40.0/go.mod new/fortio-1.40.1/go.mod --- old/fortio-1.40.0/go.mod 2023-01-25 17:39:53.000000000 +0100 +++ new/fortio-1.40.1/go.mod 2023-02-02 16:43:46.000000000 +0100 @@ -9,7 +9,7 @@ github.com/google/uuid v1.3.0 golang.org/x/exp v0.0.0-20221111204811-129d8d6c17ab golang.org/x/net v0.5.0 - google.golang.org/grpc v1.52.1 + google.golang.org/grpc v1.52.3 ) require ( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.40.0/go.sum new/fortio-1.40.1/go.sum --- old/fortio-1.40.0/go.sum 2023-01-25 17:39:53.000000000 +0100 +++ new/fortio-1.40.1/go.sum 2023-02-02 16:43:46.000000000 +0100 @@ -21,8 +21,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 h1:a2S6M0+660BgMNl++4JPlcAO/CjkqYItDEZwkoDQK7c= google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/grpc v1.52.1 h1:2NpOPk5g5Xtb0qebIEs7hNIa++PdtZLo2AQUpc1YnSU= -google.golang.org/grpc v1.52.1/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.52.3 h1:pf7sOysg4LdgBqduXveGKrcEwbStiK2rtfghdzlUYDQ= +google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= ++++++ vendor.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/google.golang.org/grpc/version.go new/vendor/google.golang.org/grpc/version.go --- old/vendor/google.golang.org/grpc/version.go 2023-01-26 07:37:46.000000000 +0100 +++ new/vendor/google.golang.org/grpc/version.go 2023-02-04 13:24:54.000000000 +0100 @@ -19,4 +19,4 @@ package grpc // Version is the current grpc version. -const Version = "1.52.1" +const Version = "1.52.3" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/modules.txt new/vendor/modules.txt --- old/vendor/modules.txt 2023-01-26 07:37:46.000000000 +0100 +++ new/vendor/modules.txt 2023-02-04 13:24:54.000000000 +0100 @@ -42,7 +42,7 @@ # google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 ## explicit; go 1.19 google.golang.org/genproto/googleapis/rpc/status -# google.golang.org/grpc v1.52.1 +# google.golang.org/grpc v1.52.3 ## explicit; go 1.17 google.golang.org/grpc google.golang.org/grpc/attributes