Giter Site home page Giter Site logo

Comments (22)

ibc avatar ibc commented on June 2, 2024 1

@pnts-se don't worry, I'm doing it. Thanks a lot.

from mediasoup.

ibc avatar ibc commented on June 2, 2024

Do you know how to check the byte size of the BIO_s_mem?

from mediasoup.

ibc avatar ibc commented on June 2, 2024

BtW thanks for the report. Don't hesitate to write that PR and we will investigate, or perhaps we'll just revert the offending PR if we have no idea of how it works.

from mediasoup.

gkrol-katmai avatar gkrol-katmai commented on June 2, 2024

I tested with Valgrind / Massif, and I could see that it was OpenSSL memory that was growing. I did not manage to get a sensible number of the mem BIO size from the worker itself, but I hacked a printf into the OpenSSL code directly and I could see the buffer growing and growing.

This is what I put in bss_mem.c:mem_write, after blen = bbm->readp->length;

if (blen > 0) printf("[mem_write] %p blen: %d + %d\n", b, blen, inl);

I then verified that the pointer I was seeing corresponded to sslBioToNetwork

The Mediasoup worker build process is really nice btw, and also easy to use the built worker.

from mediasoup.

pnts-se avatar pnts-se commented on June 2, 2024

I apologise! I got the openssl documentation wrong.
@ibc let me know if you want me to do a PR reverting to the old behaviour.

from mediasoup.

ibc avatar ibc commented on June 2, 2024

PR done: #1342

from mediasoup.

ibc avatar ibc commented on June 2, 2024

PR #1342 merged. Thanks a lot.

from mediasoup.

gkrol-katmai avatar gkrol-katmai commented on June 2, 2024

Thanks for responding to this so quickly!

from mediasoup.

ibc avatar ibc commented on June 2, 2024

@pnts-se @gkrol-katmai, I'm investigating the DTLS MTU issue and I have some questions or doubts (not sure). Could you please participate if you wish? I'm commenting in the original issue:

#1100 (comment)

from mediasoup.

ibc avatar ibc commented on June 2, 2024

Wow, I have a working PR but I cannot beliete it!

@pnts-se @gkrol-katmai @ggarber can you please take a look to it? #1343

from mediasoup.

ibc avatar ibc commented on June 2, 2024

but I hacked a printf into the OpenSSL code directly and I could see the buffer growing and growing.

This is what I put in bss_mem.c:mem_write, after blen = bbm->readp->length;

if (blen > 0) printf("[mem_write] %p blen: %d + %d\n", b, blen, inl);

I then verified that the pointer I was seeing corresponded to sslBioToNetwork

I've done this (in the reverted PR that caused the leak) and I only gets those prints at the beginning during the DTLS handshake , then no more despite I send and receive DataChannel messages. Do I miss something?

I don't know anything about OpenSSL, but I could get the problem to go away by placing (void)BIO_reset(this->sslBioToNetwork); at the end of DtlsTransport::SendDtlsData. However, I do have some doubts on what is going on with the callback, as the documentation says it's called twice for every operation, and perhaps we're sending the data twice now?

Here is very clear and I've verified that, during a write operation, the callback is first called with oper == BIO_CB_WRITE (there we call dtlsTransport->SendDtlsData(), and after it the same callback is called with oper == (BIO_CB_RETURN | BIO_CB_WRITE) so we don't enter the condition and don't send any duplicate data. This was ok.

from mediasoup.

gkrol-katmai avatar gkrol-katmai commented on June 2, 2024

@ibc if you remove the if do you get the messages with a zero blen for the sslBioToNetwork BIO?

If the problem doesn't occur for you, I'd be very curious where in this case that buffer is emptied. I could not find any location in either the OpenSSL or the Mediasoup code that would do that. I believe you either need to do a real read or you need to reset.

Good to know that this wasn't sending data twice!

from mediasoup.

ibc avatar ibc commented on June 2, 2024

if you remove the if do you get the messages with a zero blen for the sslBioToNetwork BIO?

Nope.

This is "full" logs with some extra logs I've added in DtlsTransport. Scenario is that I run mediasoup (immediately some of your logs are shown), then a client joins a room, so there are more of your logs, then I send a DataChannel message (@bot laskdjklajdkas) via the mediasoup-demo chat input, so it's sent to the server and then sent back to same client. Your logs don't show up in that case:

mediasoup:Channel [pid:41404] mediasoup-worker::mediasoup_worker_run() | starting mediasoup-worker process [version:3.13.22] +274ms
mediasoup:Channel [pid:41404] mediasoup-worker::mediasoup_worker_run() | little-endian CPU detected +0ms
mediasoup:Channel [pid:41404] mediasoup-worker::mediasoup_worker_run() | 64 bits architecture detected +0ms
mediasoup:Channel [pid:41404] Settings::PrintConfiguration() | +1ms
mediasoup:Channel [pid:41404] Settings::PrintConfiguration() | logLevel: debug +0ms
mediasoup:Channel [pid:41404] Settings::PrintConfiguration() | logTags: info,ice +0ms
mediasoup:Channel [pid:41404] Settings::PrintConfiguration() | rtcMinPort: 40000 +0ms
mediasoup:Channel [pid:41404] Settings::PrintConfiguration() | rtcMaxPort: 49999 +0ms
mediasoup:Channel [pid:41404] Settings::PrintConfiguration() | dtlsCertificateFile: /Users/ibc/src/v3-mediasoup-demo/server/certs/large-fullchain.pem +1ms
mediasoup:Channel [pid:41404] Settings::PrintConfiguration() | dtlsPrivateKeyFile: /Users/ibc/src/v3-mediasoup-demo/server/certs/large-privkey.pem +0ms
mediasoup:Channel [pid:41404] Settings::PrintConfiguration() | libwebrtcFieldTrials: WebRTC-Bwe-AlrLimitedBackoff/Enabled/ +0ms
mediasoup:Channel [pid:41404] Settings::PrintConfiguration() | +0ms
mediasoup:Channel [pid:41404] DepLibUV::PrintVersion() | libuv version: "1.47.0" +0ms
mediasoup:Channel [pid:41404] DepOpenSSL::operator()() | openssl version: "OpenSSL 3.0.8 7 Feb 2023" +0ms
mediasoup:Channel [pid:41404] DepOpenSSL::operator()() | openssl CPU info: "CPUINFO: OPENSSL_ia32cap=0x7ffaf3ffffebffff:0x40000000029c67af" +0ms
mediasoup:Channel [pid:41404] DepLibSRTP::ClassInit() | libsrtp version: "libsrtp2 3.0.0" +1ms
mediasoup:Channel [pid:41404] DepUsrSCTP::ClassInit() | usrsctp +2ms
mediasoup:Channel [pid:41404] DepLibWebRTC::ClassInit() | libwebrtc field trials: "WebRTC-Bwe-AlrLimitedBackoff/Enabled/" +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 0 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 65 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 130 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 195 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 260 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 325 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 390 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 455 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 520 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 585 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 650 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 715 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 780 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 845 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 910 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 975 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 1040 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 1105 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 1170 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 1235 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 1300 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 1365 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 1430 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 1495 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 1560 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 1625 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 1690 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 1755 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 1820 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 1885 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 1950 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2015 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2080 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2145 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2210 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2275 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2340 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2405 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2470 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2535 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2600 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2665 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2730 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2795 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2860 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2925 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 2990 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 3055 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 3120 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 3185 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 3250 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 3315 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 3380 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 3445 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 3510 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 3575 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 3640 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 3705 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 3770 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 3835 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 3900 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 3965 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 4030 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 4095 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 4160 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 4225 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 4290 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 4355 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 4420 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 4485 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 4550 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 4615 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 4680 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 4745 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 4810 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 4875 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 4940 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5005 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5070 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5135 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5200 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5265 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5330 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5395 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5460 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5525 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5590 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5655 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5720 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5785 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5850 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5915 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 5980 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 6045 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c090 blen: 6110 + 25 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 0 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 65 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 130 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 195 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 260 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 325 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 390 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 455 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 520 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 585 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 650 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 715 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 780 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 845 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 910 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 975 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 1040 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 1105 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 1170 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 1235 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 1300 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 1365 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 1430 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 1495 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 1560 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 1625 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 1690 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 1755 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 1820 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 1885 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 1950 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2015 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2080 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2145 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2210 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2275 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2340 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2405 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2470 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2535 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2600 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2665 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2730 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2795 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2860 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2925 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 2990 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 3055 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 3120 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 3185 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 3250 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 3315 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 3380 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 3445 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 3510 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 3575 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 3640 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 3705 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 3770 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 3835 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 3900 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 3965 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 4030 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 4095 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 4160 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 4225 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 4290 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 4355 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 4420 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 4485 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 4550 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 4615 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 4680 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 4745 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 4810 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 4875 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600 +0ms
mediasoup:Worker worker process running [pid:41404] +288ms
mediasoup:Worker createWebRtcServer() +2ms
mediasoup:Channel request() [method:WORKER_CREATE_WEBRTCSERVER] +8ms
mediasoup:Channel [pid:41404] RTC::WebRtcServer::WebRtcServer() | UDP socket send buffer size: 2000000, recv buffer size: 2000000 +2ms
mediasoup:Channel [pid:41404] RTC::WebRtcServer::WebRtcServer() | TCP server send buffer size: 2000000, recv buffer size: 2000000 +0ms
mediasoup:Channel request succeeded [method:WORKER_CREATE_WEBRTCSERVER, id:1] +0ms
mediasoup:WebRtcServer constructor() +0ms

// Here the user joins so a mediasoup Router + Transports + (Data)Producers/Consumers
// are created and so on:

cmd>
cmd>
cmd>
cmd>
cmd>
cmd>
cmd>
cmd>
cmd> mediasoup:Worker createRouter() +2s
mediasoup:Channel request() [method:WORKER_CREATE_ROUTER] +2s
mediasoup:Channel request succeeded [method:WORKER_CREATE_ROUTER, id:2] +1ms
mediasoup:Router constructor() +0ms
mediasoup:Router createAudioLevelObserver() +0ms
mediasoup:Channel request() [method:ROUTER_CREATE_AUDIOLEVELOBSERVER] +1ms
mediasoup:Channel request succeeded [method:ROUTER_CREATE_AUDIOLEVELOBSERVER, id:3] +0ms
mediasoup:RtpObserver constructor() +0ms
mediasoup:Router createActiveSpeakerObserver() +1ms
mediasoup:Channel request() [method:ROUTER_CREATE_ACTIVESPEAKEROBSERVER] +1ms
mediasoup:Channel request succeeded [method:ROUTER_CREATE_ACTIVESPEAKEROBSERVER, id:4] +0ms
mediasoup:RtpObserver constructor() +1ms
mediasoup:Router createDirectTransport() +1ms
mediasoup:Channel request() [method:ROUTER_CREATE_DIRECTTRANSPORT] +1ms
mediasoup:Channel request succeeded [method:ROUTER_CREATE_DIRECTTRANSPORT, id:5] +0ms
mediasoup:Transport constructor() +0ms
mediasoup:DirectTransport constructor() +0ms
mediasoup:Transport produceData() +1ms
mediasoup:Channel request() [method:TRANSPORT_PRODUCE_DATA] +2ms
mediasoup:Channel request succeeded [method:TRANSPORT_PRODUCE_DATA, id:6] +0ms
mediasoup:DataProducer constructor() +0ms
mediasoup:Router createWebRtcTransport() +33ms
mediasoup:Channel request() [method:ROUTER_CREATE_WEBRTCTRANSPORT_WITH_SERVER] +31ms
mediasoup:Channel request succeeded [method:ROUTER_CREATE_WEBRTCTRANSPORT_WITH_SERVER, id:7] +0ms
mediasoup:Transport constructor() +32ms
mediasoup:WebRtcTransport constructor() +0ms
mediasoup:Transport enableTraceEvent() +1ms
mediasoup:Channel request() [method:TRANSPORT_ENABLE_TRACE_EVENT] +2ms
mediasoup:Channel request succeeded [method:TRANSPORT_ENABLE_TRACE_EVENT, id:8] +0ms
mediasoup:Router createWebRtcTransport() +6ms
mediasoup:Channel request() [method:ROUTER_CREATE_WEBRTCTRANSPORT_WITH_SERVER] +3ms
mediasoup:Channel request succeeded [method:ROUTER_CREATE_WEBRTCTRANSPORT_WITH_SERVER, id:9] +0ms
mediasoup:Transport constructor() +4ms
mediasoup:WebRtcTransport constructor() +5ms
mediasoup:Transport enableTraceEvent() +0ms
mediasoup:Channel request() [method:TRANSPORT_ENABLE_TRACE_EVENT] +1ms
mediasoup:Channel request succeeded [method:TRANSPORT_ENABLE_TRACE_EVENT, id:10] +0ms
mediasoup:Transport consumeData() +3ms
mediasoup:Channel request() [method:TRANSPORT_CONSUME_DATA] +4ms
mediasoup:Channel request succeeded [method:TRANSPORT_CONSUME_DATA, id:11] +0ms
mediasoup:DataConsumer constructor() +0ms
mediasoup:WebRtcTransport connect() +34ms
mediasoup:Channel request() [method:WEBRTCTRANSPORT_CONNECT] +31ms
mediasoup:Channel request succeeded [method:WEBRTCTRANSPORT_CONNECT, id:12] +1ms
mediasoup:WebRtcTransport connect() +6ms
mediasoup:Channel request() [method:WEBRTCTRANSPORT_CONNECT] +4ms
mediasoup:Channel request succeeded [method:WEBRTCTRANSPORT_CONNECT, id:13] +0ms
mediasoup:Channel [pid:41404] RTC::IceServer::HandleTuple() | transition from state 'new' to 'connected' [hasUseCandidate:false, hasNomination:false, nomination:0] +1ms
mediasoup:Channel [pid:41404] RTC::WebRtcTransport::OnIceServerSelectedTuple() | ICE selected tuple +0ms
mediasoup:Channel [pid:41404] RTC::WebRtcTransport::OnIceServerConnected() | ICE connected +3ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Transport produce() +45ms
mediasoup:Channel request() [method:TRANSPORT_PRODUCE] +7ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +246ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +1ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 242 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | DTLS timer set in 99ms +0ms
mediasoup:Channel [pid:41404] RTC::IceServer::HandleTuple() | transition from state 'new' to 'connected' [hasUseCandidate:false, hasNomination:false, nomination:0] +0ms
mediasoup:Channel [pid:41404] RTC::WebRtcTransport::OnIceServerSelectedTuple() | ICE selected tuple +0ms
mediasoup:Channel [pid:41404] RTC::WebRtcTransport::OnIceServerConnected() | ICE connected +0ms
mediasoup:Channel [pid:41404] RTC::IceServer::HandleTuple() | transition from state 'connected' to 'completed' [hasUseCandidate:true, hasNomination:false, nomination:0] +0ms
mediasoup:Channel [pid:41404] RTC::WebRtcTransport::OnIceServerCompleted() | ICE completed +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | DTLS timer set in 99ms +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | DTLS timer set in 99ms +0ms
mediasoup:Channel request succeeded [method:TRANSPORT_PRODUCE, id:14] +0ms
mediasoup:Producer constructor() +0ms
mediasoup:RtpObserver addProducer() +339ms
mediasoup:Channel request() [method:RTPOBSERVER_ADD_PRODUCER] +1ms
mediasoup:RtpObserver addProducer() +0ms
mediasoup:Channel request() [method:RTPOBSERVER_ADD_PRODUCER] +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 67 bytes of DTLS data ready to be sent +2ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 129 bytes of DTLS data ready to be sent +1ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +1ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +241ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 242 bytes of DTLS data ready to be sent +1ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | DTLS timer set in 99ms +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 385 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 85 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel request succeeded [method:RTPOBSERVER_ADD_PRODUCER, id:15] +0ms
mediasoup:Channel request succeeded [method:RTPOBSERVER_ADD_PRODUCER, id:16] +0ms
mediasoup:Worker (stdout) 000e2c240 blen: 4940 + 65 +3s
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5005 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5070 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5135 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5200 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5265 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5330 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5395 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5460 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5525 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5590 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5655 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5720 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5785 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5850 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5915 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 5980 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 6045 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 6110 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 6175 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 6240 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 6305 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 6370 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 6435 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 6500 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 6565 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 6630 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 6695 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 6760 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 6825 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 6890 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 6955 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7020 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7085 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7150 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7215 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7280 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7345 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7410 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7475 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7540 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7605 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7670 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7735 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7800 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7865 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7930 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 7995 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 8060 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 8125 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 8190 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 8255 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 8320 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 8385 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 8450 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 8515 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 8580 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 8645 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 8710 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 8775 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 8840 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 8905 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 8970 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 9035 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 9100 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 9165 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 9230 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 9295 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 9360 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 9425 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 9490 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 9555 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 9620 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 9685 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 9750 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 9815 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 9880 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 9945 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10010 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10075 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10140 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10205 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10270 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10335 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10400 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10465 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10530 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10595 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10660 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10725 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10790 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10855 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10920 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 10985 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 11050 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 11115 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 11180 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 11245 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 11310 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 11375 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 11440 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 11505 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 11570 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 11635 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 11700 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 11765 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 11830 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 11895 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 11960 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 12025 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 12090 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 12155 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 12220 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 12285 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 12350 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 12415 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 12480 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e2c240 blen: 12545 + 29 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e201b0 blen: 0 + 157 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e34090 blen: 0 + 144 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e34090 blen: 144 + 78 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e34090 blen: 222 + 1245 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e20240 blen: 0 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e34090 blen: 1467 + 1324 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e20240 blen: 1349 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e34090 blen: 2791 + 1324 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e20240 blen: 2698 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e34090 blen: 4115 + 654 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e34090 blen: 4769 + 657 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e20240 blen: 4047 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e34090 blen: 5426 + 1324 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e20240 blen: 5396 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e34090 blen: 6750 + 119 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e34090 blen: 6869 + 60 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e34090 blen: 6929 + 12 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e20240 blen: 6745 + 242 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e201b0 blen: 0 + 157 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e201b0 blen: 0 + 157 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e201b0 blen: 0 + 537 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e34090 blen: 6941 + 300 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e34090 blen: 7241 + 45 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e20240 blen: 6987 + 67 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e306c0 blen: 0 + 11 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e306c0 blen: 11 + 11 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e306c0 blen: 22 + 6 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e306c0 blen: 28 + 325 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e306c0 blen: 353 + 57 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e306c0 blen: 410 + 9 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e306c0 blen: 419 + 11 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e306c0 blen: 430 + 6 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e20240 blen: 7054 + 129 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e281b0 blen: 0 + 157 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e202d0 blen: 0 + 144 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e202d0 blen: 144 + 78 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e202d0 blen: 222 + 1245 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e28240 blen: 0 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e202d0 blen: 1467 + 1324 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e28240 blen: 1349 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e202d0 blen: 2791 + 1324 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e28240 blen: 2698 + 1349 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e202d0 blen: 4115 + 654 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e202d0 blen: 4769 + 657 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e28240 blen: 4047 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e202d0 blen: 5426 + 1324 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e28240 blen: 5396 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e202d0 blen: 6750 + 119 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e202d0 blen: 6869 + 60 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e202d0 blen: 6929 + 12 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e28240 blen: 6745 + 242 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000e201b0 blen: 0 + 73 +0ms
mediasoup:Worker (stdout) **** [mem_ +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 67 bytes of DTLS data ready to be sent +10ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 129 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 45 bytes of DTLS data ready to be sent +1ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 385 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +1ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 45 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Transport produceData() +509ms
mediasoup:Channel request() [method:TRANSPORT_PRODUCE_DATA] +0ms
mediasoup:Channel request succeeded [method:TRANSPORT_PRODUCE_DATA, id:17] +1ms
mediasoup:DataProducer constructor() +595ms
mediasoup:Transport produceData() +3ms
mediasoup:Channel request() [method:TRANSPORT_PRODUCE_DATA] +2ms
mediasoup:Channel request succeeded [method:TRANSPORT_PRODUCE_DATA, id:18] +0ms
mediasoup:DataProducer constructor() +2ms
mediasoup:Transport consumeData() +0ms
mediasoup:Channel request() [method:TRANSPORT_CONSUME_DATA] +0ms
mediasoup:Channel request succeeded [method:TRANSPORT_CONSUME_DATA, id:19] +0ms
mediasoup:DataConsumer constructor() +557ms
mediasoup:Channel [pid:41404] RTC::IceServer::HandleTuple() | transition from state 'connected' to 'completed' [hasUseCandidate:true, hasNomination:false, nomination:0] +852ms
mediasoup:Channel [pid:41404] RTC::WebRtcTransport::OnIceServerCompleted() | ICE completed +0ms

// Here I send a DataChannel message and is sent back to the client:

cmd>
cmd>
cmd>
cmd>
cmd> mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +6s
mediasoup:Channel [pid:41404] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel notify() [event:DATAPRODUCER_SEND] +1ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 57 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 81 bytes of DTLS data ready to be sent +1ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms

cmd>
cmd> RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 85 bytes of DTLS data ready to be sent +24s
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::OnTimer() | handshake is done so return +1ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +6s
mediasoup:Channel [pid:41404] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 57 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +24s
mediasoup:Channel [pid:41404] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 57 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 85 bytes of DTLS data ready to be sent +514ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SendDtlsData() | 85 bytes of DTLS data ready to be sent +117ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:41404] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:41404] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms

And those are same logs if I call BIO_reset(this->sslBioToNetwork) at the end of DtlsTransport::SendDtlsData() method:

mediasoup:Channel [pid:42553] mediasoup-worker::mediasoup_worker_run() | starting mediasoup-worker process [version:3.13.22] +475ms
mediasoup:Channel [pid:42553] mediasoup-worker::mediasoup_worker_run() | little-endian CPU detected +0ms
mediasoup:Channel [pid:42553] mediasoup-worker::mediasoup_worker_run() | 64 bits architecture detected +0ms
mediasoup:Channel [pid:42553] Settings::PrintConfiguration() | +0ms
mediasoup:Channel [pid:42553] Settings::PrintConfiguration() | logLevel: debug +0ms
mediasoup:Channel [pid:42553] Settings::PrintConfiguration() | logTags: info,ice +1ms
mediasoup:Channel [pid:42553] Settings::PrintConfiguration() | rtcMinPort: 40000 +0ms
mediasoup:Channel [pid:42553] Settings::PrintConfiguration() | rtcMaxPort: 49999 +0ms
mediasoup:Channel [pid:42553] Settings::PrintConfiguration() | dtlsCertificateFile: /Users/ibc/src/v3-mediasoup-demo/server/certs/large-fullchain.pem +0ms
mediasoup:Channel [pid:42553] Settings::PrintConfiguration() | dtlsPrivateKeyFile: /Users/ibc/src/v3-mediasoup-demo/server/certs/large-privkey.pem +0ms
mediasoup:Channel [pid:42553] Settings::PrintConfiguration() | libwebrtcFieldTrials: WebRTC-Bwe-AlrLimitedBackoff/Enabled/ +0ms
mediasoup:Channel [pid:42553] Settings::PrintConfiguration() | +0ms
mediasoup:Channel [pid:42553] DepLibUV::PrintVersion() | libuv version: "1.47.0" +0ms
mediasoup:Channel [pid:42553] DepOpenSSL::operator()() | openssl version: "OpenSSL 3.0.8 7 Feb 2023" +0ms
mediasoup:Channel [pid:42553] DepOpenSSL::operator()() | openssl CPU info: "CPUINFO: OPENSSL_ia32cap=0x7ffaf3ffffebffff:0x40000000029c67af" +0ms
mediasoup:Channel [pid:42553] DepLibSRTP::ClassInit() | libsrtp version: "libsrtp2 3.0.0" +1ms
mediasoup:Channel [pid:42553] DepUsrSCTP::ClassInit() | usrsctp +2ms
mediasoup:Channel [pid:42553] DepLibWebRTC::ClassInit() | libwebrtc field trials: "WebRTC-Bwe-AlrLimitedBackoff/Enabled/" +2ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 0 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 65 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 130 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 195 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 260 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 325 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 390 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 455 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 520 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 585 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 650 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 715 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 780 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 845 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 910 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 975 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 1040 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 1105 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 1170 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 1235 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 1300 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 1365 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 1430 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 1495 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 1560 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 1625 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 1690 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 1755 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 1820 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 1885 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 1950 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2015 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2080 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2145 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2210 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2275 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2340 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2405 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2470 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2535 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2600 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2665 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2730 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2795 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2860 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2925 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 2990 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 3055 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 3120 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 3185 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 3250 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 3315 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 3380 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 3445 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 3510 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 3575 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 3640 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 3705 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 3770 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 3835 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 3900 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 3965 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 4030 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 4095 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 4160 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 4225 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 4290 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 4355 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 4420 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 4485 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 4550 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 4615 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 4680 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 4745 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 4810 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 4875 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 4940 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5005 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5070 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5135 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5200 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5265 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5330 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5395 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5460 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5525 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5590 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5655 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5720 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5785 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5850 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5915 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 5980 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 6045 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90090 blen: 6110 + 25 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 0 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 65 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 130 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 195 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 260 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 325 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 390 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 455 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 520 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 585 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 650 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 715 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 780 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 845 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 910 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 975 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 1040 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 1105 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 1170 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 1235 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 1300 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 1365 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 1430 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 1495 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 1560 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 1625 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 1690 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 1755 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 1820 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 1885 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 1950 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2015 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2080 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2145 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2210 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2275 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2340 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2405 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2470 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2535 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2600 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2665 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2730 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2795 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2860 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2925 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 2990 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 3055 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 3120 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 3185 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 3250 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 3315 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 3380 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 3445 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 3510 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 3575 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 3640 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 3705 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 3770 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 3835 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 3900 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 3965 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 4030 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 4095 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 4160 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 4225 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 4290 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 4355 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 4420 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 4485 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 4550 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 4615 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 4680 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 4745 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 4810 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 4875 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600 +0ms
mediasoup:Worker worker process running [pid:42553] +492ms
mediasoup:Worker createWebRtcServer() +2ms
mediasoup:Channel request() [method:WORKER_CREATE_WEBRTCSERVER] +9ms
mediasoup:Channel [pid:42553] RTC::WebRtcServer::WebRtcServer() | UDP socket send buffer size: 2000000, recv buffer size: 2000000 +1ms
mediasoup:Channel [pid:42553] RTC::WebRtcServer::WebRtcServer() | TCP server send buffer size: 2000000, recv buffer size: 2000000 +0ms
mediasoup:Channel request succeeded [method:WORKER_CREATE_WEBRTCSERVER, id:1] +0ms
mediasoup:WebRtcServer constructor() +0ms

// Here the user joins so a mediasoup Router + Transports + (Data)Producers/Consumers
/ are created and so on:

cmd>
cmd>
cmd>
cmd>
cmd>
cmd>
cmd> mediasoup:Worker createRouter() +995ms
mediasoup:Channel request() [method:WORKER_CREATE_ROUTER] +995ms
mediasoup:Channel request succeeded [method:WORKER_CREATE_ROUTER, id:2] +0ms
mediasoup:Router constructor() +0ms
mediasoup:Router createAudioLevelObserver() +1ms
mediasoup:Channel request() [method:ROUTER_CREATE_AUDIOLEVELOBSERVER] +1ms
mediasoup:Channel request succeeded [method:ROUTER_CREATE_AUDIOLEVELOBSERVER, id:3] +0ms
mediasoup:RtpObserver constructor() +0ms
mediasoup:Router createActiveSpeakerObserver() +1ms
mediasoup:Channel request() [method:ROUTER_CREATE_ACTIVESPEAKEROBSERVER] +1ms
mediasoup:Channel request succeeded [method:ROUTER_CREATE_ACTIVESPEAKEROBSERVER, id:4] +0ms
mediasoup:RtpObserver constructor() +1ms
mediasoup:Router createDirectTransport() +1ms
mediasoup:Channel request() [method:ROUTER_CREATE_DIRECTTRANSPORT] +1ms
mediasoup:Channel request succeeded [method:ROUTER_CREATE_DIRECTTRANSPORT, id:5] +1ms
mediasoup:Transport constructor() +0ms
mediasoup:DirectTransport constructor() +0ms
mediasoup:Transport produceData() +0ms
mediasoup:Channel request() [method:TRANSPORT_PRODUCE_DATA] +2ms
mediasoup:Channel request succeeded [method:TRANSPORT_PRODUCE_DATA, id:6] +0ms
mediasoup:DataProducer constructor() +0ms
mediasoup:Router createWebRtcTransport() +54ms
mediasoup:Channel request() [method:ROUTER_CREATE_WEBRTCTRANSPORT_WITH_SERVER] +52ms
mediasoup:Channel request succeeded [method:ROUTER_CREATE_WEBRTCTRANSPORT_WITH_SERVER, id:7] +1ms
mediasoup:Transport constructor() +55ms
mediasoup:WebRtcTransport constructor() +0ms
mediasoup:Transport enableTraceEvent() +1ms
mediasoup:Channel request() [method:TRANSPORT_ENABLE_TRACE_EVENT] +2ms
mediasoup:Channel request succeeded [method:TRANSPORT_ENABLE_TRACE_EVENT, id:8] +0ms
mediasoup:Router createWebRtcTransport() +20ms
mediasoup:Channel request() [method:ROUTER_CREATE_WEBRTCTRANSPORT_WITH_SERVER] +17ms
mediasoup:Channel request succeeded [method:ROUTER_CREATE_WEBRTCTRANSPORT_WITH_SERVER, id:9] +0ms
mediasoup:Transport constructor() +17ms
mediasoup:WebRtcTransport constructor() +18ms
mediasoup:Transport enableTraceEvent() +0ms
mediasoup:Channel request() [method:TRANSPORT_ENABLE_TRACE_EVENT] +1ms
mediasoup:Channel request succeeded [method:TRANSPORT_ENABLE_TRACE_EVENT, id:10] +0ms
mediasoup:Transport consumeData() +4ms
mediasoup:Channel request() [method:TRANSPORT_CONSUME_DATA] +3ms
mediasoup:Channel request succeeded [method:TRANSPORT_CONSUME_DATA, id:11] +1ms
mediasoup:DataConsumer constructor() +0ms
mediasoup:WebRtcTransport connect() +32ms
mediasoup:Channel request() [method:WEBRTCTRANSPORT_CONNECT] +27ms
mediasoup:Channel request succeeded [method:WEBRTCTRANSPORT_CONNECT, id:12] +1ms
mediasoup:Channel [pid:42553] RTC::IceServer::HandleTuple() | transition from state 'new' to 'connected' [hasUseCandidate:false, hasNomination:false, nomination:0] +3ms
mediasoup:Channel [pid:42553] RTC::WebRtcTransport::OnIceServerSelectedTuple() | ICE selected tuple +0ms
mediasoup:Channel [pid:42553] RTC::WebRtcTransport::OnIceServerConnected() | ICE connected +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +2ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:WebRtcTransport connect() +101ms
mediasoup:Channel request() [method:WEBRTCTRANSPORT_CONNECT] +95ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +143ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +1ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 242 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | DTLS timer set in 99ms +0ms
mediasoup:Channel [pid:42553] RTC::IceServer::HandleTuple() | transition from state 'connected' to 'completed' [hasUseCandidate:true, hasNomination:false, nomination:0] +0ms
mediasoup:Channel [pid:42553] RTC::WebRtcTransport::OnIceServerCompleted() | ICE completed +0ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | DTLS timer set in 99ms +0ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | DTLS timer set in 99ms +0ms
mediasoup:Channel request succeeded [method:WEBRTCTRANSPORT_CONNECT, id:13] +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 67 bytes of DTLS data ready to be sent +3ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 129 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +1ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::OnTimer() | handshake is done so return +1ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 385 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 85 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +1ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 45 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:42553] RTC::IceServer::HandleTuple() | transition from state 'new' to 'connected' [hasUseCandidate:false, hasNomination:false, nomination:0] +0ms
mediasoup:Channel [pid:42553] RTC::WebRtcTransport::OnIceServerSelectedTuple() | ICE selected tuple +0ms
mediasoup:Channel [pid:42553] RTC::WebRtcTransport::OnIceServerConnected() | ICE connected +0ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +1ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Transport produce() +282ms
mediasoup:Channel request() [method:TRANSPORT_PRODUCE] +5ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +211ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 242 bytes of DTLS data ready to be sent +0ms
mediasoup:Worker (stdout) 000a90240 blen: 4940 + 65 +2s
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5005 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5070 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5135 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5200 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5265 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5330 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5395 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5460 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5525 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5590 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5655 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5720 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5785 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5850 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5915 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 5980 + 65 +2ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 6045 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 6110 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 6175 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 6240 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 6305 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 6370 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 6435 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 6500 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 6565 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 6630 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 6695 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 6760 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 6825 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 6890 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 6955 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7020 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7085 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7150 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7215 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7280 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7345 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7410 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7475 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7540 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7605 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7670 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7735 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7800 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7865 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7930 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 7995 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 8060 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 8125 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 8190 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 8255 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 8320 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 8385 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 8450 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 8515 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 8580 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 8645 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 8710 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 8775 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 8840 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 8905 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 8970 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 9035 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 9100 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 9165 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 9230 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 9295 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 9360 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 9425 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 9490 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 9555 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 9620 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 9685 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 9750 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 9815 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 9880 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 9945 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10010 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10075 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10140 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10205 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10270 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10335 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10400 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10465 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10530 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10595 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10660 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10725 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10790 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10855 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10920 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 10985 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 11050 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 11115 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 11180 + 65 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 11245 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 11310 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 11375 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 11440 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 11505 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 11570 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 11635 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 11700 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 11765 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 11830 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 11895 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 11960 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 12025 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 12090 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 12155 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 12220 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 12285 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 12350 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 12415 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 12480 + 65 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90240 blen: 12545 + 29 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90360 blen: 0 + 157 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a80000 blen: 0 + 144 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a80000 blen: 144 + 78 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a80000 blen: 222 + 1245 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a903f0 blen: 0 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a80000 blen: 1467 + 1324 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a903f0 blen: 0 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a80000 blen: 2791 + 1324 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a903f0 blen: 0 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a80000 blen: 4115 + 654 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a80000 blen: 4769 + 657 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a903f0 blen: 0 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a80000 blen: 5426 + 1324 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a903f0 blen: 0 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a80000 blen: 6750 + 119 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a80000 blen: 6869 + 60 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a80000 blen: 6929 + 12 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a903f0 blen: 0 + 242 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90360 blen: 0 + 157 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90360 blen: 0 + 157 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90360 blen: 0 + 538 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a80000 blen: 6941 + 299 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a80000 blen: 7240 + 45 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a903f0 blen: 0 + 67 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a99170 blen: 0 + 11 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a99170 blen: 11 + 11 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a99170 blen: 22 + 6 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a99170 blen: 28 + 325 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a99170 blen: 353 + 57 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a99170 blen: 410 + 9 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a99170 blen: 419 + 11 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a99170 blen: 430 + 6 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a903f0 blen: 0 + 129 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90360 blen: 0 + 73 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a903f0 blen: 0 + 385 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90360 blen: 0 + 117 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a903f0 blen: 0 + 85 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90360 blen: 0 + 297 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a903f0 blen: 0 + 45 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a90360 blen: 0 + 45 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a88000 blen: 0 + 157 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a881b0 blen: 0 + 144 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a881b0 blen: 144 + 78 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a881b0 blen: 222 + 1245 +1ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a88090 blen: 0 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a881b0 blen: 1467 + 1324 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a88090 blen: 0 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a881b0 blen: 2791 + 1324 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a88090 blen: 0 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a881b0 blen: 4115 + 654 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a881b0 blen: 4769 + 657 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a88090 blen: 0 + 1349 +0ms
mediasoup:Worker (stdout) **** [mem_write] 0x600000a881b0 blen: 5426 + 1324 +0ms
mediasoup:Worker (stdout) **** [mem_w +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | DTLS timer set in 99ms +7ms
mediasoup:Channel [pid:42553] RTC::IceServer::HandleTuple() | transition from state 'connected' to 'completed' [hasUseCandidate:true, hasNomination:false, nomination:0] +0ms
mediasoup:Channel [pid:42553] RTC::WebRtcTransport::OnIceServerCompleted() | ICE completed +0ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | DTLS timer set in 99ms +0ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | DTLS timer set in 99ms +0ms
mediasoup:Channel request succeeded [method:TRANSPORT_PRODUCE, id:14] +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 67 bytes of DTLS data ready to be sent +1ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 129 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
mediasoup:Producer constructor() +0ms
mediasoup:RtpObserver addProducer() +586ms
mediasoup:Channel request() [method:RTPOBSERVER_ADD_PRODUCER] +2ms
mediasoup:RtpObserver addProducer() +1ms
mediasoup:Channel request() [method:RTPOBSERVER_ADD_PRODUCER] +1ms
mediasoup:Channel request succeeded [method:RTPOBSERVER_ADD_PRODUCER, id:15] +0ms
mediasoup:Channel request succeeded [method:RTPOBSERVER_ADD_PRODUCER, id:16] +0ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +6ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 385 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 45 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Transport produceData() +233ms
mediasoup:Channel request() [method:TRANSPORT_PRODUCE_DATA] +2ms
mediasoup:Channel request succeeded [method:TRANSPORT_PRODUCE_DATA, id:17] +1ms
mediasoup:DataProducer constructor() +592ms
mediasoup:Transport produceData() +8ms
mediasoup:Channel request() [method:TRANSPORT_PRODUCE_DATA] +8ms
mediasoup:Channel request succeeded [method:TRANSPORT_PRODUCE_DATA, id:18] +0ms
mediasoup:DataProducer constructor() +8ms
mediasoup:Transport consumeData() +1ms
mediasoup:Channel request() [method:TRANSPORT_CONSUME_DATA] +0ms
mediasoup:Channel request succeeded [method:TRANSPORT_CONSUME_DATA, id:19] +0ms
mediasoup:DataConsumer constructor() +523ms

// Here I send a DataChannel message and is sent back to the client:

cmd>
cmd>
cmd>
cmd>
cmd> mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +8s
mediasoup:Channel [pid:42553] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 57 bytes of DTLS data ready to be sent +1ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel notify() [event:DATAPRODUCER_SEND] +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SendDtlsData() | 85 bytes of DTLS data ready to be sent +1ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
mediasoup:Channel [pid:42553] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
mediasoup:Channel [pid:42553] RTC::DtlsTransport::OnTimer() | handshake is done so return +1ms

In next comment I will only show your [mem_write] logs affecting sslBioToNetwork.

from mediasoup.

ibc avatar ibc commented on June 2, 2024

mem_write logs with point this->sslBioToNetwork without calling BIO_reset(this->sslBioToNetwork):

**** [mem_write] 0x60000035c240 blen: 0 + 1349 +0ms
**** [mem_write] 0x60000035c240 blen: 1349 + 1349 +0ms
**** [mem_write] 0x60000035c240 blen: 2698 + 1349 +0ms
**** [mem_write] 0x60000035c240 blen: 4047 + 1349 +0ms
**** [mem_write] 0x60000035c240 blen: 5396 + 1349 +0ms
**** [mem_write] 0x60000035c240 blen: 6745 + 242 +0ms

mem_write logs with point this->sslBioToNetwork calling BIO_reset(this->sslBioToNetwork):

...

And I couldn't get those logs because... Honestly I don't know what I'm doing. I don't see those mem_write logs always. In fact they do NOT happen in most of cases. Here for example I've restarted the browser tab running mediasoup-demo so previous mediasoup Router is closed and a new one is created, new WebRtcTransport, etc. And I do NOT see those mem_write logs:

RTC::DtlsTransport::DtlsTransport() | ------- this->sslBioToNetwork address: 0x600000330240
  mediasoup:Channel request succeeded [method:ROUTER_CREATE_WEBRTCTRANSPORT_WITH_SERVER, id:7] +0ms
  mediasoup:Transport constructor() +65ms
  mediasoup:WebRtcTransport constructor() +0ms
  mediasoup:Transport enableTraceEvent() +0ms
  mediasoup:Channel request() [method:TRANSPORT_ENABLE_TRACE_EVENT] +3ms
  mediasoup:Channel request succeeded [method:TRANSPORT_ENABLE_TRACE_EVENT, id:8] +0ms
  mediasoup:Transport consumeData() +4ms
  mediasoup:Channel request() [method:TRANSPORT_CONSUME_DATA] +4ms
  mediasoup:Channel request succeeded [method:TRANSPORT_CONSUME_DATA, id:9] +1ms
  mediasoup:DataConsumer constructor() +0ms
  mediasoup:WebRtcTransport connect() +16ms
  mediasoup:Channel request() [method:WEBRTCTRANSPORT_CONNECT] +11ms
  mediasoup:Channel request succeeded [method:WEBRTCTRANSPORT_CONNECT, id:10] +0ms
  mediasoup:Channel [pid:45028] RTC::IceServer::HandleTuple() | transition from state 'new' to 'connected' [hasUseCandidate:false, hasNomination:false, nomination:0] +4ms
  mediasoup:Channel [pid:45028] RTC::WebRtcTransport::OnIceServerSelectedTuple() | ICE selected tuple +1ms
  mediasoup:Channel [pid:45028] RTC::WebRtcTransport::OnIceServerConnected() | ICE connected +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +1ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)

cmd> RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +235ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SendDtlsData() | 1349 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SendDtlsData() | 242 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SetTimeout() | DTLS timer set in 99ms +0ms
  mediasoup:Channel [pid:45028] RTC::IceServer::HandleTuple() | transition from state 'connected' to 'completed' [hasUseCandidate:true, hasNomination:false, nomination:0] +0ms
  mediasoup:Channel [pid:45028] RTC::WebRtcTransport::OnIceServerCompleted() | ICE completed +1ms
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SetTimeout() | DTLS timer set in 99ms +0ms
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SetTimeout() | DTLS timer set in 99ms +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SendDtlsData() | 67 bytes of DTLS data ready to be sent +2ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SendDtlsData() | 129 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +1ms
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SendDtlsData() | 385 bytes of DTLS data ready to be sent +1ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SendDtlsData() | 85 bytes of DTLS data ready to be sent +1ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == BIO_CB_WRITE
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SendDtlsData() | 45 bytes of DTLS data ready to be sent +0ms
RTC::DtlsTransport::onSslBioOut() | ----- operationType == (BIO_CB_RETURN | BIO_CB_WRITE)
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::SetTimeout() | timeout is 0, calling OnTimer() callback directly +0ms
  mediasoup:Channel [pid:45028] RTC::DtlsTransport::OnTimer() | handshake is done so return +0ms

from mediasoup.

ibc avatar ibc commented on June 2, 2024

I've also added this at the top of DtlsTransport::SendDtlsData():

long bioRead;
char* bioData{ nullptr };
bioRead = BIO_get_mem_data(this->sslBioToNetwork, &bioData);
MS_DUMP("---- BIO_get_mem_data(this->sslBioToNetwork): %ld", bioRead);

And it absolutely always returns 1:

RTC::DtlsTransport::SendDtlsData() | ---- BIO_get_mem_data(this->sslBioToNetwork): 1

So honestly I don't understand absolutely anything.

Docs:

`BIO_get_mem_data() returns the total number of bytes available on success, 0 if b is NULL, or a negative value in case of other errors.

from mediasoup.

ibc avatar ibc commented on June 2, 2024

If the problem doesn't occur for you, I'd be very curious where in this case that buffer is emptied

To be very clear about this, it's not that the issue doesn't occur for me. It's that I have no idea how to know if it is happening because the log you added in OpenSSL prints at completely unexpected times or doesn't not print at all (not even if 0 because I removed the if condition).

from mediasoup.

gkrol-katmai avatar gkrol-katmai commented on June 2, 2024

Fascinating problem!

If you don't see the writes after removing the if when sending normal messages, it's possible that this is a completely different code path. Could it be that control messages, like the certificate and ACK packets are sent over a different channel from the actual data?

For me, BIO_get_mem_data(this->sslBioToNetwork) has also always returned 1, confusingly enough. And that also didn't make sense to me, so that's why I added that printf into the openssl code. That's the only place where I could actually see the length of the buffer increase.

Any plans to switch to a different SSL library by any chance? I'm not very impressed by the OpenSSL API and the code quality. And they've got a bad reputation with a lot of security problems.

I don't think I've got time today, but I may look into this some more next week. I'm very curious about what's going on!

from mediasoup.

ibc avatar ibc commented on June 2, 2024

If you don't see the writes after removing the if when sending normal messages, it's possible that this is a completely different code path. Could it be that control messages, like the certificate and ACK packets are sent over a different channel from the actual data?

Maybe.

Any plans to switch to a different SSL library by any chance? I'm not very impressed by the OpenSSL API and the code quality. And they've got a bad reputation with a lot of security problems.

Honestly not in the short term. In the past I did some research and couldn't find anything that could be used for proper DTLS+WebRTC (missing features such as SRTP keys negotiation over DTLS or DTLS timeout capabilities), so I gave up.

I don't think I've got time today, but I may look into this some more next week. I'm very curious about what's going on!

I'd appreciate if we could have a proper way to verify the leak so, having that, we can validate possible fixes. Right now I have a local branch which implements the PR that was reverted plus the BIO_reset(this->sslBioToNetwork) at the end of SendDtlsData(), but if we don't really know whether that fixes the problem or not then it's not good.

from mediasoup.

ibc avatar ibc commented on June 2, 2024

@gkrol-katmai, add fflush(stdout); after your printf in bss_mem.c and it will always print when expected.

from mediasoup.

ibc avatar ibc commented on June 2, 2024

Ok, so I can confirm that by calling BIO_reset(this->sslBioToNetwork) at the end of DtlsTransport::SendDtlsData() (in the code of this PR #1156), the leak goes away.

However I'm not confident. Are we completely sure that we must clear/free/release all the content in this->sslBioToNetwork BIO mem after DtlsTransport::SendDtlsData() has been called triggered by the OpenSSL onSslBioOut callback with BIO_CB_WRITE operation?

I mean, imagine that OpenSSL wants to send 2 DTLS messages (or 2 DTLS message fragments), first one is 1500 bytes long, second one is 500 bytes longs. Somehow OpenSSL writes both together in the BIO mem, however it invokes the onSslBioOut with BIO_CB_WRITE twice sequentially, one with len: 1500 and another one with len: 500.

If we follow the logic above and call BIO_reset(this->sslBioToNetwork) at the end of DtlsTransport::SendDtlsData(), then we are releasing 1500+500 bytes from the BIO mem rather than just the 1500 bytes that we have already sent to the endpoint. How can we know if that can happen or not?

from mediasoup.

ibc avatar ibc commented on June 2, 2024

I mean, imagine that OpenSSL wants to send 2 DTLS messages (or 2 DTLS message fragments), first one is 1500 bytes long, second one is 500 bytes longs. Somehow OpenSSL writes both together in the BIO mem, however it invokes the onSslBioOut with BIO_CB_WRITE twice sequentially, one with len: 1500 and another one with len: 500.

If we follow the logic above and call BIO_reset(this->sslBioToNetwork) at the end of DtlsTransport::SendDtlsData(), then we are releasing 1500+500 bytes from the BIO mem rather than just the 1500 bytes that we have already sent to the endpoint. How can we know if that can happen or not?

Ok, I'm adding proper logs and it looks safe. Indeed OpenSSL invokes the onSslBioOut with ALL the bytes that it has written into the BIO mem, so it's safe to call BIO_reset(this->sslBioToNetwork) after sending them to the endpoint:

RTC::DtlsTransport::DtlsTransport() | ------- this->sslBioToNetwork address: 0x6000028a0240 +350ms

RTC::DtlsTransport::SendDtlsData() | >>> 1349 bytes of DTLS data ready to be sent +0ms
**** [mem_write] 0x6000028a0240 blen: 0 + 1349 +0ms

RTC::DtlsTransport::SendDtlsData() | >>> 1349 bytes of DTLS data ready to be sent +0ms
**** [mem_write] 0x6000028a0240 blen: 0 + 1349 +0ms

RTC::DtlsTransport::SendDtlsData() | >>> 1349 bytes of DTLS data ready to be sent +0ms
**** [mem_write] 0x6000028a0240 blen: 0 + 1349 +0ms

RTC::DtlsTransport::SendDtlsData() | >>> 1349 bytes of DTLS data ready to be sent +0ms
**** [mem_write] 0x6000028a0240 blen: 0 + 1349 +0ms

RTC::DtlsTransport::SendDtlsData() | >>> 1349 bytes of DTLS data ready to be sent +0ms
**** [mem_write] 0x6000028a0240 blen: 0 + 1349 +0ms

RTC::DtlsTransport::SendDtlsData() | >>> 242 bytes of DTLS data ready to be sent +0ms
**** [mem_write] 0x6000028a0240 blen: 0 + 242 +0ms

RTC::DtlsTransport::SendDtlsData() | >>> 67 bytes of DTLS data ready to be sent +0ms
**** [mem_write] 0x6000028a0240 blen: 0 + 67 +0ms
  
RTC::DtlsTransport::SendDtlsData() | >>> 129 bytes of DTLS data ready to be sent +0ms
**** [mem_write] 0x6000028a0240 blen: 0 + 129 +0ms

RTC::DtlsTransport::SendDtlsData() | >>> 385 bytes of DTLS data ready to be sent +0ms
**** [mem_write] 0x6000028a0240 blen: 0 + 385 +0ms

RTC::DtlsTransport::SendDtlsData() | >>> 45 bytes of DTLS data ready to be sent +0ms
**** [mem_write] 0x6000028a0240 blen: 0 + 45 +0ms

RTC::DtlsTransport::SendDtlsData() | >>> 57 bytes of DTLS data ready to be sent +1ms
**** [mem_write] 0x6000028a0240 blen: 0 + 57 +0ms

RTC::DtlsTransport::SendDtlsData() | >>> 85 bytes of DTLS data ready to be sent +848ms
**** [mem_write] 0x6000028a0240 blen: 0 + 85 +1ms

from mediasoup.

ibc avatar ibc commented on June 2, 2024

So here we are: PR #1345

@gkrol-katmai @pnts-se would you like to take a look to it, please?

from mediasoup.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.