Mathew Heard

Results 344 comments of Mathew Heard

@jasnell What is the correct way of removing a node stream from the consumer? I'm seeing a memory leak currently with node readable stream usage. I've tried. - disposing the...

Ok, so improvements: 1. the inbound consumer needs to be cleared in DoDestroy, this removes one thing keeping the quic buffer alive ``` // clear inbound consumer inbound_consumer_ = nullptr;...

3. Reported when running an automated test case involving connection interruption. ``` node[19785]: ../src/quic/stream.cc:583:void node::quic::Stream::Resume(): Assertion `session()' failed. 1: 0x55741f64f5a4 node::Abort() [node] 2: 0x55741f64f638 [node] 3: 0x55741f7f3044 node::quic::Stream::Resume() [node] 4:...

4. Picked this up looping our application tests ``` node:internal/quic/binding:185 this[owner_symbol][kResetStream](error); ^ TypeError: this[owner_symbol][kResetStream] is not a function at Session.onStreamReset (node:internal/quic/binding:185:35) ```

@jasnell thats unfortunate timing for me given my availability is largely this week. I'll keep testing but I'm a bit limited currently with the crash frequency preventing the longer running...

In regards to 4 - `this[owner_symbol]` is a session object that should be a stream. In retrospect it's right there in the stacktrace sigh. ``` node:internal/quic/binding:188 this[owner_symbol][kResetStream](error); ^ TypeError: this[owner_symbol][kResetStream]...

Found matter 4. My work is not PR ready (nor is it intended to be) but in case it helps: https://github.com/HalleyAssist/node/commit/6e53ec3083131e0ef1eff1cf9631c5aea74f5ac2 This squashed commit hasnt been tested yet (currently building...

5. If an error (triggering a 'error' event) occurs during `Session.close()` the promise (i.e `await session.close()`) never returns.

6. `end()`ing an outgoing stream source doesnt transmit an end of stream to the remote end. Outside of HTTP3 `ShutdownStreamWrite` doesnt appear to be used. Neither does `stream.destroy()` `ResetStream(kQuicNoError);` in...

7. Streams leak unresolved promises (retained by rejection catching hooks installed by `setPromiseHandled`). Roughly the solution could be as simple as: ``` function destroyStream(stream, error) { // [...] const {...