diff --git a/CMakeLists.txt b/CMakeLists.txt index c59bc990..b2609694 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,13 +135,13 @@ project(libwebsockets C) set(PACKAGE "libwebsockets") set(CPACK_PACKAGE_NAME "${PACKAGE}") -set(CPACK_PACKAGE_VERSION_MAJOR "2") -set(CPACK_PACKAGE_VERSION_MINOR "4") +set(CPACK_PACKAGE_VERSION_MAJOR "3") +set(CPACK_PACKAGE_VERSION_MINOR "0") set(CPACK_PACKAGE_VERSION_PATCH "0") set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") set(CPACK_PACKAGE_VENDOR "andy@warmcat.com") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PACKAGE} ${PACKAGE_VERSION}") -set(SOVERSION "12") +set(SOVERSION "13") if(NOT CPACK_GENERATOR) if(UNIX) set(CPACK_GENERATOR "TGZ") diff --git a/changelog b/changelog index e98e6c15..422813b1 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,175 @@ Changelog --------- +v3.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 + now. + + - 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 + `minimal-http-server-eventlib`. + + - 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 + undone. + + - 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, attack.sh + 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 README.md 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 + `./lib/tls/openssl` + + - 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 + + v2.4.0 ====== diff --git a/scripts/libwebsockets.spec b/scripts/libwebsockets.spec index 7ff05a56..8041c753 100644 --- a/scripts/libwebsockets.spec +++ b/scripts/libwebsockets.spec @@ -1,5 +1,5 @@ Name: libwebsockets -Version: 2.4.0 +Version: 3.0.0 Release: 1%{?dist} Summary: Websocket Server and Client Library @@ -48,20 +48,10 @@ rm -rf $RPM_BUILD_ROOT %defattr(-,root,root,-) %attr(755,root,root) /usr/bin/libwebsockets-test-server -/usr/bin/libwebsockets-test-server-extpoll /usr/bin/libwebsockets-test-client -/usr/bin/libwebsockets-test-ping -/usr/bin/libwebsockets-test-echo -/usr/bin/libwebsockets-test-fraggle -/usr/bin/libwebsockets-test-fuzxy -/usr/bin/libwebsockets-test-lejp -/usr/bin/libwebsockets-test-server-pthreads -/usr/bin/libwebsockets-test-server-libev -/usr/bin/libwebsockets-test-server-libuv -/usr/bin/libwebsockets-test-server-v2.0 /usr/bin/libwebsockets-test-sshd /usr/bin/lwsws -/%{_libdir}/libwebsockets.so.12 +/%{_libdir}/libwebsockets.so.13 /%{_libdir}/libwebsockets.so /%{_libdir}/cmake/libwebsockets/LibwebsocketsConfig.cmake /%{_libdir}/cmake/libwebsockets/LibwebsocketsConfigVersion.cmake @@ -78,6 +68,9 @@ rm -rf $RPM_BUILD_ROOT /%{_libdir}/pkgconfig/libwebsockets_static.pc %changelog +* Mon May 4 2018 Andy Green 3.0.0-1 +- MAJOR SONAMEBUMP APICHANGES Upstream 3.0.0 release + * Mon Oct 16 2017 Andy Green 2.4.0-1 - MAJOR SONAMEBUMP APICHANGES Upstream 2.4.0 release