Skip to content

http_proxy support can issue non-compliant CONNECT requests #26227

@thatch

Description

@thatch

What version of gRPC and what language are you using?

grpcio==1.37.1 via python

What operating system (Linux, Windows,...) and version?

Linux (but built from source using pip)

What runtime / compiler are you using (e.g. python version or version of gcc)

Python 3.8 and likely clang

What did you do?

Following up on googleads/google-ads-python#423 it appears that with a http proxy set, grpc is can issue CONNECT requests that lack a port number. This was triggered by a change in google-ads in release 10.0.0 that I assume works in the non-proxy case.

What did you expect to see?

I would expect that either grpc validates that port is present, or grpc adds a default port.

The port is required as part of the "authority form", per

https://datatracker.ietf.org/doc/html/rfc7231#section-4.3.6
https://datatracker.ietf.org/doc/html/rfc7230#section-5.3.3

In google-ads==9.0.0, it provides the full form to grpc, and this works.

CONNECT googleads.googleapis.com:443 HTTP/1.0

What did you see instead?

CONNECT googleads.googleapis.com HTTP/1.0

In google-ads==10.0.0, it omits the port, and grpc passes this along to the proxy which then rejects it as invalid.
This shows as "failed to connect to all addresses" with no further information unless you enable GRPC_TRACE.

More logs are in the linked google-ads issue.

Anything else we should know about your project / environment?

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions