open-webrtc-toolkit / owt-sdk-quic Goto Github PK
View Code? Open in Web Editor NEWC++ server and client APIs for WebTransport.
License: Apache License 2.0
C++ server and client APIs for WebTransport.
License: Apache License 2.0
I read this article, follow the article step by step, check the latest main branch, but compile failed.
ninja -C out/release owt_web_transport owt_web_transport_tests
ninja: Entering directory `out/release'
[3414/3759] CXX obj/owt/web_transport/owt_web_transport_impl/web_transport_stream_impl.o
FAILED: obj/owt/web_transport/owt_web_transport_impl/web_transport_stream_impl.o
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/owt/web_transport/owt_web_transport_impl/web_transport_stream_impl.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_OZONE=1 -DUSE_X11=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DCR_CLANG_REVISION=\"llvmorg-12-init-5627-gf086e85e-2\" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_LIBCPP_ABI_UNSTABLE -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_ENABLE_NODISCARD -D_LIBCPP_DEBUG=0 -DCR_LIBCXX_REVISION=375504 -DCR_SYSROOT_HASH=5f64b417e1018dcf8fcc81dc2714e0f264b9b911 -D_DEBUG -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DOWT_QUIC_LIBRARY_IMPL -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_40 -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_40 -DGOOGLE_PROTOBUF_NO_RTTI -DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER -DHAVE_PTHREAD -I../.. -Igen -I../../owt/web_transport/sdk -I../../owt/web_transport/sdk/api -I../../third_party/perfetto/include -Igen/third_party/perfetto/build_config -Igen/third_party/perfetto -I../../third_party/abseil-cpp -I../../third_party/boringssl/src/include -I../../third_party/protobuf/src -Igen/protoc_out -I../../third_party/protobuf/src -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -funwind-tables -fPIC -pthread -fcolor-diagnostics -fmerge-all-constants -fcrash-diagnostics-dir=../../tools/clang/crashreports -mllvm -instcombine-lower-dbg-declare=0 -mllvm -enable-dse-memoryssa=false -fcomplete-member-pointers -m64 -march=x86-64 -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -Xclang -fdebug-compilation-dir -Xclang . -no-canonical-prefixes -Wall -Werror -Wextra -Wimplicit-fallthrough -Wunreachable-code -Wthread-safety -Wextra-semi -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-unneeded-internal-declaration -Wno-undefined-var-template -Wno-psabi -Wno-ignored-pragma-optimize -Wno-implicit-int-float-conversion -Wno-final-dtor-non-final-class -Wno-builtin-assume-aligned-alignment -Wno-deprecated-copy -Wno-non-c-typedef-for-linkage -Wmax-tokens -O0 -fno-omit-frame-pointer -g1 -ftrivial-auto-var-init=pattern -fvisibility=hidden -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang check-ipc -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -isystem../../build/linux/debian_sid_amd64-sysroot/usr/include/glib-2.0 -isystem../../build/linux/debian_sid_amd64-sysroot/usr/lib/x86_64-linux-gnu/glib-2.0/include -Wno-shorten-64-to-32 -Wno-header-guard -isystem../../build/linux/debian_sid_amd64-sysroot/usr/include/nss -isystem../../build/linux/debian_sid_amd64-sysroot/usr/include/nspr -Wno-undefined-bool-conversion -Wno-tautological-undefined-compare -std=c++14 -fno-trigraphs -Wno-trigraphs -fno-exceptions -fno-rtti -nostdinc++ -isystem../../buildtools/third_party/libc++/trunk/include -isystem../../buildtools/third_party/libc++abi/trunk/include --sysroot=../../build/linux/debian_sid_amd64-sysroot -fvisibility-inlines-hidden -c ../../owt/web_transport/sdk/impl/web_transport_stream_impl.cc -o obj/owt/web_transport/owt_web_transport_impl/web_transport_stream_impl.o
In file included from ../../owt/web_transport/sdk/impl/web_transport_stream_impl.cc:15:
In file included from ../../owt/web_transport/sdk/impl/web_transport_stream_impl.h:21:
../../owt/web_transport/sdk/impl/http3_server_stream.h:50:9: error: no type named 'Http2HeaderBlock' in namespace 'spdy'; did you mean 'SpdyHeaderBlock'?
spdy::Http2HeaderBlock request_headers_;
~~~~~~^~~~~~~~~~~~~~~~
SpdyHeaderBlock
../../net/third_party/quiche/src/spdy/core/spdy_header_block.h:49:29: note: 'SpdyHeaderBlock' declared here
class QUICHE_EXPORT_PRIVATE SpdyHeaderBlock {
^
In file included from ../../owt/web_transport/sdk/impl/web_transport_stream_impl.cc:15:
../../owt/web_transport/sdk/impl/web_transport_stream_impl.h:23:10: fatal error: 'net/third_party/quiche/src/quic/core/web_transport_interface.h' file not found
#include "net/third_party/quiche/src/quic/core/web_transport_interface.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 errors generated.
[3415/3759] CXX obj/owt/web_transport/owt_web_transport_impl/web_transport_server_backend.o
FAILED: obj/owt/web_transport/owt_web_transport_impl/web_transport_server_backend.o
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/owt/web_transport/owt_web_transport_impl/web_transport_server_backend.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_OZONE=1 -DUSE_X11=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DCR_CLANG_REVISION=\"llvmorg-12-init-5627-gf086e85e-2\" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_LIBCPP_ABI_UNSTABLE -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_ENABLE_NODISCARD -D_LIBCPP_DEBUG=0 -DCR_LIBCXX_REVISION=375504 -DCR_SYSROOT_HASH=5f64b417e1018dcf8fcc81dc2714e0f264b9b911 -D_DEBUG -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DOWT_QUIC_LIBRARY_IMPL -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_40 -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_40 -DGOOGLE_PROTOBUF_NO_RTTI -DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER -DHAVE_PTHREAD -I../.. -Igen -I../../owt/web_transport/sdk -I../../owt/web_transport/sdk/api -I../../third_party/perfetto/include -Igen/third_party/perfetto/build_config -Igen/third_party/perfetto -I../../third_party/abseil-cpp -I../../third_party/boringssl/src/include -I../../third_party/protobuf/src -Igen/protoc_out -I../../third_party/protobuf/src -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -funwind-tables -fPIC -pthread -fcolor-diagnostics -fmerge-all-constants -fcrash-diagnostics-dir=../../tools/clang/crashreports -mllvm -instcombine-lower-dbg-declare=0 -mllvm -enable-dse-memoryssa=false -fcomplete-member-pointers -m64 -march=x86-64 -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -Xclang -fdebug-compilation-dir -Xclang . -no-canonical-prefixes -Wall -Werror -Wextra -Wimplicit-fallthrough -Wunreachable-code -Wthread-safety -Wextra-semi -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-unneeded-internal-declaration -Wno-undefined-var-template -Wno-psabi -Wno-ignored-pragma-optimize -Wno-implicit-int-float-conversion -Wno-final-dtor-non-final-class -Wno-builtin-assume-aligned-alignment -Wno-deprecated-copy -Wno-non-c-typedef-for-linkage -Wmax-tokens -O0 -fno-omit-frame-pointer -g1 -ftrivial-auto-var-init=pattern -fvisibility=hidden -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang check-ipc -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -isystem../../build/linux/debian_sid_amd64-sysroot/usr/include/glib-2.0 -isystem../../build/linux/debian_sid_amd64-sysroot/usr/lib/x86_64-linux-gnu/glib-2.0/include -Wno-shorten-64-to-32 -Wno-header-guard -isystem../../build/linux/debian_sid_amd64-sysroot/usr/include/nss -isystem../../build/linux/debian_sid_amd64-sysroot/usr/include/nspr -Wno-undefined-bool-conversion -Wno-tautological-undefined-compare -std=c++14 -fno-trigraphs -Wno-trigraphs -fno-exceptions -fno-rtti -nostdinc++ -isystem../../buildtools/third_party/libc++/trunk/include -isystem../../buildtools/third_party/libc++abi/trunk/include --sysroot=../../build/linux/debian_sid_amd64-sysroot -fvisibility-inlines-hidden -c ../../owt/web_transport/sdk/impl/web_transport_server_backend.cc -o obj/owt/web_transport/owt_web_transport_impl/web_transport_server_backend.o
In file included from ../../owt/web_transport/sdk/impl/web_transport_server_backend.cc:7:
In file included from ../../owt/web_transport/sdk/impl/web_transport_server_backend.h:11:
In file included from ../../owt/web_transport/sdk/impl/web_transport_server_session.h:15:
../../owt/web_transport/sdk/impl/http3_server_session.h:46:38: error: only virtual member functions can be marked 'override'
bool ShouldNegotiateWebTransport() override;
^~~~~~~~
../../owt/web_transport/sdk/impl/http3_server_session.h:47:39: error: only virtual member functions can be marked 'override'
bool ShouldNegotiateHttp3Datagram() override;
^~~~~~~~
In file included from ../../owt/web_transport/sdk/impl/web_transport_server_backend.cc:7:
In file included from ../../owt/web_transport/sdk/impl/web_transport_server_backend.h:11:
../../owt/web_transport/sdk/impl/web_transport_server_session.h:16:10: fatal error: 'net/third_party/quiche/src/quic/core/http/web_transport_http3.h' file not found
Hi,
Seems that "gclient sync" is done.
When execute “gn gen out/debug” command
It outputs as follow:
ERROR at //testing/test.gni:21:30: Undefined identifier
tests_have_location_tags = generate_location_tags
^---------------------
See //testing/libfuzzer/fuzzer_test.gni:9:1: whence it was imported.
import("//testing/test.gni")
^--------------------------
See //media/media_options.gni:11:1: whence it was imported.
import("//testing/libfuzzer/fuzzer_test.gni")
^-------------------------------------------
See //chromecast/chromecast.gni:8:1: whence it was imported.
import("//media/media_options.gni")
^---------------------------------
See //chrome/browser/buildflags.gni:8:1: whence it was imported.
import("//chromecast/chromecast.gni")
^-----------------------------------
See //BUILD.gn:19:1: whence it was imported.
import("//chrome/browser/buildflags.gni")
^---------------------------------------
Any advice about this error?
Remove session from sessions_
when it's ended.
Hi,
I am taking tests on high sender loss network condition. The connection is often closed by the network blackhole detection. After I swiched the blackhole_detection_disabled_ to true in quic_connection.h, I got the QUIC_NETWORK_IDLE_TIMEOUT error. However, I think 5 rtos or 33ms timeout is very normal in weak network condition.
Is this normal? Could you please some hints on these problems? Thank you very much.
The latest Chromium supports H3_DATAGRAM_DRAFT04 instead of H3_DATAGRAM_DRAFT00. Handshake fails if the version doesn't match.
Reset chromium commit close to 0d7f510fc898d4040d474a58b0eb609c43b6ac20.
what is the tag of that vesion.
Chrome canary now supports IETF draft 29, while server supports IETF draft 27.
quic-transport will no longer be supported by browser. Moving to HTTP/3 based WebTransport to align with spec.
hello while i am trying to do the steps in build_instructions one by one at "gn gen out/debug" step I am getting the error
"ERROR Unresolved dependencies.
//:gn_all(//build/toolchain/linux:clang_x64)
needs //owt/web_transport:owt_web_transport(//build/toolchain/linux:clang_x64)"
Any idea how to make it run?
Thank you in advance.
When the destructor is called on the interface method that this implements from https://github.com/open-webrtc-toolkit/owt-client-native/blob/5626f534c0f5237e3a7a5303417f1eafd90f3cd2/talk/owt/sdk/conference/conferencewebtransportchannel.cc#L67 the destructor will be pended on the wait() call.
Why would the destructor need to pend on wait() if this instance will be destroyed?
Hi
Is there any sample quic/webtransport application ( linux or windows) which uses owt-client-native which calls owt-quic-sdk to
test the webtransport / quic features of owt server / client. If so can you please provide the location ?
thanks
Hi
Is there a way to build the owt-sdk-quic without downloading and building the entire chromium code (as it takes a very long time) . Is there still a dependency on chrome .
I saw a few quic clients online which dont need chrome.
I am reading that the new QUIC which the webtransport uses , is independent of chrome.
So assuming owt-sdk-quic uses the web transport / HTTP3/QUIC defined by IETF, do we still need to build chrome ?
thanks
undefined symbol: net::InitializeQuicConfig(net::QuicParams const&)
owt-deps-quic\web_transport\sdk\impl\web_transport_http3_client.cc:429
Invalid cross-device link is reported during gclient sync
. It's possibly related to container environment.
Chrome Canary Version 97.0.4692.0 reports error "Failed to establish a connection to https://hostname/: net::ERR_METHOD_NOT_SUPPORTED." when connect to WebTransport server. It looks like this issue is caused by a recent change in QUICHE (https://quiche.googlesource.com/quiche/+/69cbd66510dd5a04355f1b41d763ac0e353df30a).
QuicTransportStreamImpl::Write
posts a task to io_runner_
. Session might be stopped before the task is finished.
Call stack:
owt_quic_transport.dll!quic::QuicTransportStream::CanWrite() Line 101 C++
> owt_quic_transport.dll!owt::quic::QuicTransportStreamImpl::Write(uint8_t *, size_t)::(anonymous class)::operator()() Line 114 C++
owt_quic_transport.dll!base::internal::FunctorTraits<`lambda at ../../owt/quic_transport/impl/quic_transport_stream_impl.cc:112:11',void>::Invoke<`lambda at ../../owt/quic_transport/impl/quic_transport_stream_impl.cc:112:11',owt::quic::QuicTransportStreamImpl *,unsigned char *,unsigned long long &,bool &,base::WaitableEvent *>() Line 379 C++
owt_quic_transport.dll!base::internal::InvokeHelper<0,void>::MakeItSo<`lambda at ../../owt/quic_transport/impl/quic_transport_stream_impl.cc:112:11',owt::quic::QuicTransportStreamImpl *,unsigned char *,unsigned long long &,bool &,base::WaitableEvent *>() Line 637 C++
owt_quic_transport.dll!base::internal::Invoker<base::internal::BindState<`lambda at ../../owt/quic_transport/impl/quic_transport_stream_impl.cc:112:11',base::internal::UnretainedWrapper<owt::quic::QuicTransportStreamImpl>,base::internal::UnretainedWrapper<unsigned char>,std::__1::reference_wrapper<unsigned long long>,std::__1::reference_wrapper<bool>,base::internal::UnretainedWrapper<base::WaitableEvent>>,void ()>::RunImpl<`lambda at ../../owt/quic_transport/impl/quic_transport_stream_impl.cc:112:11',std::__1::tuple<base::internal::UnretainedWrapper<owt::quic::QuicTransportStreamImpl>,base::internal::UnretainedWrapper<unsigned char>,std::__1::reference_wrapper<unsigned long long>,std::__1::reference_wrapper<bool>,base::internal::UnretainedWrapper<base::WaitableEvent>>,0,1,2,3,4>() Line 710 C++
owt_quic_transport.dll!base::internal::Invoker<base::internal::BindState<`lambda at ../../owt/quic_transport/impl/quic_transport_stream_impl.cc:112:11',base::internal::UnretainedWrapper<owt::quic::QuicTransportStreamImpl>,base::internal::UnretainedWrapper<unsigned char>,std::__1::reference_wrapper<unsigned long long>,std::__1::reference_wrapper<bool>,base::internal::UnretainedWrapper<base::WaitableEvent>>,void ()>::RunOnce() Line 679 C++
owt_quic_transport.dll!base::OnceCallback<void ()>::Run() Line 101 C++
owt_quic_transport.dll!base::TaskAnnotator::RunTask() Line 165 C++
owt_quic_transport.dll!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl() Line 333 C++
owt_quic_transport.dll!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork() Line 254 C++
owt_quic_transport.dll!base::MessagePumpForIO::DoRunLoop() Line 723 C++
owt_quic_transport.dll!base::MessagePumpWin::Run() Line 82 C++
owt_quic_transport.dll!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run() Line 450 C++
owt_quic_transport.dll!base::RunLoop::Run() Line 124 C++
owt_quic_transport.dll!base::Thread::Run() Line 311 C++
owt_quic_transport.dll!base::Thread::ThreadMain() Line 385 C++
owt_quic_transport.dll!base::`anonymous namespace'::ThreadFunc() Line 113 C++
[External Code]
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.