Comments (22)
@pnts-se don't worry, I'm doing it. Thanks a lot.
from mediasoup.
Do you know how to check the byte size of the BIO_s_mem?
from mediasoup.
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.
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.
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.
PR done: #1342
from mediasoup.
PR #1342 merged. Thanks a lot.
from mediasoup.
Thanks for responding to this so quickly!
from mediasoup.
@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:
from mediasoup.
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.
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.
@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.
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.
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.
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.
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.
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.
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.
@gkrol-katmai, add fflush(stdout);
after your printf
in bss_mem.c
and it will always print when expected.
from mediasoup.
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.
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
withBIO_CB_WRITE
twice sequentially, one withlen: 1500
and another one withlen: 500
.If we follow the logic above and call
BIO_reset(this->sslBioToNetwork)
at the end ofDtlsTransport::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.
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)
- Memory leak HOT 6
- Multi-thread bug when using usrsctp in N Worker threads in Rust HOT 1
- opus dtx incorrectly judged HOT 7
- Possible missing break in H264_SVC::ParseSingleNalu()
- Must join all XxxConsumer classes into a single one
- set MS_LOG_DEV_LEVEL 3, lead to build errors HOT 1
- #define MS_LOG_DEV_LEVEL 3, build error HOT 1
- SeqManager<T>::SeqLowerThan() crashes when used as compare function in abseil set or map (only in debug mode) HOT 24
- Use uint64_t for containers with RTP seq number as key
- arm64 prebuilt binaries are replacing x64 ones HOT 4
- test-PipeTransport.ts randomly fails HOT 2
- RtpPacket::SetPayloadLength get wrong payloadLength HOT 2
- Possible memory leak HOT 34
- DataConsumer::SendMessage cause onQueuedCallback* cb leak and DATACONSUMER_SEND have no response HOT 1
- FeedbackRtpTransport.cpp may have an overflow mistake HOT 9
- Worker crash when closing `WebRtcServer` if there are TCP connections active HOT 2
- Mediasoup worker died, exiting in 2 seconds... HOT 2
- [Rust] Error log “XXX closing failed on drop: Channel already closed”
- Add interface for RTC::Shared, Channel::ChannelNotifier and ChannelMessageRegistrator HOT 3
- [Rust] Transport with only audio producer results in server-side transport cc is not created. HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mediasoup.