mediasoup 3.9.4 → 3.9.5

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.
@@ -81,7 +81,7 @@ class Worker extends EnhancedEventEmitter_1.EnhancedEventEmitter {
81
81
  // options
82
82
  {
83
83
  env: {
84
- MEDIASOUP_VERSION: '3.9.4',
84
+ MEDIASOUP_VERSION: '3.9.5',
85
85
  // Let the worker process inherit all environment variables, useful
86
86
  // if a custom and not in the path GCC is used so the user can set
87
87
  // LD_LIBRARY_PATH environment variable for runtime.
@@ -9,7 +9,7 @@ export { types };
9
9
  /**
10
10
  * Expose mediasoup version.
11
11
  */
12
- export declare const version = "3.9.4";
12
+ export declare const version = "3.9.5";
13
13
  /**
14
14
  * Expose parseScalabilityMode() function.
15
15
  */
package/node/lib/index.js CHANGED
@@ -11,7 +11,7 @@ exports.types = types;
11
11
  /**
12
12
  * Expose mediasoup version.
13
13
  */
14
- exports.version = '3.9.4';
14
+ exports.version = '3.9.5';
15
15
  /**
16
16
  * Expose parseScalabilityMode() function.
17
17
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mediasoup",
3
- "version": "3.9.4",
3
+ "version": "3.9.5",
4
4
  "description": "Cutting Edge WebRTC Video Conferencing",
5
5
  "contributors": [
6
6
  "Iñaki Baz Castillo <ibc@aliax.net> (https://inakibaz.me)",
@@ -80,8 +80,8 @@
80
80
  "@types/debug": "^4.1.7",
81
81
  "@types/random-number": "^0.0.1",
82
82
  "@types/uuid": "^8.3.4",
83
- "@typescript-eslint/eslint-plugin": "^5.9.0",
84
- "@typescript-eslint/parser": "^5.9.0",
83
+ "@typescript-eslint/eslint-plugin": "^5.9.1",
84
+ "@typescript-eslint/parser": "^5.9.1",
85
85
  "eslint": "^8.6.0",
86
86
  "eslint-plugin-jest": "^25.3.4",
87
87
  "jest": "^27.4.7",
package/worker/Makefile CHANGED
@@ -12,6 +12,7 @@ GULP = ./scripts/node_modules/.bin/gulp
12
12
  LCOV = ./deps/lcov/bin/lcov
13
13
  DOCKER ?= docker
14
14
  PIP_DIR = $(MEDIASOUP_OUT_DIR)/pip
15
+ INSTALL_DIR ?= $(MEDIASOUP_OUT_DIR)/$(MEDIASOUP_BUILDTYPE)
15
16
  BUILD_DIR ?= $(MEDIASOUP_OUT_DIR)/$(MEDIASOUP_BUILDTYPE)/build
16
17
  MESON ?= $(PIP_DIR)/bin/meson
17
18
  MESON_ARGS ?= ""
@@ -71,6 +72,9 @@ setup: meson-ninja
71
72
  # https://github.com/ninja-build/ninja/issues/1997
72
73
  ifeq ($(MEDIASOUP_BUILDTYPE),Release)
73
74
  $(MESON) setup \
75
+ --prefix $(INSTALL_DIR) \
76
+ --bindir '' \
77
+ --libdir '' \
74
78
  --buildtype release \
75
79
  -Db_ndebug=true \
76
80
  -Db_pie=true \
@@ -79,6 +83,9 @@ ifeq ($(MEDIASOUP_BUILDTYPE),Release)
79
83
  $(MESON_ARGS) \
80
84
  $(BUILD_DIR) || \
81
85
  $(MESON) setup \
86
+ --prefix $(INSTALL_DIR) \
87
+ --bindir '' \
88
+ --libdir '' \
82
89
  --buildtype release \
83
90
  -Db_ndebug=true \
84
91
  -Db_pie=true \
@@ -88,6 +95,9 @@ ifeq ($(MEDIASOUP_BUILDTYPE),Release)
88
95
  else
89
96
  ifeq ($(MEDIASOUP_BUILDTYPE),Debug)
90
97
  $(MESON) setup \
98
+ --prefix $(INSTALL_DIR) \
99
+ --bindir '' \
100
+ --libdir '' \
91
101
  --buildtype debug \
92
102
  -Db_pie=true \
93
103
  -Db_staticpic=true \
@@ -95,6 +105,9 @@ ifeq ($(MEDIASOUP_BUILDTYPE),Debug)
95
105
  $(MESON_ARGS) \
96
106
  $(BUILD_DIR) || \
97
107
  $(MESON) setup \
108
+ --prefix $(INSTALL_DIR) \
109
+ --bindir '' \
110
+ --libdir '' \
98
111
  --buildtype debug \
99
112
  -Db_pie=true \
100
113
  -Db_staticpic=true \
@@ -102,6 +115,9 @@ ifeq ($(MEDIASOUP_BUILDTYPE),Debug)
102
115
  $(BUILD_DIR)
103
116
  else
104
117
  $(MESON) setup \
118
+ --prefix $(INSTALL_DIR) \
119
+ --bindir '' \
120
+ --libdir '' \
105
121
  --buildtype $(MEDIASOUP_BUILDTYPE) \
106
122
  -Db_ndebug=if-release \
107
123
  -Db_pie=true \
@@ -110,6 +126,9 @@ else
110
126
  $(MESON_ARGS) \
111
127
  $(BUILD_DIR) || \
112
128
  $(MESON) setup \
129
+ --prefix $(INSTALL_DIR) \
130
+ --bindir '' \
131
+ --libdir '' \
113
132
  --buildtype $(MEDIASOUP_BUILDTYPE) \
114
133
  -Db_ndebug=if-release \
115
134
  -Db_pie=true \
@@ -120,7 +139,7 @@ endif
120
139
  endif
121
140
 
122
141
  clean:
123
- $(RM) -rf $(MEDIASOUP_OUT_DIR)/$(MEDIASOUP_BUILDTYPE)
142
+ $(RM) -rf $(INSTALL_DIR)
124
143
 
125
144
  clean-build:
126
145
  $(RM) -rf $(BUILD_DIR)
@@ -136,12 +155,8 @@ clean-all: clean-subprojects
136
155
 
137
156
  mediasoup-worker: setup
138
157
  ifeq ($(MEDIASOUP_WORKER_BIN),)
139
- $(MESON) compile -j $(CORES) -C $(BUILD_DIR) mediasoup-worker
140
- endif
141
- ifeq ($(OS),Windows_NT)
142
- cp $(BUILD_DIR)/mediasoup-worker.exe $(MEDIASOUP_OUT_DIR)/$(MEDIASOUP_BUILDTYPE)/mediasoup-worker.exe
143
- else
144
- cp $(BUILD_DIR)/mediasoup-worker $(MEDIASOUP_OUT_DIR)/$(MEDIASOUP_BUILDTYPE)/mediasoup-worker
158
+ $(MESON) compile -C $(BUILD_DIR) -j $(CORES) mediasoup-worker
159
+ $(MESON) install -C $(BUILD_DIR) --no-rebuild --tags mediasoup-worker
145
160
  endif
146
161
 
147
162
  xcode: setup
@@ -154,8 +169,8 @@ format:
154
169
  $(GULP) --gulpfile ./scripts/gulpfile.js format:worker
155
170
 
156
171
  test: setup
157
- ifeq ($(MEDIASOUP_WORKER_BIN),)
158
- $(MESON) compile -j $(CORES) -C $(BUILD_DIR) mediasoup-worker-test
172
+ $(MESON) compile -C $(BUILD_DIR) -j $(CORES) mediasoup-worker-test
173
+ $(MESON) install -C $(BUILD_DIR) --no-rebuild --tags mediasoup-worker-test
159
174
  # On Windows lcov doesn't work (at least not yet) and we need to add `.exe` to
160
175
  # the binary path.
161
176
  ifeq ($(OS),Windows_NT)
@@ -164,7 +179,6 @@ else
164
179
  $(LCOV) --directory ./ --zerocounters
165
180
  $(BUILD_DIR)/mediasoup-worker-test --invisibles --use-colour=yes $(MEDIASOUP_TEST_TAGS)
166
181
  endif
167
- endif
168
182
 
169
183
  tidy:
170
184
  $(PYTHON) ./scripts/clang-tidy.py \
@@ -177,9 +191,8 @@ tidy:
177
191
  -quiet
178
192
 
179
193
  fuzzer: setup
180
- ifeq ($(MEDIASOUP_WORKER_BIN),)
181
- $(MESON) compile -j $(CORES) -C $(BUILD_DIR) mediasoup-worker-fuzzer
182
- endif
194
+ $(MESON) compile -C $(BUILD_DIR) -j $(CORES) mediasoup-worker-fuzzer
195
+ $(MESON) install -C $(BUILD_DIR) --no-rebuild --tags mediasoup-worker-fuzzer
183
196
 
184
197
  fuzzer-run-all:
185
198
  LSAN_OPTIONS=verbosity=1:log_threads=1 ./$(BUILD_DIR)/mediasoup-worker-fuzzer -artifact_prefix=fuzzer/reports/ -max_len=1400 fuzzer/new-corpus deps/webrtc-fuzzer-corpora/corpora/stun-corpus deps/webrtc-fuzzer-corpora/corpora/rtp-corpus deps/webrtc-fuzzer-corpora/corpora/rtcp-corpus
@@ -200,4 +213,5 @@ docker-run:
200
213
  mediasoup/docker:latest
201
214
 
202
215
  libmediasoup-worker: setup
203
- $(MESON) compile -j $(CORES) -C $(BUILD_DIR) libmediasoup-worker
216
+ $(MESON) compile -C $(BUILD_DIR) -j $(CORES) libmediasoup-worker
217
+ $(MESON) install -C $(BUILD_DIR) --no-rebuild --tags libmediasoup-worker
@@ -61,15 +61,15 @@ namespace RTC
61
61
  {
62
62
  return this->selectedTuple;
63
63
  }
64
- void SetUsernameFragment(const std::string& usernameFragment)
64
+ void RestartIce(const std::string& usernameFragment, const std::string& password)
65
65
  {
66
66
  this->oldUsernameFragment = this->usernameFragment;
67
67
  this->usernameFragment = usernameFragment;
68
- }
69
- void SetPassword(const std::string& password)
70
- {
68
+
71
69
  this->oldPassword = this->password;
72
70
  this->password = password;
71
+
72
+ this->remoteNomination = 0u;
73
73
  }
74
74
  bool IsValidTuple(const RTC::TransportTuple* tuple) const;
75
75
  void RemoveTuple(RTC::TransportTuple* tuple);
@@ -78,7 +78,8 @@ namespace RTC
78
78
  void ForceSelectedTuple(const RTC::TransportTuple* tuple);
79
79
 
80
80
  private:
81
- void HandleTuple(RTC::TransportTuple* tuple, bool hasUseCandidate);
81
+ void HandleTuple(
82
+ RTC::TransportTuple* tuple, bool hasUseCandidate, bool hasNomination, uint32_t nomination);
82
83
  /**
83
84
  * Store the given tuple and return its stored address.
84
85
  */
@@ -101,6 +102,7 @@ namespace RTC
101
102
  std::string password;
102
103
  std::string oldUsernameFragment;
103
104
  std::string oldPassword;
105
+ uint32_t remoteNomination{ 0u };
104
106
  IceState state{ IceState::NEW };
105
107
  std::list<RTC::TransportTuple> tuples;
106
108
  RTC::TransportTuple* selectedTuple{ nullptr };
@@ -41,7 +41,8 @@ namespace RTC
41
41
  ALTERNATE_SERVER = 0x8023,
42
42
  FINGERPRINT = 0x8028,
43
43
  ICE_CONTROLLED = 0x8029,
44
- ICE_CONTROLLING = 0x802A
44
+ ICE_CONTROLLING = 0x802A,
45
+ NOMINATION = 0xC001
45
46
  };
46
47
 
47
48
  // Authentication result.
@@ -114,6 +115,10 @@ namespace RTC
114
115
  {
115
116
  this->hasUseCandidate = true;
116
117
  }
118
+ void SetNomination(uint32_t nomination)
119
+ {
120
+ this->nomination = nomination;
121
+ }
117
122
  void SetXorMappedAddress(const struct sockaddr* xorMappedAddress)
118
123
  {
119
124
  this->xorMappedAddress = xorMappedAddress;
@@ -150,6 +155,18 @@ namespace RTC
150
155
  {
151
156
  return this->hasUseCandidate;
152
157
  }
158
+ void SetHasNomination()
159
+ {
160
+ this->hasNomination = true;
161
+ }
162
+ bool HasNomination() const
163
+ {
164
+ return this->hasNomination;
165
+ }
166
+ uint32_t GetNomination() const
167
+ {
168
+ return this->nomination;
169
+ }
153
170
  uint16_t GetErrorCode() const
154
171
  {
155
172
  return this->errorCode;
@@ -177,10 +194,12 @@ namespace RTC
177
194
  uint8_t* data{ nullptr }; // Pointer to binary data.
178
195
  size_t size{ 0u }; // The full message size (including header).
179
196
  // STUN attributes.
180
- std::string username; // Less than 513 bytes.
181
- uint32_t priority{ 0u }; // 4 bytes unsigned integer.
182
- uint64_t iceControlling{ 0u }; // 8 bytes unsigned integer.
183
- uint64_t iceControlled{ 0u }; // 8 bytes unsigned integer.
197
+ std::string username; // Less than 513 bytes.
198
+ uint32_t priority{ 0u }; // 4 bytes unsigned integer.
199
+ uint64_t iceControlling{ 0u }; // 8 bytes unsigned integer.
200
+ uint64_t iceControlled{ 0u }; // 8 bytes unsigned integer.
201
+ bool hasNomination{ false };
202
+ uint32_t nomination{ 0u }; // 4 bytes unsigned integer.
184
203
  bool hasUseCandidate{ false }; // 0 bytes.
185
204
  const uint8_t* messageIntegrity{ nullptr }; // 20 bytes.
186
205
  bool hasFingerprint{ false }; // 4 bytes.
@@ -233,6 +233,8 @@ libmediasoup_worker = library(
233
233
  'libmediasoup-worker',
234
234
  name_prefix: '',
235
235
  build_by_default: false,
236
+ install: true,
237
+ install_tag: 'libmediasoup-worker',
236
238
  dependencies: dependencies,
237
239
  sources: common_sources,
238
240
  include_directories: include_directories('include'),
@@ -243,6 +245,8 @@ libmediasoup_worker = library(
243
245
  executable(
244
246
  'mediasoup-worker',
245
247
  build_by_default: true,
248
+ install: true,
249
+ install_tag: 'mediasoup-worker',
246
250
  dependencies: dependencies,
247
251
  sources: common_sources + ['src/main.cpp'],
248
252
  include_directories: include_directories('include'),
@@ -252,6 +256,8 @@ executable(
252
256
  mediasoup_worker_test = executable(
253
257
  'mediasoup-worker-test',
254
258
  build_by_default: false,
259
+ install: true,
260
+ install_tag: 'mediasoup-worker-test',
255
261
  dependencies: dependencies + [
256
262
  catch2_proj.get_variable('catch2_dep'),
257
263
  ],
@@ -314,6 +320,8 @@ if host_machine.system() == 'linux'
314
320
  executable(
315
321
  'mediasoup-worker-fuzzer',
316
322
  build_by_default: false,
323
+ install: true,
324
+ install_tag: 'mediasoup-worker-fuzzer',
317
325
  dependencies: dependencies,
318
326
  sources: common_sources + [
319
327
  'fuzzer/src/fuzzer.cpp',
@@ -198,8 +198,13 @@ namespace RTC
198
198
 
199
199
  delete response;
200
200
 
201
+ uint32_t nomination{ 0u };
202
+
203
+ if (packet->HasNomination())
204
+ nomination = packet->GetNomination();
205
+
201
206
  // Handle the tuple.
202
- HandleTuple(tuple, packet->HasUseCandidate());
207
+ HandleTuple(tuple, packet->HasUseCandidate(), packet->HasNomination(), nomination);
203
208
 
204
209
  break;
205
210
  }
@@ -301,7 +306,8 @@ namespace RTC
301
306
  SetSelectedTuple(storedTuple);
302
307
  }
303
308
 
304
- void IceServer::HandleTuple(RTC::TransportTuple* tuple, bool hasUseCandidate)
309
+ void IceServer::HandleTuple(
310
+ RTC::TransportTuple* tuple, bool hasUseCandidate, bool hasNomination, uint32_t nomination)
305
311
  {
306
312
  MS_TRACE();
307
313
 
@@ -316,9 +322,15 @@ namespace RTC
316
322
  // There shouldn't be a selected tuple.
317
323
  MS_ASSERT(!this->selectedTuple, "state is 'new' but there is selected tuple");
318
324
 
319
- if (!hasUseCandidate)
325
+ if (!hasUseCandidate && !hasNomination)
320
326
  {
321
- MS_DEBUG_TAG(ice, "transition from state 'new' to 'connected'");
327
+ MS_DEBUG_TAG(
328
+ ice,
329
+ "transition from state 'new' to 'connected' [hasUseCandidate:%s, hasNomination:%s, nomination:%" PRIu32
330
+ "]",
331
+ hasUseCandidate ? "true" : "false",
332
+ hasNomination ? "true" : "false",
333
+ nomination);
322
334
 
323
335
  // Store the tuple.
324
336
  auto* storedTuple = AddTuple(tuple);
@@ -332,17 +344,29 @@ namespace RTC
332
344
  }
333
345
  else
334
346
  {
335
- MS_DEBUG_TAG(ice, "transition from state 'new' to 'completed'");
336
-
337
347
  // Store the tuple.
338
348
  auto* storedTuple = AddTuple(tuple);
339
349
 
340
- // Mark it as selected tuple.
341
- SetSelectedTuple(storedTuple);
342
- // Update state.
343
- this->state = IceState::COMPLETED;
344
- // Notify the listener.
345
- this->listener->OnIceServerCompleted(this);
350
+ if ((hasNomination && nomination > this->remoteNomination) || !hasNomination)
351
+ {
352
+ MS_DEBUG_TAG(
353
+ ice,
354
+ "transition from state 'new' to 'completed' [hasUseCandidate:%s, hasNomination:%s, nomination:%" PRIu32
355
+ "]",
356
+ hasUseCandidate ? "true" : "false",
357
+ hasNomination ? "true" : "false",
358
+ nomination);
359
+
360
+ // Mark it as selected tuple.
361
+ SetSelectedTuple(storedTuple);
362
+ // Update state.
363
+ this->state = IceState::COMPLETED;
364
+ // Update nomination.
365
+ if (hasNomination && nomination > this->remoteNomination)
366
+ this->remoteNomination = nomination;
367
+ // Notify the listener.
368
+ this->listener->OnIceServerCompleted(this);
369
+ }
346
370
  }
347
371
 
348
372
  break;
@@ -359,9 +383,15 @@ namespace RTC
359
383
  // There shouldn't be a selected tuple.
360
384
  MS_ASSERT(!this->selectedTuple, "state is 'disconnected' but there is selected tuple");
361
385
 
362
- if (!hasUseCandidate)
386
+ if (!hasUseCandidate && !hasNomination)
363
387
  {
364
- MS_DEBUG_TAG(ice, "transition from state 'disconnected' to 'connected'");
388
+ MS_DEBUG_TAG(
389
+ ice,
390
+ "transition from state 'disconnected' to 'connected' [hasUseCandidate:%s, hasNomination:%s, nomination:%" PRIu32
391
+ "]",
392
+ hasUseCandidate ? "true" : "false",
393
+ hasNomination ? "true" : "false",
394
+ nomination);
365
395
 
366
396
  // Store the tuple.
367
397
  auto* storedTuple = AddTuple(tuple);
@@ -375,17 +405,29 @@ namespace RTC
375
405
  }
376
406
  else
377
407
  {
378
- MS_DEBUG_TAG(ice, "transition from state 'disconnected' to 'completed'");
379
-
380
408
  // Store the tuple.
381
409
  auto* storedTuple = AddTuple(tuple);
382
410
 
383
- // Mark it as selected tuple.
384
- SetSelectedTuple(storedTuple);
385
- // Update state.
386
- this->state = IceState::COMPLETED;
387
- // Notify the listener.
388
- this->listener->OnIceServerCompleted(this);
411
+ if ((hasNomination && nomination > this->remoteNomination) || !hasNomination)
412
+ {
413
+ MS_DEBUG_TAG(
414
+ ice,
415
+ "transition from state 'disconnected' to 'completed' [hasUseCandidate:%s, hasNomination:%s, nomination:%" PRIu32
416
+ "]",
417
+ hasUseCandidate ? "true" : "false",
418
+ hasNomination ? "true" : "false",
419
+ nomination);
420
+
421
+ // Mark it as selected tuple.
422
+ SetSelectedTuple(storedTuple);
423
+ // Update state.
424
+ this->state = IceState::COMPLETED;
425
+ // Update nomination.
426
+ if (hasNomination && nomination > this->remoteNomination)
427
+ this->remoteNomination = nomination;
428
+ // Notify the listener.
429
+ this->listener->OnIceServerCompleted(this);
430
+ }
389
431
  }
390
432
 
391
433
  break;
@@ -399,7 +441,7 @@ namespace RTC
399
441
  // There should be a selected tuple.
400
442
  MS_ASSERT(this->selectedTuple, "state is 'connected' but there is not selected tuple");
401
443
 
402
- if (!hasUseCandidate)
444
+ if (!hasUseCandidate && !hasNomination)
403
445
  {
404
446
  // If a new tuple store it.
405
447
  if (!HasTuple(tuple))
@@ -407,7 +449,13 @@ namespace RTC
407
449
  }
408
450
  else
409
451
  {
410
- MS_DEBUG_TAG(ice, "transition from state 'connected' to 'completed'");
452
+ MS_DEBUG_TAG(
453
+ ice,
454
+ "transition from state 'connected' to 'completed' [hasUseCandidate:%s, hasNomination:%s, nomination:%" PRIu32
455
+ "]",
456
+ hasUseCandidate ? "true" : "false",
457
+ hasNomination ? "true" : "false",
458
+ nomination);
411
459
 
412
460
  auto* storedTuple = HasTuple(tuple);
413
461
 
@@ -415,12 +463,18 @@ namespace RTC
415
463
  if (!storedTuple)
416
464
  storedTuple = AddTuple(tuple);
417
465
 
418
- // Mark it as selected tuple.
419
- SetSelectedTuple(storedTuple);
420
- // Update state.
421
- this->state = IceState::COMPLETED;
422
- // Notify the listener.
423
- this->listener->OnIceServerCompleted(this);
466
+ if ((hasNomination && nomination > this->remoteNomination) || !hasNomination)
467
+ {
468
+ // Mark it as selected tuple.
469
+ SetSelectedTuple(storedTuple);
470
+ // Update state.
471
+ this->state = IceState::COMPLETED;
472
+ // Update nomination.
473
+ if (hasNomination && nomination > this->remoteNomination)
474
+ this->remoteNomination = nomination;
475
+ // Notify the listener.
476
+ this->listener->OnIceServerCompleted(this);
477
+ }
424
478
  }
425
479
 
426
480
  break;
@@ -434,7 +488,7 @@ namespace RTC
434
488
  // There should be a selected tuple.
435
489
  MS_ASSERT(this->selectedTuple, "state is 'completed' but there is not selected tuple");
436
490
 
437
- if (!hasUseCandidate)
491
+ if (!hasUseCandidate && !hasNomination)
438
492
  {
439
493
  // If a new tuple store it.
440
494
  if (!HasTuple(tuple))
@@ -448,8 +502,14 @@ namespace RTC
448
502
  if (!storedTuple)
449
503
  storedTuple = AddTuple(tuple);
450
504
 
451
- // Mark it as selected tuple.
452
- SetSelectedTuple(storedTuple);
505
+ if ((hasNomination && nomination > this->remoteNomination) || !hasNomination)
506
+ {
507
+ // Mark it as selected tuple.
508
+ SetSelectedTuple(storedTuple);
509
+ // Update nomination.
510
+ if (hasNomination && nomination > this->remoteNomination)
511
+ this->remoteNomination = nomination;
512
+ }
453
513
  }
454
514
 
455
515
  break;
@@ -209,6 +209,23 @@ namespace RTC
209
209
  break;
210
210
  }
211
211
 
212
+ case Attribute::NOMINATION:
213
+ {
214
+ // Ensure attribute length is 4 bytes.
215
+ if (attrLength != 4)
216
+ {
217
+ MS_WARN_TAG(ice, "attribute NOMINATION must be 4 bytes length, packet discarded");
218
+
219
+ delete packet;
220
+ return nullptr;
221
+ }
222
+
223
+ packet->SetHasNomination();
224
+ packet->SetNomination(Utils::Byte::Get4Bytes(attrValuePos, 0));
225
+
226
+ break;
227
+ }
228
+
212
229
  case Attribute::MESSAGE_INTEGRITY:
213
230
  {
214
231
  // Ensure attribute length is 20 bytes.
@@ -585,8 +585,7 @@ namespace RTC
585
585
  std::string usernameFragment = Utils::Crypto::GetRandomString(16);
586
586
  std::string password = Utils::Crypto::GetRandomString(32);
587
587
 
588
- this->iceServer->SetUsernameFragment(usernameFragment);
589
- this->iceServer->SetPassword(password);
588
+ this->iceServer->RestartIce(usernameFragment, password);
590
589
 
591
590
  MS_DEBUG_DEV(
592
591
  "WebRtcTransport ICE usernameFragment and password changed [id:%s]", this->id.c_str());
@@ -1,11 +1,11 @@
1
1
  [wrap-file]
2
- directory = libuv-v1.42.0
3
- source_url = https://dist.libuv.org/dist/v1.42.0/libuv-v1.42.0.tar.gz
4
- source_filename = libuv-v1.42.0.tar.gz
5
- source_hash = 43129625155a8aed796ebe90b8d4c990a73985ec717de2b2d5d3a23cfe4deb72
6
- patch_filename = libuv_1.42.0-1_patch.zip
7
- patch_url = https://wrapdb.mesonbuild.com/v2/libuv_1.42.0-1/get_patch
8
- patch_hash = 891698d781bc68379b799e47bc7e100698f03985b6db5d1ddc4eaa9be42a8f35
2
+ directory = libuv-v1.43.0
3
+ source_url = https://dist.libuv.org/dist/v1.43.0/libuv-v1.43.0.tar.gz
4
+ source_filename = libuv-v1.43.0.tar.gz
5
+ source_hash = 90d72bb7ae18de2519d0cac70eb89c319351146b90cd3f91303a492707e693a4
6
+ patch_filename = libuv_1.43.0-1_patch.zip
7
+ patch_url = https://wrapdb.mesonbuild.com/v2/libuv_1.43.0-1/get_patch
8
+ patch_hash = 9bd241c95110c67f9486f1a77a988216bf5ec192dc3002651a6ccefb2e6aba5a
9
9
 
10
10
  [provide]
11
11
  libuv = libuv_dep