Skip to content

Commit f8aa74d

Browse files
Zainullin DamirZainullin Damir
authored andcommitted
++
1 parent 294f2f4 commit f8aa74d

4 files changed

Lines changed: 19 additions & 14 deletions

File tree

src/plugins/process/quic/src/quic.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,8 @@ void QUICPlugin::processInitial(
190190
const QUICInitialHeaderView& initialHeaderView,
191191
QUICData& pluginData) noexcept
192192
{
193-
pluginData.processingState.initialConnectionId.assign(
193+
pluginData.processingState.initialConnectionId = ConnectionId();
194+
pluginData.processingState.initialConnectionId->assign(
194195
initialHeaderView.destinationConnectionId.begin(),
195196
initialHeaderView.destinationConnectionId.end());
196197
if (quicDirection.has_value()
@@ -268,7 +269,8 @@ constexpr void QUICPlugin::parseRetry(
268269
*/
269270
// Additionally set token len
270271
pluginData.retrySourceId.assign(sourceConnectionId.begin(), sourceConnectionId.end());
271-
pluginData.processingState.initialConnectionId.assign(
272+
pluginData.processingState.initialConnectionId = ConnectionId();
273+
pluginData.processingState.initialConnectionId->assign(
272274
destinationConnectionId.begin(),
273275
destinationConnectionId.end());
274276
pluginData.quicTokenLength = 16; // ?????????
@@ -406,8 +408,7 @@ PluginInitResult QUICPlugin::onInit(const FlowContext& flowContext, void* plugin
406408
QUICParser quicParser;
407409
const bool quicParsed = quicParser.parse(
408410
getPayload(flowContext.packet),
409-
// pluginData.processingState.initialConnectionId,
410-
ConnectionId(), // TODO FIX
411+
std::nullopt,
411412
flowContext.flowRecord.flowKey.l4Protocol);
412413
if (!quicParsed) {
413414
return {

src/plugins/process/quic/src/quicData.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ struct QUICData {
6060
struct {
6161
QUICTemporalStorage temporalCIDStorage;
6262
std::size_t retryPacketCount = 0;
63-
ConnectionId initialConnectionId;
63+
std::optional<ConnectionId> initialConnectionId;
6464
} processingState;
6565
};
6666

src/plugins/process/quic/src/quicParser.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,16 +86,20 @@ QUICParser::parseHandshake(std::span<const std::byte> payload) noexcept
8686
std::optional<std::size_t> QUICParser::parseInitial(
8787
std::span<const std::byte> payload,
8888
std::span<const uint8_t> currentDCID,
89-
std::span<const uint8_t> initialDCID,
89+
const std::optional<ConnectionId>& initialDCID,
9090
const std::byte headerForm,
9191
std::span<const std::byte> salt,
9292
const QUICVersion version) noexcept
9393
{
9494
initialHeaderView
9595
= QUICInitialHeaderView::createFrom(payload, headerForm, salt, currentDCID, version);
96-
if (!initialHeaderView.has_value()) {
97-
initialHeaderView
98-
= QUICInitialHeaderView::createFrom(payload, headerForm, salt, initialDCID, version);
96+
if (!initialHeaderView.has_value() && initialDCID.has_value()) {
97+
initialHeaderView = QUICInitialHeaderView::createFrom(
98+
payload,
99+
headerForm,
100+
salt,
101+
toSpan<const uint8_t>(*initialDCID),
102+
version);
99103
if (!initialHeaderView.has_value()) {
100104
return std::nullopt;
101105
}
@@ -115,7 +119,7 @@ std::optional<std::size_t> QUICParser::parseInitial(
115119

116120
bool QUICParser::parse(
117121
std::span<const std::byte> payload,
118-
const ConnectionId& initialConnectionId,
122+
const std::optional<ConnectionId>& initialConnectionId,
119123
const uint8_t l4Protocol) noexcept
120124
{
121125
// Handle coalesced packets
@@ -151,7 +155,7 @@ bool QUICParser::parse(
151155
secondaryHeaderSize = parseInitial(
152156
payload,
153157
headerView->destinationConnectionId,
154-
toSpan<const uint8_t>(initialConnectionId),
158+
initialConnectionId,
155159
headerView->headerForm,
156160
*salt,
157161
*headerView->version);

src/plugins/process/quic/src/quicParser.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ class QUICParser {
8484

8585
bool parse(
8686
std::span<const std::byte> payload,
87-
const ConnectionId& initialConnectionId,
87+
const std::optional<ConnectionId>& initialConnectionId,
8888
const uint8_t l4Protocol) noexcept;
8989

9090
private:
@@ -97,8 +97,8 @@ class QUICParser {
9797

9898
std::optional<std::size_t> parseInitial(
9999
std::span<const std::byte> payload,
100-
std::span<const uint8_t> currentDCID,
101-
std::span<const uint8_t> initialDCID,
100+
const std::span<const uint8_t> currentDCID,
101+
const std::optional<ConnectionId>& initialDCID,
102102
const std::byte headerForm,
103103
std::span<const std::byte> salt,
104104
const QUICVersion version) noexcept;

0 commit comments

Comments
 (0)