File libwebsockets.changes of Package libwebsockets

Fri Dec  4 21:06:07 UTC 2020 - Martin Hauke <>

- Update to version 4.1.6
  - NEW: CMakeLists.txt has been refactored and modernized into
    smaller CMakeLists.txt
  - NEW: event lib support on Unix is now built into dynamically
    loaded plugins and brought in at runtime, allowing all of the
    support to be built in isolation without conflicts, and
    separately packaged with individual dependencies.
    See ./READMEs/ for details and how to force the
    old static build into lws method.
  - NEW: Captive Portal Detection.  Lws can determine if the
    active default route is able to connect to the internet, or
    is in a captive portal type situation, by trying to connect
    to a remote server that will respond in an unusual way, like
    provide a 204.
  - NEW: Secure streams: Support system trust store if it exists
  - NEW: lws_struct: BLOB support
  - NEW: lws_sul: Now provides two sorted timer domains, a
    default one as before, and another whose scheduled events are
    capable to wake the system from suspend
  - NEW: System Message Distribution: lws_smd provides a very
    lightweight way to pass short messages between subsystems both
    in RTOS type case where the subsystems are all on the lws
    event loop, and in the case participants are in different
    processes, using Secure Streams proxying. Participants
    register a bitmap of message classes they care about; if no
    particpant cares about a particular message, it is rejected
    at allocation time for the sender, making it cheap to provide
    messages speculatively.
    See lib/system/smd/ for full details.
  - NEW: lws_drivers: wrappers for SDK driver abstractions (or
    actual drivers) See lib/drivers/
  - NEW: Security-aware JWS JWT (JSON Web Tokens) apis are
    provided on top of the existing JOSE / JWS apis. All the
    common algorithms are available along with some high level
    apis like lws http cookie -> JWT struct -> lws http cookie.
  - REMOVED: esp32-helper and friends used by esp32-factory now
    lws_drivers exists
  - REMOVED: generic sessions and friends now JWT is provided
- Drop not longer needed patch:
  * libwebsockets-norpmtools.patch

Sat Nov 21 04:33:55 UTC 2020 - Bernhard Wiedemann <>

- Require openssl-devel in libwebsockets-devel

Thu Aug 20 22:49:59 UTC 2020 - Dirk Mueller <>

- update to 4.0.20:
  * mbedtls: only free crt_parse when something came back
  * lejp: enable negative integers
  * context_destroy: backport event-lib fixes from master
  * libevent: enforce no event state duplication
  * multipart: quote boundary
  * clean: additional-lws_intptr_t
  * ss: add api test with ctest integration
  * PEER_LIMITS: make sure to close socketfd on deny
  * unix domain: fix path name length
  * libev: fix destroy path and example typo
  * ss: make sure to use LWS_WRITE_HTTP_FINAL with SS EOM flag
  * h2: client: do not apply host header if h2 negotiated by alpn
  * strexp: reset out offset each time

Tue Mar 10 19:32:34 UTC 2020 - Martin Hauke <>

- Update to version 4.0.1
  * NEW: Lws is now under the MIT license, see ./LICENSE for details
  * NEW: GLIB native event loop support, lws + gtk example
  * NEW: native lws MQTT client... supports client stream binding like h2 when
    multiple logical connections are going to the same endpoint over MQTT, they
    transparently and independently share the one connection + tls tunnel
  * NEW: "Secure Streams"... if you are making a device with client connections
    to the internet or cloud, this allows separation of the communications
    policy (endpoints, tls cert validation, protocols, etc) from the code, with
    the goal you can combine streams, change protocols and cloud provision, and
    reflect that in the device's JSON policy document without having to change
    any code.
  * NEW: lws_system: New lightweight and efficient Asynchronous DNS resolver
    implementation for both A and AAAA records, supports recursive (without
    recursion in code) lookups, caching, and getaddrinfo() compatible results
    scheme (from cache directly without per-consumer allocation).  Able to
    perform DNS lookups without introducing latency in the event loop.
  * NEW: lws_system: ntpclient implementation with interface for setting system
    time via lws_system ops
  * NEW: lws_system: dhcpclient implementation
  * NEW: Connection validity tracking, autoproduce PING/PONG for protocols that
    support it if not informed that the connection has passed data in both
    directions recently enough
  * NEW: lws_retry: standardized exponential backoff and retry timing based
    around backoff table and lws_sul
  * NEW: there are official public helpers for unaligned de/serialization of all
    common types, see eh, lws_ser_wu16be() in include/libwebsockets/lws-misc.h
  * NEW: lws_tls_client_vhost_extra_cert_mem() api allows attaching extra certs
    to a client vhost from DER in memory
  * NEW: lws_system: generic blobs support passing auth tokens, per-connection
    client certs etc from platform into lws
  * NEW: public helpers to consume and produce ipv4/6 addresses in a clean way,
    along with lws_sockaddr46 type now public.  See eg, lws_sockaddr46-based
    lws_sa46_parse_numeric_address(), lws_write_numeric_address()
    in include/libwebsockets/lws-network-helper.h
  * Improved client redirect handling, h2 compatibility
  * NEW: lwsac: additional features for constant folding support (strings that
    already are in the lwsac can be pointed to without copying again), backfill
    (look for gaps in previous chunks that could take a new use size), and
    lwsac_extend() so last use() can attempt to use more unallocated chunk space
  * NEW: lws_humanize: apis for reporting scalar quanties like 1234 as "1.234KB"
    with the scaled symbol strings passed in by caller
  * NEW: freertos: support lws_cancel_service() by using UDP pair bound to lo,
    since it doesn't have logical pipes
  * NEW: "esp32" plat, which implemented freertos plat compatibility on esp32, is
    renamed to "freertos" plat, targeting esp32 and other freertos platforms
  * NEW: base64 has an additional api supporting stateful decode, where the input
    is not all in the same place at the same time and can be processed
  * NEW: lws ws proxy: support RFC8441
  - NEW: lws_spawn_piped apis: generic support for vforking a process with child
    wsis attached to its stdin, stdout and stderr via pipes.  When processes are
    reaped, a specified callback is triggered.  Currently Linux + OSX.
  * NEW: lws_fsmount apis: Linux-only overlayfs mount and unmount management for
    aggregating read-only layers with disposable, changeable upper layer fs
  * Improvements for RTOS / small build case bring the footprint of lws v4 below
    that of v3.1 on ARM 
  * lws_tokenize: flag specifying # should mark rest of line as comment
  * NEW: minimal example for integrating libasound / alsa via raw file
  * lws_struct: sqlite and json / lejp translation now usable

Sat Dec 21 16:16:50 UTC 2019 - Martin Hauke <>

- Update to version 3.2.1
  * This is the last planned release under LGPLv2+SLE.  It's not planned to be
    maintained like previous releases, please switch to master for the latest
    stuff or continue to use v3.1-stable until the next release under the
    new MIT license.
  * NEW: completely refactored scheduler with a unified, sorted us-resolution
    linked-list implementation.  All polled checks like timeout are migrated
    to use the new timers, which also work on the event lib implementations.
    Faster operation, us-resolution timeouts and generic scheduled callbacks
    from the event loop.
  * NEW: lws_dsh specialized buffer memory allocator that can borrow space
    from other cooperating buffers on the same list.
  * NEW: lws_sequencer allows managing multi-connection processes and
  * NEW: memory buffer cert support
  * NEW: LWS_WITH_NETWORK in CMake... can be configured without any network-
    related code at all
  * NEW: JOSE / JWK / JWS / JWE support, for all common ciphers and algs,
    works on OpenSSL and mbedtls backends
  * NEW: gencrypto now has genaes and genec in addition to genrsa, works
    on OpenSSL and mbedtls backends
  * NEW: raw_proxy role
  * NEW: Basic Auth works on ws connections
    LWS_WITH_GENAES have all been removed and combined into LWS_WITH_GENCRYPTO
  * CHANGE: REMOVED: LWS_WITH_JWS, LWS_WITH_JWE have been removed and combined
    into LWS_WITH_JOSE
- Update to version 3.1.0
  * CHANGE: REMOVED: lws_client_connect() and lws_client_connect_extended()
    compatibility apis for lws_client_connect_via_info() have been marked as
    deprecated for several versions and are now removed.  Use
    lws_client_connect_via_info() directly instead.
      - LWS_WITH_HTTP2:         now defaults ON
  * CHANGE: Minimal examples updated to use Content Security Policy best
    practices, using
    option flag and disabling of inline style and scripts.  A side-effect of
    this is that buffers used to marshal headers have to be prepared to take
    more content than previously... LWS_RECOMMENDED_MIN_HEADER_SPACE (2048
    currently) is available for user (and internal) use to logically tie the
    buffer size to this usecase (and follow future increases).
  * NEW: lws threadpool - lightweight pool of pthreads integrated to lws wsi, with
    all synchronization to event loop handled internally, queue for excess tasks
    Cmake config: `-DLWS_WITH_THREADPOOL=1`
  * NEW: libdbus support integrated on lws event loop
    Cmake config: `-DLWS_ROLE_DBUS=1`
  * NEW: lws allocated chunks (lwsac) - helpers for optimized mass allocation of small
    objects inside a few larger malloc chunks... if you need to allocate a lot of
    inter-related structs for a limited time, this removes per-struct allocation
    library overhead completely and removes the need for any destruction handling
    Cmake Config: `-DLWS_WITH_LWSAC=1`
  * NEW: lws tokenizer - helper api for robustly tokenizing your own strings without
    allocating or adding complexity.  Configurable by flags for common delimiter
    sets and comma-separated-lists in the tokenizer.  Detects and reports syntax
  * NEW: lws full-text search - optimized trie generation, serialization,
    autocomplete suggestion generation and instant global search support extensible
    to huge corpuses of UTF-8 text while remaining super lightweight on resources.
    Cmake config: `-DLWS_WITH_FTS=1 -DLWS_WITH_LWSAC=1`
  * NEW: gzip + brotli http server-side compression - h1 and h2 automatic advertising
    of server compression and application to files with mimetypes "text/*",
    "application/javascript" and "image/svg.xml".
  * NEW: managed disk cache - API for managing a directory containing cached files
    with hashed names, and automatic deletion of LRU files once the cache is
    above a given limit.
    Cmake config: `-DLWS_WITH_DISKCACHE=1`
  * NEW: http reverse proxy - lws mounts support proxying h1 or h2 requests to
    a local or remote IP, or unix domain socket over h1.  This allows microservice
    type architectures where parts of the common URL space are actually handled
    by external processes which may be remote or on the same machine.
    [lws gitohashi serving]( is handled this way.
    CMake config: `-DLWS_WITH_HTTP_PROXY=1`
  * NEW: lws_buflist - internally several types of ad-hoc malloc'd buffer have
    been replaced by a new, exported api `struct lws_buflist`.  This allows
    multiple buffers to be chained and drawn down in strict FIFO order.
  * NEW: In the case of h1 upgrade, the connection header is checked to contain
    also causes the Host: header to be confirmed to match the vhost name and
    listen port.
  * NEW: If no 404 redirect for `lws_return_http_status()` is specified for the vhost,
    the status page produced will try to bring in a stylesheet `/error.css`.  This allows
    you to produce styled 404 or other error pages with logos, graphics etc.  See for an example of what you can do with it.

Mon May  7 14:50:48 UTC 2018 -

- Update to version 3.0.0
  * CHANGE: Clients used to call LWS_CALLBACK_CLOSED same as servers...
    LWS_CALLBACK_CLIENT_CLOSED has been introduced and is called for clients
  * CHANGE: LWS_CALLBACK_CLIENT_CONNECTION_ERROR used to only be directed at
    protocols[0].  However in many cases, the protocol to bind to was provided
    at client connection info time and the wsi bound accordingly.  In those
    cases, CONNECTION_ERROR is directed at the bound protocol, not protcols[0]
    any more.
  * CHANGE: CMAKE: the following cmake defaults have changed with this version:
      - LWS_WITH_ZIP_FOPS:      now defaults OFF
      - LWS_WITH_RANGES:        now defaults OFF
      - LWS_WITH_ZLIB:          now defaults OFF
      - LWS_WITHOUT_EXTENSIONS: now defaults ON
  * CHANGE: REMOVED: lws_alloc_vfs_file() (read a file to malloc buffer)
  * CHANGE: REMOVED: lws_read() (no longer useful outside of lws internals)
  * CHANGE: REMOVED: ESP8266... ESP32 is now within the same price range and much
    more performant
  * CHANGE: soname bump... don't forget to `ldconfig`
  * NEW: all event libraries support "foreign" loop integration where lws itself
    if just a temporary user of the loop unrelated to the actual loop lifecycle.
    See `minimal-http-server-eventlib-foreign` for example code demonstrating
    this for all the event libraries.
    Internal loop in lws is also supported and demonstrated by
  * NEW: ws-over-h2 support.  This is a new RFC-on-the-way supported by Chrome
    and shortly firefox that allows ws connections to be multiplexed back to the
    server on the same tcp + tls wrapper h2 connection that the html and scripts
    came in on.  This is hugely faster that discrete connections.
  * NEW: UDP socket adoption and related event callbacks
  * NEW: Multi-client connection binding, queuing and pipelining support.
    Lws detects multiple client connections to the same server and port, and
    optimizes how it handles them according to the server type and provided
    flags.  For http/1.0, all occur with individual parallel connections.  For
    http/1.1, you can enable keepalive pipelining, so the connections occur
    sequentially on a single network connection.  For http/2, they all occur
    as parallel streams within a single h2 network connection.
    See minimal-http-client-multi for example code.
  * NEW: High resolution timer API for wsi, get a callback on your wsi with
    LWS_CALLBACK_TIMER, set and reset the timer with lws_set_timer_usecs(wsi, us)
    Actual resolution depends on event backend.  Works with all backends, poll,
    libuv, libevent, and libev.
  * NEW: Protocols can arrange vhost-protocol instance specific callbacks with
    second resolution using `lws_timed_callback_vh_protocol()`
  * NEW: ACME client plugin for self-service TLS certificates
  * NEW: RFC7517 JSON Web Keys RFC7638 JWK thumbprint, and RFC7515 JSON Web
     signatures support
  * NEW: lws_cancel_service() now provides a generic way to synchronize events
    from other threads, which appear as a LWS_CALLBACK_EVENT_WAIT_CANCELLED
    callback on all protocols.  This is compatible with all the event libraries.
  * NEW: support BSD poll() where changes to the poll wait while waiting are
  * NEW: Introduce generic hash, hmac and RSA apis that operate the same
    regardless of OpenSSL or mbedTLS tls backend
  * NEW: Introduce X509 element query api that works the same regardless of
    OpenSSL or mbedTLS tls backend
  * NEW: Introduce over 30 "minimal examples" in ./minimal-examples... these
    replace most of the old test servers
     + test-echo -> minimal-ws-server-echo and minimal-ws-client-echo
     + test-server-libuv / -libevent / -libev ->
          minimal-https-server-eventlib / -eventlib-foreign / -eventlib-demos
     + test-server-v2.0 -> folded into all the minimal servers
     + test-server direct http serving -> minimal-http-server-dynamic
    The minimal examples allow individual standalone build using their own
    small CMakeLists.txt.
  * NEW: lws now detects any back-to-back writes that did not go through the
    event loop inbetween and reports them.  This will flag any possibility of
    failure rather than wait until the problem happens.
  * NEW: CMake has LWS_WITH_DISTRO_RECOMMENDED to select features that are
    appropriate for distros
  * NEW: Optional vhost URL `error_document_404` if given causes a redirect there
    instead of serve the default 404 page.
  * NEW: lws_strncpy() wrapper guarantees NUL in copied string even if it was
    truncated to fit.
  * NEW: for client connections, local protocol binding name can be separated
    from the ws subprotocol name if needed, using .local_protocol_name
  * NEW: Automatic detection of time discontiguities
  * NEW: Applies TCP_USER_TIMEOUT for Linux tcp keepalive where available
  * QA: 1600 tests run on each commit in Travis CI, including almost all
    Autobahn in client and server mode, various h2load tests, h2spec,
    the minimal example selftests and others.
  * QA: fix small warnings introduced on gcc8.x (eg, Fedora 28)
  * QA: Add most of -Wextra on gcc (-Wsign-compare, -Wignored-qualifiers,
    -Wtype-limits, -Wuninitialized)
  * QA: clean out warnings on windows
  * QA: pass all 146 h2spec tests now on strict
  * QA: introduce 35 selftests that operate different minimal examples against
    each other and confirm the results.
  * QA: LWS_WITH_MINIMAL_EXAMPLES allows mass build of all relevant minimal-
    examples with the LWS build, for CI and to make all the example binaries
    available from the lws build dir ./bin
  * REFACTOR: the lws source directory layout in ./lib has been radically
    improved, and there are now files in selected subdirs with extra
    documentation of interest to people working on lws itself.
  * REFACTOR: pipelined transactions return to the event loop before starting the
    next part.
  * REFACTOR: TLS: replace all TLS library constants with generic LWS ones and
    adapt all the TLS library code to translate to these common ones.
    Isolated all the tls-related private stuff in `./lib/tls/private.h`, and all
    the mbedTLS stuff in `./lib/tls/mbedtls` + openSSL stuff in
  * REFACTOR: the various kinds of wsi possible with lws have been extracted
    from the main code and isolated into "roles" in `./lib/roles` which
    communicate with the core code via an ops struct.  Everything related to
    ah is migrated to the http role.
    wsi modes are eliminated and replaced by the ops pointer for the role the
    wsi is performing.  Generic states for wsi are available to control the
    lifecycle using core code.
    Adding new "roles" is now much easier with the changes and ops struct to
    plug into.
  * REFACTOR: reduce four different kinds of buffer management in lws into a
    generic scatter-gather struct lws_buflist.
  * REFACTOR: close notifications go through event loop

Thu Mar  8 07:39:21 UTC 2018 -

- Update to version 2.4.2
  * Minor fixes

Tue Nov  7 16:01:34 UTC 2017 -

- Update to version 2.4.1
  * Minor fixes

Fri Oct 20 13:44:20 UTC 2017 -

- Update to version 2.4.0
  * HTTP/2 server support is now mature and usable!  LWS_WITH_HTTP2=1 enables it.
    Uses ALPN to serve HTTP/2, HTTP/1 and ws[s] connections all from the same
    listen port seamlessly.  (Requires ALPN-capable OpenSSL 1.1 or mbedTLS).
  * LWS_WITH_MBEDTLS=1 at CMake now builds and works against mbedTLS instead of
    OpenSSL.  Most things work identically, although on common targets where
    OpenSSL has acceleration, mbedTLS is many times slower in operation.  However
    it is a lot smaller codewise.
  * Generic hash apis introduced that work the same on mbedTLS or OpenSSL backend
  * LWS_WITH_PEER_LIMITS tracks IPs across all vhosts and allows restrictions on
    both the number of simultaneous connections and wsi in use for any single IP
  * lws_ring apis provide a generic single- or multi-tail ringbuffer... mirror
    protocol now uses this.  Features include ring elements may be sized to fit
    structs in the ringbuffer, callback when no tail any longer needs an element
    and it can be deleted, and zerocopy options to write new members directly
    into the ringbuffer, and use the ringbuffer element by address too.
  * abstract ssh 2 server plugin included, with both plugin and standalone
    demos provided.  You can bind the plugin to a vhost and also serve full-
    strength ssh from the vhost.  IO from the ssh server is controlled by an
    "ops" struct of callbacks for tx, rx, auth etc.
  * Many fixes, cleanups, source refactors and other improvements.
- rebase patch:
  * libwebsockets-norpmtools.patch

Sat Oct 14 21:41:38 UTC 2017 -

- Do not build static libraries and test-apps

Mon Oct  2 11:08:35 UTC 2017 -

- Extend description to say what libwebsockets really does.
  Replace -exec rm by simpler -delete.
- Move API documentation to libwebsockets-devel.

Mon Oct  2 10:47:39 UTC 2017 -

- Update to version 2.3.0
  * ESP32 OpenSSL support for client and server
  * ESP32 4 x WLAN credential slots may be configured
  * Libevent event loop support
  * SOCKS5 proxy support
  * lws_meta protocol for websocket connection multiplexing
  * lws_vhost_destroy() added... allows dynamic removal of listening
    vhosts.  Vhosts with shared listen sockets adopt the listen socket
    automatically if the owner is destroyed.
  * IPv6 on Windows
  * Improved CGI handling suitable for general CGI scripting, eg, PHP
  * Convert even the "old style" test servers to use statically included
    plugin sources
  * LWS_WITH_STATS cmake option dumps resource usage and timing information
    every few seconds to debug log, including latency information about
    delay from asking for writeable callback to getting it
  * Large (> 2GB) files may be served
  * LWS_WITH_HTTP_PROXY Cmake option adds proxying mounts
  * Workaround for libev build by disabling -Werror on the test app
  * HTTP2 support disabled since no way to serve websockets on it

Sun Aug 20 19:40:51 UTC 2017 -

- Add patch that disables spec-file creation and building rpm files
  within the CMake build system
  * libwebsockets-norpmtools.patch

Tue May 30 18:20:44 UTC 2017 -

- Fix Source URL
- Fix Group
- Trim description
- Rename %soname to %sover to better reflect its use
- Complete specfile overhaul
- Update to version 2.2.1

Wed Sep 14 07:15:32 UTC 2016 -

- Update to version 1.7.8

Thu May 21 09:54:01 UTC 2015 -

- Updated to version 1.4

Tue Nov 18 19:53:15 UTC 2014 -

- Updating to latest version. 

Mon Mar 17 11:54:11 UTC 2014 -

- created package (version 1.23)
openSUSE Build Service is sponsored by