Golang gRPC Connection Client Side Error - "Error Reading Server Preface: Http2: Frame Too Large"
I'm Writing a Go Client to Consume Conn, Err: = Grpc. Dialcontext(Ctx, serverAddr, Grpc. Withblock(), Grpc. Withreturnconnectionerror()...
I'm writing a go client to consume
conn, err := grpc.DialContext(ctx, serverAddr, grpc.WithBlock(), grpc.WithReturnConnectionError(), getTransportCredential(false))
The above call hangs until context timeout and returns the following error
failed to dial: context deadline exceeded: connection error: desc = "error reading server preface: http2: frame too large"
getTransportCredential(insecure bool) is defined below
func getTransportCredential(insecure bool) grpc.DialOption {
if insecure {
return grpc.WithTransportCredentials(insecure2.NewCredentials())
}
rootCAs, err := x509.SystemCertPool()
if err != nil {
panic(err)
}
if rootCAs == nil {
fmt.Println("SystemCertPool is nil")
rootCAs = x509.NewCertPool()
}
caCert := `-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----`
if caCert != "" {
// Append our cert to the system pool
if ok := rootCAs.AppendCertsFromPEM([]byte(caCert)); !ok {
fmt.Println("Couldn't add cert to the cert pool")
}
}
creds := credentials.NewClientTLSFromCert(rootCAs, "")
fmt.Printf("%+v\n", creds.Info())
return grpc.WithTransportCredentials(creds)
}
Could you please help me solve this problem?
I can grpcurl from my machine to the server and get a successful response.
1 Answer
maximum frame size of http/2 is 2^14 (16384) you need to reduce yourself payload,
refer to: , page 76