Revision history for EV::Websockets

0.10    2026-07-22
        - Plain HTTP to a listener is answered 426 and closed (it used to hang)
        - listen() croaks on ssl_cert without ssl_key (it used to serve plaintext)
        - Validate close codes, option values, URL ports and adopt() handles

0.09    2026-06-29
        - Fixed permessage-deflate messages split across multiple on_message
          callbacks; compressed frames are reassembled into one message

0.08    2026-06-01
        - Fixed idle connections stalling the EV loop
        - Fixed crash when recycling TLS contexts
        - Bug fixes, more tests and examples

0.06    2026-05-02
        - Fixed recursive Context::DESTROY use-after-free
        - Proxy env var: accept any scheme prefix (was http/https only)
        - close() no-op while already closing; send/send_binary croak mid-fragment
        - POD polish; cleanup; coverage tests

0.05    2026-04-04
        - Fixed test timing issues on slow cpantesters machines
        - Fixed repository URL in META

0.04    2026-04-01
        - ssl_init option on Context->new() to control OpenSSL global init

0.03    2026-04-01
        - adopt() auto-creates server vhost (no dummy listen() needed)
        - Fixed conn->wsi not set during on_connect for adopted connections
        - Fixed premature close dropping unsent data on choked pipe
        - Fixed IPv6 Host header missing brackets (RFC 7230)
        - Fixed negative fd guard in fd_watcher functions
        - Fixed handshake_headers_map leak on aborted handshake
        - New examples: chat_server, proxy, backpressure

0.02    2026-03-31
        - on_handshake: server callback for per-connection response headers
          and connection rejection (403)
        - send_fragment: streaming fragmented writes (NO_FIN/CONTINUATION)
        - stash: per-connection metadata hashref
        - on_drain: callback when send queue empties
        - send_queue_size: query pending send bytes
        - connect_timeout: deadline for WebSocket handshake
        - Server protocol parameter on listen()
        - Broader client response header capture (Sec-WebSocket-Protocol,
          Location, WWW-Authenticate)
        - Server-side X-Forwarded-For in on_connect headers
        - O(1) fd watcher lookup (flat array indexed by fd)
        - Single-alloc send queue nodes (FAM)
        - adopt() holds IO handle reference (prevents premature fd closure)
        - TLS listener support (LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT)

0.01    2026-02-20
        - Initial release.
