aws / aws/aws-sdk-cpp

Unable to CONNECT through Broadcom proxy

Offen
#1,872 6 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
feature-request p3
Vorherrschende Sprache
C++
Sterne
2.2k
Forks
1.2k
Ø Merge
4 T. 11 Std.
Gemergte PRs (30 T.)
13

Beschreibung

### Describe the issue

Our Distributed Media Engine (DME) is a CentOS Linux system that use the AWS C++ SDK to push files to S3. This feature is running successfully at many customers but several have experienced a problem where the DME is unable to make a CONNECT to S3 through this particular Blue Coat/Broadcom proxy: https://www.edgeblue.com/DataSheets/ds_sg_proxy_v1-2.pdf

Proxy logs, Broadcom support, and customer proxy experts indicate that the CONNECT is being rejected by the proxy because it has invalid headers, and they are specifically identifying “content-length” as the problem.

The following paragraph in RFC 7231 https://datatracker.ietf.org/doc/html/rfc7231#page-31 advises against sending a payload body on a CONNECT:

“A payload within a CONNECT request message has no defined semantics;
sending a payload body on a CONNECT request might cause some existing
implementations to reject the request.”

Attached is a packet trace screenshot showing a sample CONNECT from DME using AWS SDK version 1.9.132. The DME use case for the SDK is pushing files to S3 and apparently the SDK is including the first file payload with the CONNECT, which triggers the use of the content-length header, which is causing the block from the proxy.

Not sure whether to call it a feature request or a bug or maybe there is a different way for us to use the SDK -- can you tell us how to avoid having the SDK include a content-length header on a proxy CONNECT?

Note that other services in the same DME system are using curl directly (not via the AWS SDK) and those work fine with the same proxy, it's only the CONNECT from the SDK that has content-length and is blocked.

### Steps to Reproduce

Full source file attached but to summarize: it calls SetAwsClient to configure and then repeatedly calls ProcessMsg to post files to S3.

[AwsS3Push.txt](https://github.com/aws/aws-sdk-cpp/files/8188354/AwsS3Push.txt)

### Current behavior

Attached jpg is screens shot from a packet trace showing the headers on the proxy CONNECT as it works today.
We need to have the CONNECT not include content-length.
![SDK_CONNECT](https://user-images.githubusercontent.com/80123195/156829245-0e53892e-2eaf-4374-aa73-f3ff621ab258.JPG)

### AWS CPP SDK version used

1.9.132

### compiler and version used

clang 5.0.1

### Operating System and version

CentOS 7

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit der angehängten Quelle AwsS3Push.txt, insbesondere SetAwsClient und ProcessMsg, und vergleiche die Anforderung von AWS SDK 1.9.132 mit dem angehängten Proxy-CONNECT-Trace. Reproduziere den Upload über den Broadcom-Proxy unter CentOS 7 und verfolge anschließend den Proxy-Verbindungspfad des SDK. Als abgeschlossen gilt die Aufgabe, wenn CONNECT ohne einen content-length-Header erfolgreich ist und S3-Uploads weiterhin funktionieren.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
aws, cpp
Bereich
cloud, networking
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.