Conversation
|
Review requested:
|
|
Shows an error in quic code (@jasnell): |
|
I opened ngtcp2/ngtcp2#1970 for the ngtcp2 error. |
|
temporary workaround. Aside from this, there are no other problems, and it compiles successfully. diff --git a/src/quic/streams.h b/src/quic/streams.h
index c230815d78e..3c9fb100219 100644
--- a/src/quic/streams.h
+++ b/src/quic/streams.h
@@ -292,7 +292,12 @@ class Stream final : public AsyncWrap,
struct PendingHeaders;
class Outbound;
-
+
+
+ struct OutboundDeleter {
+ void operator() (Outbound* ptr) const;
+ };
+
// Gets a reader for the data received for this stream from the peer,
BaseObjectPtr<Blob::Reader> get_reader();
@@ -335,7 +340,7 @@ class Stream final : public AsyncWrap,
AliasedStruct<Stats> stats_;
AliasedStruct<State> state_;
BaseObjectWeakPtr<Session> session_;
- std::unique_ptr<Outbound> outbound_;
+ std::unique_ptr<Outbound, OutboundDeleter> outbound_;
std::shared_ptr<DataQueue> inbound_;
// If the stream cannot be opened yet, it will be created in a pending state.
diff --git a/src/quic/streams.cc b/src/quic/streams.cc
index 8fe5b72ce1f..8fa9c264c4f 100644
--- a/src/quic/streams.cc
+++ b/src/quic/streams.cc
@@ -739,6 +739,11 @@ class Stream::Outbound final : public MemoryRetainer {
size_t uncommitted_ = 0;
};
+
+void Stream::OutboundDeleter::operator() (Stream::Outbound* ptr) const {
+ delete ptr;
+}
+
// ============================================================================
#define V(name, key, no_side_effect) \
@@ -1038,7 +1043,7 @@ void Stream::set_outbound(std::shared_ptr<DataQueue> source) {
if (!source || !is_writable()) return;
Debug(this, "Setting the outbound data source");
DCHECK_NULL(outbound_);
- outbound_ = std::make_unique<Outbound>(this, std::move(source));
+ outbound_ = std::unique_ptr<Outbound, OutboundDeleter>(new Outbound(this, std::move(source)));
state_->has_outbound = 1;
if (!is_pending()) session_->ResumeStream(id());
}
|
|
is this planned to be backported to v25 and v24 as well or it stays for v26 only? |
|
@nodejs/quic PTAL at #61132 (comment). |
Following Chromium. Closes: nodejs#61125 Refs: https://issues.chromium.org/issues/388070065
|
Now that quic is behind a compile-time flag, this should pass. |
|
@nodejs/build does it have to be semver-major? |
I think we've always treated these as semver-major as |
|
Looks like this triggers an error with GCC 14: https://ci.nodejs.org/job/node-test-commit-linux/68207/nodes=alpine-latest-x64/console |
|
Config for Windows doesn't seem to work: https://ci.nodejs.org/job/node-compile-windows/65002/nodes=win-vs2022_clang/console |
|
fyi V8 still builds with |
VS2022 comes with Clang 19.x, which doesn't support '/std:c++23preview'. VS2026 comes with Clang 20.x, which supports it, so the way I see it, the only way to make this happen is by using VS2022. |
|
I guess you meant "by using VS2026" :) What do you think about it? |
Correct, it was a typo. The compilation works on VS2026, as far as I know (tested on main), so there is no problem there. Infra (both test and release) is where most (if not all) of the work would have to be done - creating new machines, setting them up, connecting to Jenkins, etc. I've done this for VS2022, so it should be very similar for VS2026. The question I have is tied to the ETA - is there some date by which we have to transition? I saw from a comment that for V8, |
|
I wasn't aware that V8 didn't make the switch. We can wait for them. |
|
I was thinking in this way - once v20 goes EOL in a few months, we can start removing VS2019 compilation machines, as they will no longer be needed (or should we keep them for some more time?). Once that's being worked on, we can start adding VS2026 machines in parallel (basically replacing 2019 with 2026), thus keeping the number of VMs the same. Does this sound reasonable to you? |
|
Sounds good to me! |
Following Chromium.
Closes: #61125
Refs: https://issues.chromium.org/issues/388070065