mirror of
https://github.com/warmcat/libwebsockets.git
synced 2025-03-16 00:00:07 +01:00

This adds the option to have lws do its own dns resolution on the event loop, without blocking. Existing implementations get the name resolution done by the libc, which is blocking. In the case you are opening client connections but need to carefully manage latency, another connection opening and doing the name resolution becomes a big problem. Currently it supports - ipv4 / A records - ipv6 / AAAA records - ipv4-over-ipv6 ::ffff:1.2.3.4 A record promotion for ipv6 - only one server supported over UDP :53 - nameserver discovery on linux, windows, freertos It also has some nice advantages - lws-style paranoid response parsing - random unique tid generation to increase difficulty of poisoning - it's really integrated with the lws event loop, it does not spawn threads or use the libc resolver, and of course no blocking at all - platform-specific server address capturing (from /etc/resolv.conf on linux, windows apis on windows) - it has LRU caching - piggybacking (multiple requests before the first completes go on a list on the first request, not spawn multiple requests) - observes TTL in cache - TTL and timeout use lws_sul timers on the event loop - ipv6 pieces only built if cmake LWS_IPV6 enabled
56 lines
2.5 KiB
Text
56 lines
2.5 KiB
Text
Libwebsockets and included programs are provided under the terms of the
|
|
MIT license shown below, with the exception that some sources are under
|
|
a similar permissive license like BSD, or are explicitly CC0 / public
|
|
domain to remove any obstacles from basing differently-licensed code on
|
|
them.
|
|
|
|
Original liberal license retained:
|
|
|
|
- lib/misc/sha-1.c - 3-clause BSD license retained, link to original
|
|
- win32port/zlib - ZLIB license (see zlib.h)
|
|
- lib/tls/mbedtls/wrapper - Apache 2.0 (only built if linked against mbedtls)
|
|
- lib/misc/base64-decode.c - already MIT
|
|
|
|
Relicensed to MIT:
|
|
|
|
- lib/misc/daemonize.c - relicensed from Public Domain to MIT,
|
|
link to original Public Domain version
|
|
- lib/plat/windows/windows-resolv.c - relicensed from "Beerware v42" to MIT
|
|
|
|
Public Domain (CC-zero) to simplify reuse:
|
|
|
|
- test-apps/*.c
|
|
- test-apps/*.h
|
|
- minimal-examples/*
|
|
- lwsws/*
|
|
|
|
Although libwebsockets is available under a permissive license, it does not
|
|
change the reality of dealing with large lumps of external code... if your
|
|
copy diverges it is guaranteed to contain security problems after a while
|
|
and can be very painful to pick backports (especially since historically,
|
|
we are very hot on cleaning and refactoring the codebase). The least
|
|
painful and lowest risk way remains sending your changes and fixes upstream
|
|
to us so you can easily use later releases and fixes.
|
|
|
|
MIT License applied to libwebsockets:
|
|
|
|
https://opensource.org/licenses/MIT
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to
|
|
deal in the Software without restriction, including without limitation the
|
|
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
sell copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
IN THE SOFTWARE.
|
|
|