Skip to content

Commit 4c92179

Browse files
Joanna Jofacebook-github-bot
authored andcommitted
Back out "Implement server-side ALPN for WebTransport"
Summary: Original commit changeset: e4955bc68a91 Original Phabricator Diff: D81896045 Reviewed By: hanidamlaj Differential Revision: D83367386 fbshipit-source-id: 63db2fa09d5d30ee4bd4ffd9ab56699a96084f7a
1 parent 57251b0 commit 4c92179

File tree

5 files changed

+2
-135
lines changed

5 files changed

+2
-135
lines changed

proxygen/httpserver/samples/hq/SampleHandlers.cpp

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
*/
88

99
#include <proxygen/httpserver/samples/hq/SampleHandlers.h>
10-
#include <proxygen/lib/http/webtransport/HTTPWebTransport.h>
1110

1211
#include <boost/algorithm/string.hpp>
1312
#include <boost/algorithm/string/split.hpp>
@@ -359,19 +358,6 @@ void DeviousBatonHandler::onHeadersComplete(
359358
resp.setWantsKeepalive(false);
360359
devious_.reset();
361360
}
362-
std::vector<std::string> supportedProtocols{"deviousbaton-01"};
363-
if (auto wtAvailableProtocols =
364-
HTTPWebTransport::getWTAvailableProtocols(*msg)) {
365-
if (auto wtProtocol = HTTPWebTransport::negotiateWTProtocol(
366-
wtAvailableProtocols.value(), supportedProtocols)) {
367-
// TODO: Set the version from the negotiated protocol instead of query
368-
// param
369-
HTTPWebTransport::setWTProtocol(resp, wtProtocol.value());
370-
} else {
371-
VLOG(4) << "Failed to negotiate WebTransport protocol";
372-
resp.setStatusCode(400);
373-
}
374-
}
375361
resp.dumpMessage(4);
376362
txn_->sendHeaders(resp);
377363

proxygen/httpserver/samples/hq/devious/html/devious_baton_client.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,8 @@ class DeviousBatonClient {
4646

4747
async connect() {
4848
try {
49-
// Create WebTransport connection with deviousbaton-01 subprotocol
50-
this.transport = new WebTransport(this.serverUrl.toString(), {
51-
protocols: ["deviousbaton-01"]
52-
});
49+
// Create WebTransport connection
50+
this.transport = new WebTransport(this.serverUrl.toString());
5351

5452
// Wait for connection to be established
5553
await this.transport.ready;

proxygen/lib/http/HeaderConstants.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,4 @@ extern const std::string kMasque;
2626
extern const std::string kWebsocketString;
2727
extern const std::string kStatus200;
2828

29-
constexpr std::string_view kWTAvailableProtocols{"wt-available-protocols"};
30-
constexpr std::string_view kWTProtocol{"wt-protocol"};
31-
3229
} // namespace proxygen::headers

proxygen/lib/http/webtransport/HTTPWebTransport.cpp

Lines changed: 0 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -9,103 +9,13 @@
99
#include <proxygen/lib/http/webtransport/HTTPWebTransport.h>
1010

1111
#include <proxygen/lib/http/HTTPMessage.h>
12-
#include <proxygen/lib/http/structuredheaders/StructuredHeadersDecoder.h>
13-
#include <proxygen/lib/http/structuredheaders/StructuredHeadersEncoder.h>
1412

1513
namespace proxygen {
1614

17-
using WTProtocolError = HTTPWebTransport::WTProtocolError;
18-
1915
/*static*/ bool HTTPWebTransport::isConnectMessage(const HTTPMessage& msg) {
2016
constexpr std::string_view kWebTransport{"webtransport"};
2117
return msg.isRequest() && msg.getMethod() == proxygen::HTTPMethod::CONNECT &&
2218
msg.getUpgradeProtocol() && *msg.getUpgradeProtocol() == kWebTransport;
2319
}
2420

25-
/*static*/ void HTTPWebTransport::setWTAvailableProtocols(
26-
HTTPMessage& msg, const std::vector<std::string>& protocols) {
27-
std::vector<StructuredHeaders::StructuredHeaderItem> items;
28-
items.reserve(protocols.size());
29-
for (const auto& protocol : protocols) {
30-
items.emplace_back(StructuredHeaderItem::Type::STRING, protocol);
31-
}
32-
33-
if (!items.empty()) {
34-
StructuredHeadersEncoder encoder;
35-
encoder.encodeList(items);
36-
msg.getHeaders().set(headers::kWTAvailableProtocols, encoder.get());
37-
}
38-
}
39-
40-
/*static*/ void HTTPWebTransport::setWTProtocol(HTTPMessage& msg,
41-
std::string protocol) {
42-
StructuredHeadersEncoder encoder;
43-
StructuredHeaderItem item(StructuredHeaderItem::Type::STRING, protocol);
44-
encoder.encodeItem(item);
45-
msg.getHeaders().set(headers::kWTProtocol, encoder.get());
46-
}
47-
48-
/*static*/ folly::Expected<std::vector<std::string>, WTProtocolError>
49-
HTTPWebTransport::getWTAvailableProtocols(const HTTPMessage& msg) {
50-
auto header = msg.getHeaders().combine(headers::kWTAvailableProtocols);
51-
if (header.empty()) {
52-
return folly::makeUnexpected(WTProtocolError::HeaderMissing);
53-
}
54-
55-
StructuredHeadersDecoder decoder(header);
56-
std::vector<StructuredHeaderItem> list;
57-
58-
if (decoder.decodeList(list) != DecodeError::OK) {
59-
return folly::makeUnexpected(WTProtocolError::ParseFailed);
60-
}
61-
62-
std::vector<std::string> protocols;
63-
for (const auto& item : list) {
64-
if (item.tag != StructuredHeaders::StructuredHeaderItem::Type::STRING) {
65-
return folly::makeUnexpected(WTProtocolError::ParseFailed);
66-
}
67-
protocols.emplace_back(item.get<std::string>());
68-
}
69-
70-
if (protocols.empty()) {
71-
return folly::makeUnexpected(WTProtocolError::EmptyList);
72-
}
73-
74-
return protocols;
75-
}
76-
77-
/*static*/ folly::Expected<std::string, WTProtocolError>
78-
HTTPWebTransport::getWTProtocol(const HTTPMessage& msg) {
79-
auto header = msg.getHeaders().getSingleOrEmpty(headers::kWTProtocol);
80-
if (header.empty()) {
81-
return folly::makeUnexpected(WTProtocolError::HeaderMissing);
82-
}
83-
84-
StructuredHeadersDecoder decoder(header);
85-
StructuredHeaderItem item;
86-
87-
if (decoder.decodeItem(item) != DecodeError::OK) {
88-
return folly::makeUnexpected(WTProtocolError::ParseFailed);
89-
}
90-
if (item.tag != StructuredHeaders::StructuredHeaderItem::Type::STRING) {
91-
return folly::makeUnexpected(WTProtocolError::ParseFailed);
92-
}
93-
94-
return item.get<std::string>();
95-
}
96-
97-
/*static*/ folly::Optional<std::string> HTTPWebTransport::negotiateWTProtocol(
98-
const std::vector<std::string>& wtAvailableProtocols,
99-
const std::vector<std::string>& supportedProtocols) {
100-
for (const auto& protocol : supportedProtocols) {
101-
if (std::find(wtAvailableProtocols.begin(),
102-
wtAvailableProtocols.end(),
103-
protocol) != wtAvailableProtocols.end()) {
104-
return protocol;
105-
}
106-
}
107-
108-
return folly::none;
109-
}
110-
11121
}; // namespace proxygen

proxygen/lib/http/webtransport/HTTPWebTransport.h

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,37 +8,13 @@
88

99
#pragma once
1010

11-
#include <folly/Expected.h>
12-
#include <folly/Optional.h>
13-
1411
namespace proxygen {
1512

1613
class HTTPMessage;
1714

1815
class HTTPWebTransport {
1916
public:
20-
enum class WTProtocolError : uint8_t {
21-
HeaderMissing,
22-
ParseFailed,
23-
EmptyList
24-
};
25-
2617
static bool isConnectMessage(const proxygen::HTTPMessage& msg);
27-
28-
static void setWTAvailableProtocols(
29-
HTTPMessage& msg, const std::vector<std::string>& protocols);
30-
31-
static void setWTProtocol(HTTPMessage& msg, std::string protocol);
32-
33-
static folly::Expected<std::vector<std::string>, WTProtocolError>
34-
getWTAvailableProtocols(const HTTPMessage& msg);
35-
36-
static folly::Expected<std::string, WTProtocolError> getWTProtocol(
37-
const HTTPMessage& msg);
38-
39-
static folly::Optional<std::string> negotiateWTProtocol(
40-
const std::vector<std::string>& wtAvailableProtocols,
41-
const std::vector<std::string>& supportedProtocols);
4218
};
4319

4420
} // namespace proxygen

0 commit comments

Comments
 (0)