@fails-components/webtransport 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CMakeLists.txt CHANGED
@@ -168,7 +168,6 @@ add_library(gquiche STATIC
168
168
  #plattform impl
169
169
  platform/quiche_platform_impl/quiche_export_impl.h
170
170
  platform/quiche_platform_impl/quiche_logging_impl.h
171
- platform/quiche_platform_impl/quiche_logging_impl.cc
172
171
  platform/quiche_platform_impl/quiche_containers_impl.h
173
172
  platform/quiche_platform_impl/quiche_client_stats_impl.h
174
173
  platform/quiche_platform_impl/quiche_event_loop_impl.h
@@ -225,6 +224,8 @@ third_party/googleurl/url/url_parse_file.cc
225
224
  third_party/googleurl/url/url_canon_host.cc
226
225
  third_party/googleurl/url/url_canon_ip.cc
227
226
  third_party/googleurl/url/url_constants.cc
227
+ third_party/googleurl/url/url_features.cc
228
+ third_party/googleurl/url/url_features.h
228
229
  third_party/googleurl/url/url_util.cc
229
230
  third_party/googleurl/url/url_util.h
230
231
  third_party/googleurl/url/gurl.cc
@@ -257,6 +258,7 @@ third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_fl
257
258
  third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.h
258
259
  third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.cc
259
260
  third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_prefetch_impl.h
261
+ third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.h
260
262
  third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_mutex_impl.cc
261
263
  third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_mutex_impl.h
262
264
  third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_stack_trace_impl.cc
@@ -285,6 +287,8 @@ third_party/quiche/quiche/common/quiche_random.h
285
287
  third_party/quiche/quiche/common/quiche_text_utils.cc
286
288
  third_party/quiche/quiche/common/quiche_text_utils.h
287
289
  third_party/quiche/quiche/common/simple_buffer_allocator.cc
290
+ third_party/quiche/quiche/common/structured_headers.h
291
+ third_party/quiche/quiche/common/structured_headers.cc
288
292
  third_party/quiche/quiche/http2/adapter/data_source.h
289
293
  third_party/quiche/quiche/http2/adapter/event_forwarder.cc
290
294
  third_party/quiche/quiche/http2/adapter/event_forwarder.h
@@ -786,6 +790,8 @@ third_party/quiche/quiche/quic/core/quic_stream.h
786
790
  third_party/quiche/quiche/quic/core/quic_stream_frame_data_producer.h
787
791
  third_party/quiche/quiche/quic/core/quic_stream_id_manager.cc
788
792
  third_party/quiche/quiche/quic/core/quic_stream_id_manager.h
793
+ third_party/quiche/quiche/quic/core/quic_stream_priority.cc
794
+ third_party/quiche/quiche/quic/core/quic_stream_priority.h
789
795
  third_party/quiche/quiche/quic/core/quic_stream_send_buffer.cc
790
796
  third_party/quiche/quiche/quic/core/quic_stream_send_buffer.h
791
797
  third_party/quiche/quiche/quic/core/quic_stream_sequencer.cc
@@ -909,6 +915,8 @@ ELSE(WIN32)
909
915
  )
910
916
  ENDIF(WIN32)
911
917
 
918
+ target_compile_options(gquiche PRIVATE -flax-vector-conversions)
919
+
912
920
 
913
921
  add_custom_command(
914
922
  OUTPUT
@@ -1007,11 +1015,6 @@ endif()
1007
1015
  target_link_libraries(gquiche icu)
1008
1016
 
1009
1017
 
1010
- if(APPLE)
1011
- target_compile_definitions (gquiche PRIVATE __APPLE_USE_RFC_3542)
1012
- endif()
1013
-
1014
-
1015
1018
  # google quiche build parameters end
1016
1019
 
1017
1020
  #include_directories(${CMAKE_JS_INC})
package/build.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { arch, argv, env, platform } from 'node:process'
2
2
  import { spawn } from 'node:child_process'
3
- import { rename, mkdtemp, rm, access } from 'node:fs/promises'
3
+ import { cp, rename, mkdtemp, rm, access } from 'node:fs/promises'
4
4
  import { constants } from 'node:fs'
5
5
  import path from 'node:path'
6
6
  import pkg from './package.json' assert { type: 'json' }
@@ -105,9 +105,16 @@ const extractthirdparty = async () => {
105
105
  try {
106
106
  await rm(destdir, { recursive: true, maxRetries: 10 })
107
107
  } catch (err) {
108
- console.log('destdir does not exist: ', err)
108
+ console.log('destdir does not exist (only warning, ignore): ', err)
109
+ }
110
+ try {
111
+ await rename(path.join(copath, '/third_party'), destdir)
112
+ } catch (error) {
113
+ console.log('rename tmp dir failed:', error)
114
+ console.log('copy instead start... (can take a while)...')
115
+ await cp(path.join(copath, '/third_party'), destdir, {recursive: true})
116
+ console.log('copy instead finished')
109
117
  }
110
- await rename(path.join(copath, '/third_party'), destdir)
111
118
  } catch (error) {
112
119
  console.error('failed to get third party code from git', error)
113
120
  fatal = true
@@ -289,6 +296,14 @@ if (argv.length > 2) {
289
296
  process.exit(1)
290
297
  }
291
298
  break
299
+ case 'extract-thirdparty':
300
+ try {
301
+ // if we do not succeed, we have to build it ourselves
302
+ await extractthirdparty()
303
+ } catch (error) {
304
+ console.error('Extract third party failed: ', error)
305
+ }
306
+ break
292
307
  default:
293
308
  console.log('unsupported argument ', argv[2])
294
309
  break
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../lib/session.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../lib/session.js"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../lib/stream.js"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG;AAEH;IA6QE;;OAEG;IACH,sBAFW,qBAAqB,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,wBAAwB,QAmClH;IAhTD;;;;;;;OAOG;IACH;QANqC,MAAM,EAAhC,mBAAmB;QACE,SAAS,EAA9B,cAAc;QACD,SAAS,EAAtB,MAAM;QACQ,aAAa,EAA3B,OAAO;QACO,QAAQ,EAAtB,OAAO;OAmHjB;IAhHC,8CAAyB;IAEzB,8CAA+B;IAC/B,kBAA+B;IAC/B,uBAAuC;IACvC,kBAA6B;IAC7B,gBAAmB;IAEnB,mCAAmC;IACnC,kBADW,QAAQ,IAAI,CAAC,GAAG,IAAI,CACH;IAC5B,mBAkGkB,IAAI,SAlGA;IAGpB,0CA+BC;IA5BK,uEAAoC;IAclC,kBA4EQ,IAAI,SA5EY;IAQ1B,wBAA0B;IAShC,0CAwDC;IArDK,yEAAoC;IA8ClC,iBAcQ,IAAI,SAdW;IAkBnC;;;OAGG;IACH,yBAHW,OAAO,SAAS,EAAE,qBAAqB,GACrC,IAAI,CA0ChB;IAhBO,oCAA0B;IAkBlC;;;OAGG;IACH,mBAHW,eAAe,GACb,IAAI,CAuBhB;IAED;;OAEG;IACH,oBAFW,gBAAgB,QAY1B;IAED;;OAEG;IACH,oBAFW,gBAAgB,QAe1B;IAED;;OAEG;IACH,4BAFW,wBAAwB,QAoClC;IAzBK,qCAA2B;CAgElC;;;;6CAhUY,OAAO,SAAS,EAAE,8BAA8B;;;;oCAChD,OAAO,SAAS,EAAE,qBAAqB;;;;8BACvC,OAAO,SAAS,EAAE,eAAe;;;;+BACjC,OAAO,SAAS,EAAE,gBAAgB;;;;+BAClC,OAAO,SAAS,EAAE,gBAAgB;;;;uCAClC,OAAO,SAAS,EAAE,wBAAwB;;;;kCAE1C,OAAO,SAAS,EAAE,mBAAmB;;;;6BAErC,OAAO,WAAW,EAAE,cAAc;;;;8CAElC,OAAO,YAAY,EAAE,+BAA+B"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../lib/stream.js"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG;AAEH;IAmRE;;OAEG;IACH,sBAFW,qBAAqB,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,wBAAwB,QAmClH;IAtTD;;;;;;;OAOG;IACH;QANqC,MAAM,EAAhC,mBAAmB;QACE,SAAS,EAA9B,cAAc;QACD,SAAS,EAAtB,MAAM;QACQ,aAAa,EAA3B,OAAO;QACO,QAAQ,EAAtB,OAAO;OAmHjB;IAhHC,8CAAyB;IAEzB,8CAA+B;IAC/B,kBAA+B;IAC/B,uBAAuC;IACvC,kBAA6B;IAC7B,gBAAmB;IAEnB,mCAAmC;IACnC,kBADW,QAAQ,IAAI,CAAC,GAAG,IAAI,CACH;IAC5B,mBAkGkB,IAAI,SAlGA;IAGpB,0CA+BC;IA5BK,uEAAoC;IAclC,kBA4EQ,IAAI,SA5EY;IAQ1B,wBAA0B;IAShC,0CAwDC;IArDK,yEAAoC;IA8ClC,iBAcQ,IAAI,SAdW;IAkBnC;;;OAGG;IACH,yBAHW,OAAO,SAAS,EAAE,qBAAqB,GACrC,IAAI,CAgDhB;IAhBO,oCAA0B;IAkBlC;;;OAGG;IACH,mBAHW,eAAe,GACb,IAAI,CAuBhB;IAED;;OAEG;IACH,oBAFW,gBAAgB,QAY1B;IAED;;OAEG;IACH,oBAFW,gBAAgB,QAe1B;IAED;;OAEG;IACH,4BAFW,wBAAwB,QAoClC;IAzBK,qCAA2B;CAgElC;;;;6CAtUY,OAAO,SAAS,EAAE,8BAA8B;;;;oCAChD,OAAO,SAAS,EAAE,qBAAqB;;;;8BACvC,OAAO,SAAS,EAAE,eAAe;;;;+BACjC,OAAO,SAAS,EAAE,gBAAgB;;;;+BAClC,OAAO,SAAS,EAAE,gBAAgB;;;;uCAClC,OAAO,SAAS,EAAE,wBAAwB;;;;kCAE1C,OAAO,SAAS,EAAE,mBAAmB;;;;6BAErC,OAAO,WAAW,EAAE,cAAc;;;;8CAElC,OAAO,YAAY,EAAE,+BAA+B"}
package/lib/session.js CHANGED
@@ -295,7 +295,10 @@ export class Http3WTSession {
295
295
  this.streamObjs.clear()
296
296
 
297
297
  if (this.closedResolve)
298
- this.closedResolve({ closeCode: args.errorcode, reason: 'closed' })
298
+ this.closedResolve({
299
+ closeCode: args.errorcode,
300
+ reason: args.error ? args.error : 'closed'
301
+ })
299
302
  if (this.closeHook) {
300
303
  this.closeHook()
301
304
  delete this.closeHook
package/lib/stream.js CHANGED
@@ -147,26 +147,32 @@ export class Http3WTStream {
147
147
  onStreamRecvSignal(args) {
148
148
  // console.log('onStreamRecvSignal', args)
149
149
  // check if transport is closed
150
+ let parentcleanup = true
150
151
  const parentstate = this.parentobj.state
151
- if (parentstate === 'closed' || parentstate === 'failed') return
152
+ if (parentstate === 'closed' || parentstate === 'failed') {
153
+ console.log('no parent cleanup as parent was closed or failed')
154
+ parentcleanup = false
155
+ }
152
156
  switch (args.nettask) {
153
157
  case 'resetStream':
154
158
  if (this.readable) {
155
- this.parentobj.removeReceiveStream(
156
- this.readable,
157
- this.readableController
158
- )
159
+ if (parentcleanup)
160
+ this.parentobj.removeReceiveStream(
161
+ this.readable,
162
+ this.readableController
163
+ )
159
164
  this.readableclosed = true
160
165
  this.readableController.error(args.code || 0)
161
- } else console.log('stopSending wihtout readable')
166
+ } else console.log('stopSending without readable')
162
167
  break
163
168
 
164
169
  case 'stopSending':
165
170
  if (this.writable) {
166
- this.parentobj.removeSendStream(
167
- this.writable,
168
- this.writableController
169
- )
171
+ if (parentcleanup)
172
+ this.parentobj.removeSendStream(
173
+ this.writable,
174
+ this.writableController
175
+ )
170
176
 
171
177
  this.writableclosed = true
172
178
  this.writableController.error(args.code || 0)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fails-components/webtransport",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "A component to add webtransport support (server and client) to node.js using libquiche",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/index.js",
@@ -60,7 +60,7 @@
60
60
  "mocha": "^10.1.0",
61
61
  "node-forge": "^1.3.1",
62
62
  "prettier": "^2.4.1",
63
- "typescript": "^4.8.4"
63
+ "typescript": "4.8.4"
64
64
  },
65
65
  "binary": {
66
66
  "napi_versions": [
@@ -16,138 +16,6 @@
16
16
  #ifndef QUICHE_COMMON_PLATFORM_NODE_QUICHE_PLATFORM_IMPL_QUICHE_LOGGING_IMPL_H_
17
17
  #define QUICHE_COMMON_PLATFORM_NODE_QUICHE_PLATFORM_IMPL_QUICHE_LOGGING_IMPL_H_
18
18
 
19
- #include <cstdlib>
20
- #include <iostream>
21
- #include <sstream>
22
- #include <string>
23
-
24
- #include "absl/base/attributes.h"
25
-
26
- namespace quiche {
27
-
28
- class DevZeroBuf : public std::streambuf {
29
- public:
30
- std::streamsize xsputn (const char * s, std::streamsize n) override {
31
- return n;
32
- }
33
- int overflow (int c) override {
34
- return 1;
35
- }
36
- };
37
-
38
- class DevZeroStream : public std::ostream {
39
- public:
40
- DevZeroStream() : std::ostream (&buf) {}
41
- private:
42
- DevZeroBuf buf;
43
- };
44
-
45
- class StdoutLogSink {
46
- public:
47
- constexpr StdoutLogSink(): condition(true) {}
48
-
49
- constexpr StdoutLogSink(bool cond): condition(cond) {}
50
-
51
- constexpr StdoutLogSink(int level): condition(level<=logverbose) {}
52
- constexpr StdoutLogSink(const char*, bool cond): condition(cond) {}
53
- constexpr StdoutLogSink(int level, bool cond): condition(level<=logverbose && cond) {}
54
-
55
- template<typename T>
56
- constexpr StdoutLogSink(T& ptr): condition(ptr) {}
57
-
58
-
59
- constexpr std::ostream& stream() { return (condition && !nolog) ? std::cout: dump; }
60
-
61
- // This operator has lower precedence than << but higher than ?:, which is
62
- // useful for implementing QUICHE_DISREGARD_LOG_STREAM below.
63
- void operator&(std::ostream&) {}
64
-
65
-
66
- protected:
67
- bool condition;
68
- static DevZeroStream dump;
69
- static const int logverbose=1;
70
- const bool nolog= true;
71
-
72
- };
73
-
74
-
75
- // We need to actually implement LOG(FATAL), otherwise some functions will fail
76
- // to compile due to the "failed to return value from non-void function" error.
77
- class FatalLogSink : public StdoutLogSink {
78
- public:
79
- ABSL_ATTRIBUTE_NORETURN ~FatalLogSink() { abort(); }
80
- };
81
-
82
- } // namespace quiche
83
-
84
- #define QUICHE_DVLOG_IMPL(verbose_level) \
85
- ::quiche::StdoutLogSink(#verbose_level).stream()
86
- #define QUICHE_DVLOG_IF_IMPL(verbose_level, condition) \
87
- ::quiche::StdoutLogSink(#verbose_level, condition).stream()
88
- #define QUICHE_DLOG_IMPL(severity) ::quiche::StdoutLogSink(#severity).stream()
89
- #define QUICHE_DLOG_IF_IMPL(severity, condition) \
90
- ::quiche::StdoutLogSink(#severity, condition).stream()
91
- #define QUICHE_VLOG_IMPL(verbose_level) \
92
- ::quiche::StdoutLogSink(#verbose_level).stream()
93
- #define QUICHE_LOG_FIRST_N_IMPL(severity, n) \
94
- ::quiche::StdoutLogSink(#severity, n).stream()
95
- #define QUICHE_LOG_EVERY_N_SEC_IMPL(severity, seconds) \
96
- ::quiche::StdoutLogSink(#severity, seconds).stream()
97
- #define QUICHE_LOG_IF_IMPL(severity, condition) \
98
- ::quiche::StdoutLogSink(#severity, condition).stream()
99
-
100
- #define QUICHE_LOG_IMPL(severity) QUICHE_LOG_IMPL_##severity()
101
- #define QUICHE_LOG_IMPL_FATAL() ::quiche::FatalLogSink().stream()
102
- #define QUICHE_LOG_IMPL_DFATAL() ::quiche::StdoutLogSink().stream()
103
- #define QUICHE_LOG_IMPL_ERROR() ::quiche::StdoutLogSink().stream()
104
- #define QUICHE_LOG_IMPL_WARNING() ::quiche::StdoutLogSink().stream()
105
- #define QUICHE_LOG_IMPL_INFO() ::quiche::StdoutLogSink().stream()
106
-
107
- #define QUICHE_PREDICT_FALSE_IMPL(x) (x)
108
- #define QUICHE_PREDICT_TRUE_IMPL(x) (x)
109
-
110
- #define QUICHE_PLOG_IMPL(severity) ::quiche::StdoutLogSink(#severity)
111
-
112
- #define QUICHE_DLOG_INFO_IS_ON_IMPL() false
113
- #define QUICHE_LOG_INFO_IS_ON_IMPL() false
114
- #define QUICHE_LOG_WARNING_IS_ON_IMPL() false
115
- #define QUICHE_LOG_ERROR_IS_ON_IMPL() false
116
-
117
- // This is necessary because we sometimes call QUICHE_DCHECK inside constexpr
118
- // functions, and then write non-constexpr expressions into the resulting log.
119
- #define QUICHE_DISREGARD_LOG_STREAM(stream) \
120
- true ? (void)0 : ::quiche::StdoutLogSink() & (stream)
121
-
122
- #define QUICHE_CHECK_IMPL(condition) ::quiche::StdoutLogSink(condition).stream()
123
- #define QUICHE_CHECK_EQ_IMPL(val1, val2) \
124
- ::quiche::StdoutLogSink((val1)==(val2)).stream()
125
- #define QUICHE_CHECK_NE_IMPL(val1, val2) \
126
- ::quiche::StdoutLogSink((val1)!=(val2)).stream()
127
- #define QUICHE_CHECK_LE_IMPL(val1, val2) \
128
- ::quiche::StdoutLogSink((val1)<=(val2)).stream()
129
- #define QUICHE_CHECK_LT_IMPL(val1, val2) \
130
- ::quiche::StdoutLogSink((val1)<(val2)).stream()
131
- #define QUICHE_CHECK_GE_IMPL(val1, val2) \
132
- ::quiche::StdoutLogSink((val1)>=(val2)).stream()
133
- #define QUICHE_CHECK_GT_IMPL(val1, val2) \
134
- ::quiche::StdoutLogSink((val1)>(val2)).stream()
135
-
136
- #define QUICHE_DCHECK_IMPL(condition) \
137
- QUICHE_DISREGARD_LOG_STREAM(::quiche::StdoutLogSink(condition).stream())
138
- #define QUICHE_DCHECK_EQ_IMPL(val1, val2) \
139
- ::quiche::StdoutLogSink((val1)==(val2)).stream()
140
- #define QUICHE_DCHECK_NE_IMPL(val1, val2) \
141
- ::quiche::StdoutLogSink((val1)!=(val2)).stream()
142
- #define QUICHE_DCHECK_LE_IMPL(val1, val2) \
143
- ::quiche::StdoutLogSink((val1)<=(val2)).stream()
144
- #define QUICHE_DCHECK_LT_IMPL(val1, val2) \
145
- ::quiche::StdoutLogSink((val1)<(val2)).stream()
146
- #define QUICHE_DCHECK_GE_IMPL(val1, val2) \
147
- ::quiche::StdoutLogSink((val1)>=(val2)).stream()
148
- #define QUICHE_DCHECK_GT_IMPL(val1, val2) \
149
- ::quiche::StdoutLogSink((val1)>(val2)).stream()
150
-
151
- #define QUICHE_NOTREACHED_IMPL() QUICHE_DCHECK_IMPL(false)
19
+ #include "third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.h"
152
20
 
153
21
  #endif // QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_LOGGING_IMPL_H_
@@ -5,6 +5,7 @@
5
5
  #ifndef NET_QUICHE_PLATFORM_IMPL_QUICHE_STACK_TRACE_IMPL_H_
6
6
  #define NET_QUICHE_PLATFORM_IMPL_QUICHE_STACK_TRACE_IMPL_H_
7
7
 
8
+ #include <string>
8
9
 
9
10
  #include "third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_stack_trace_impl.h"
10
11
 
@@ -183,7 +183,7 @@ namespace quic
183
183
 
184
184
  void Http3Client::Initialize()
185
185
  {
186
- priority_ = 3;
186
+ priority_ = QuicStreamPriority();
187
187
  connect_attempted_ = false;
188
188
  auto_reconnect_ = false;
189
189
  buffer_body_ = true;
@@ -390,8 +390,7 @@ namespace quic
390
390
  SetLatestCreatedStream(stream);
391
391
  if (latest_created_stream_)
392
392
  {
393
- latest_created_stream_->SetPriority(
394
- spdy::SpdyStreamPrecedence(priority_));
393
+ latest_created_stream_->SetPriority(priority_);
395
394
  }
396
395
  finish(latest_created_stream_);
397
396
  });
@@ -734,7 +733,15 @@ namespace quic
734
733
  {
735
734
  QUICHE_DCHECK(initialized_);
736
735
  QUICHE_DCHECK(!connected());
737
- QuicPacketWriter *writer = new LevelTriggeredPacketWriter(GetLatestFD(), eventloop_->getQuicEventLoop());
736
+ QuicPacketWriter *writer;
737
+ if (eventloop_->getQuicEventLoop()->SupportsEdgeTriggered())
738
+ {
739
+ writer = new QuicDefaultPacketWriter(GetLatestFD());
740
+ }
741
+ else
742
+ {
743
+ writer = new LevelTriggeredPacketWriter(GetLatestFD(), eventloop_->getQuicEventLoop());
744
+ }
738
745
  ParsedQuicVersion mutual_version = UnsupportedQuicVersion();
739
746
  const bool can_reconnect_with_different_version =
740
747
  CanReconnectWithDifferentVersion(&mutual_version);
@@ -931,8 +938,7 @@ namespace quic
931
938
  bool success =
932
939
  event_loop->ArtificiallyNotifyEvent(fd, kSocketEventReadable);
933
940
  QUICHE_DCHECK(success);
934
- }
935
- if (!event_loop->SupportsEdgeTriggered())
941
+ } else if (!event_loop->SupportsEdgeTriggered())
936
942
  {
937
943
  bool success = event_loop->RearmSocket(fd, kSocketEventReadable);
938
944
  QUICHE_DCHECK(success);
package/src/http3client.h CHANGED
@@ -245,7 +245,7 @@ namespace quic
245
245
 
246
246
  void set_auto_reconnect(bool reconnect) { auto_reconnect_ = reconnect; }
247
247
 
248
- void set_priority(spdy::SpdyPriority priority) { priority_ = priority; }
248
+ void set_priority(QuicStreamPriority priority) { priority_ = priority; }
249
249
 
250
250
  void WaitForWriteToFlush();
251
251
 
@@ -404,7 +404,7 @@ namespace quic
404
404
  // Parsed response trailers (if present), copied from the stream in OnClose.
405
405
  spdy::Http2HeaderBlock response_trailers_;
406
406
 
407
- spdy::SpdyPriority priority_;
407
+ QuicStreamPriority priority_;
408
408
  std::string response_;
409
409
  // bytes_read_ and bytes_written_ are updated only when stream_ is released;
410
410
  // prefer bytes_read() and bytes_written() member functions.
@@ -107,8 +107,10 @@ namespace quic
107
107
  void Http3EventLoop::Schedule(std::function<void()> action)
108
108
  {
109
109
  // QUICHE_DCHECK(!quit_.HasBeenNotified());
110
- QuicWriterMutexLock lock(&scheduled_actions_lock_);
111
- scheduled_actions_.push_back(std::move(action));
110
+ {
111
+ QuicWriterMutexLock lock(&scheduled_actions_lock_);
112
+ scheduled_actions_.push_back(std::move(action));
113
+ }
112
114
  dynamic_cast<LibeventQuicEventLoop *>(quic_event_loop_.get())->WakeUp();
113
115
  }
114
116
 
@@ -363,12 +365,11 @@ namespace quic
363
365
  if (!checkQw())
364
366
  return;
365
367
  HandleScope scope(qw_->Env());
366
-
367
368
  Http3Constructors *constr = qw_->Env().GetInstanceData<Http3Constructors>();
368
369
  Napi::Object strobj = constr->stream.New({});
369
370
  Http3WTStreamJS *strjs = Napi::ObjectWrap<Http3WTStreamJS>::Unwrap(strobj);
370
371
  strjs->setObj(stream);
371
- strjs->Ref();
372
+ if (!stream->gone()) strjs->Ref();
372
373
  stream->setJS(strjs);
373
374
 
374
375
  Napi::Object objVal = sessionobj->getJS()->Value();
@@ -342,8 +342,7 @@ namespace quic
342
342
  bool success =
343
343
  event_loop->ArtificiallyNotifyEvent(fd, kSocketEventReadable);
344
344
  QUICHE_DCHECK(success);
345
- }
346
- if (!event_loop->SupportsEdgeTriggered())
345
+ } else if (!event_loop->SupportsEdgeTriggered())
347
346
  {
348
347
  bool success = event_loop->RearmSocket(fd, kSocketEventReadable);
349
348
  QUICHE_DCHECK(success);
@@ -225,7 +225,7 @@ namespace quic
225
225
  QUICHE_DCHECK_EQ(promised_info.stream_id, promised_stream->id());
226
226
  QUIC_DLOG(INFO) << "created server push stream " << promised_stream->id();
227
227
 
228
- promised_stream->SetPriority(promised_info.precedence);
228
+ promised_stream->SetPriority(promised_info.priority);
229
229
 
230
230
  spdy::Http2HeaderBlock request_headers(
231
231
  std::move(promised_info.request_headers));
@@ -44,14 +44,14 @@ namespace quic
44
44
  public:
45
45
  PromisedStreamInfo(spdy::Http2HeaderBlock request_headers,
46
46
  QuicStreamId stream_id,
47
- const spdy::SpdyStreamPrecedence &precedence)
47
+ const QuicStreamPriority &priority)
48
48
  : request_headers(std::move(request_headers)),
49
49
  stream_id(stream_id),
50
- precedence(precedence),
50
+ priority(priority),
51
51
  is_cancelled(false) {}
52
52
  spdy::Http2HeaderBlock request_headers;
53
53
  QuicStreamId stream_id;
54
- spdy::SpdyStreamPrecedence precedence;
54
+ QuicStreamPriority priority;
55
55
  bool is_cancelled;
56
56
  };
57
57
 
@@ -23,12 +23,20 @@ namespace quic
23
23
 
24
24
  stream_->chunks_.pop_front();
25
25
  }
26
+ if (!stream_->stop_sending_received_)
27
+ {
28
+ stream_->eventloop_->informStreamRecvSignal(stream_, 0, NetworkTask::stopSending);
29
+ }
30
+ if (!stream_->stream_was_reset_)
31
+ {
32
+ stream_->eventloop_->informStreamRecvSignal(stream_, 0, NetworkTask::resetStream);
33
+ }
26
34
  Http3WTStreamJS *strobj = stream_->getJS();
27
35
  if (strobj) {
28
36
  stream_->stream_ = nullptr;
29
37
  stream_->eventloop_->informUnref(strobj);
30
38
  } else {
31
- delete stream_->stream_;
39
+ stream_->stream_ = nullptr;
32
40
  }
33
41
  }
34
42
 
@@ -48,6 +56,7 @@ namespace quic
48
56
  // replying with a FIN rather than a RESET_STREAM is more appropriate here.
49
57
  stream_->send_fin_ = true;
50
58
  OnCanWrite();*/
59
+ stream_->stream_was_reset_ = true;
51
60
  lasterror = error;
52
61
  stream_->eventloop_->informStreamRecvSignal(stream_, error, NetworkTask::resetStream); // may be move below
53
62
  }
@@ -112,9 +121,8 @@ namespace quic
112
121
  if (send_fin_)
113
122
  {
114
123
  bool success = stream_->SendFin();
115
- QUICHE_DCHECK(success);
116
- fin_was_sent_ = true;
124
+ if (success) fin_was_sent_ = true;
117
125
  }
118
126
  }
119
127
 
120
- }
128
+ }
@@ -34,7 +34,7 @@ namespace quic
34
34
  friend Http3WTStreamJS;
35
35
 
36
36
  public:
37
- Http3WTStream(WebTransportStream *stream, Http3EventLoop *eventloop) : stream_(stream), eventloop_(eventloop)
37
+ Http3WTStream(WebTransportStream *stream, Http3EventLoop *eventloop) : stream_(stream), eventloop_(eventloop), js_(nullptr)
38
38
  {
39
39
  }
40
40
 
@@ -109,6 +109,10 @@ namespace quic
109
109
  js_ = js;
110
110
  };
111
111
 
112
+ bool gone() {
113
+ return !stream_;
114
+ }
115
+
112
116
  protected:
113
117
  // internal functions called by js object
114
118
  void startReadingInt()
@@ -211,6 +215,7 @@ namespace quic
211
215
  bool stop_sending_received_ = false;
212
216
  bool pause_reading_ = false;
213
217
  bool can_read_pending_ = false;
218
+ bool stream_was_reset_ = false;
214
219
  std::deque<WChunks> chunks_;
215
220
  };
216
221
 
@@ -1,7 +0,0 @@
1
- #include "quiche_platform_impl/quiche_logging_impl.h"
2
-
3
- namespace quiche {
4
-
5
- DevZeroStream StdoutLogSink::dump;
6
-
7
- }