Skip to content

Latest commit

 

History

History
403 lines (287 loc) · 13.2 KB

CHANGELOG.md

File metadata and controls

403 lines (287 loc) · 13.2 KB

Pushpin Changelog

v. 1.40.1 (2024-08-13)

  • Fix build with recent rustc.

v. 1.40.0 (2024-07-17)

  • Restore support for receiving chunked responses from backends.
  • For early errors such as malformed requests, respond instead of disconnecting.
  • Rename Condure to connmgr.
  • Fix crash under high load.
  • Fix hang when receiving large WebSocket rejections from the backend.

v. 1.39.1 (2024-03-18)

  • Regenerate pushpin.conf.inst post-build to ensure up-to-date configuration.
  • Update legacy runner use revised Qt linking logic, aligning with main branch improvements.

v. 1.39.0 (2024-03-14)

  • Add support for multiple proxy worker threads.
  • New config option: workers (under [proxy]).
  • Fix memory leak when proxying requests.
  • Various build system fixes/improvements.
  • Use Boost for signals & slots to reduce dependence on Qt's event loop.

v. 1.38.0 (2024-01-08)

  • Publish refresh action for triggering WebSocket-over-HTTP requests.
  • Ability to read signing secrets from files.
  • Move Condure into Pushpin and name the program pushpin-condure.
  • Fix crash when writing partial uncompressed WebSocket frame.
  • Fix WebSocket proxying flow control.
  • Support receiving non-chunked responses of indefinite length.
  • Qt 6 compatibility.
  • Remove configure script. Configure via environment variables instead.

v. 1.37.0 (2023-06-29)

  • Ability to use Condure instead of Zurl for outgoing connections.
  • Ability to set mode/user/group when listening on Unix socket.
  • WebSocket performance optimizations.
  • New config options: allow_compression, stats_connection_send, cdn_loop.
  • Relicense to Apache 2.0.

v. 1.36.0 (2022-11-14)

  • Ability to accept client connections via IPv6.
  • Ability to sign requests using EC or RSA public keys.
  • Include bytes/messages in report stats.

v. 1.35.0 (2022-03-11)

  • Add support for Prometheus metrics.
  • Ability to listen on a Unix socket for client connections.
  • New config options: prometheus_port, prometheus_prefix.
  • New config option: local_ports.
  • New config option: accept_pushpin_route.
  • New route condition option: no_grip.
  • Use the route of the initial request for retries and link requests.
  • pushpin-publish: fix sending hint action for http-response format.

v. 1.34.0 (2021-11-30)

  • New config option: message_wait.
  • Publish command for publishing via command socket.

v. 1.33.1 (2021-08-09)

  • Build system fixes.

v. 1.33.0 (2021-08-08)

  • Performance optimizations.
  • New config option: sig_iss.

v. 1.32.2 (2021-06-09)

  • Fix publishing to SockJS WebSocket connections.

v. 1.32.1 (2021-05-13)

  • Build system fixes.

v. 1.32.0 (2021-05-11)

  • pushpin-publish: support sending via HTTP, and do this by default.
  • pushpin-publish: support authentication.
  • pushpin-publish: use GRIP_URL environment variable if present.
  • Add Rust code to the build process.

v. 1.31.0 (2020-11-06)

  • Use Condure instead of Mongrel2, by default.
  • Ability to refresh WebSocket-over-HTTP sessions by channel.
  • Fix crash when sending delayed WebSocket messages.

v. 1.30.0 (2020-07-29)

  • Optional support for Condure instead of Mongrel2.
  • ZHTTP compatibility fixes.

v. 1.29.0 (2020-07-15)

  • Fix crash when parsing Accept header received on control port.
  • Fix crash when response hold times out while pausing.
  • Fix handling of hints in response mode.
  • Fix handling of ZeroMQ errors, including EINTR.
  • ZHTTP compatibility fixes.

v. 1.28.0 (2020-04-08)

  • New route target option: one_event.

v. 1.27.0 (2020-03-10)

  • WebSocket: ability to publish close reason.
  • WebSocket: proxy the content of ping and pong frames.

v. 1.26.0 (2019-12-11)

  • Respond with status 200 on HTTP control port root path.

v. 1.25.0 (2019-11-20)

  • Set the Mongrel2 log level and capture debug output.
  • Ability to set different log levels per subprocess.

v. 1.24.0 (2019-08-06)

  • runner: capture Mongrel2 logs when --merge-output is used.

v. 1.23.0 (2019-07-03)

  • Support log levels 0 and 1.
  • Don't write to Mongrel2 access log for log levels < 2.
  • Support JSON framing on the input PULL and SUB sockets.
  • New config option: push_in_sub_specs.
  • New config option: push_in_sub_connect.

v. 1.22.0 (2019-06-17)

  • New filter: var-subst.
  • Support content-filters field in ws-message format.

v. 1.21.0 (2019-05-01)

  • GRIP keep-alive modes: idle (default) and interval.
  • Don't put GRIP headers in Access-Control-Expose-Headers.

v. 1.20.3 (2019-04-08)

  • Fix Grip-Last values when route prefix is used.

v. 1.20.2 (2019-03-25)

  • WebSocket-Over-HTTP: fix mem leak when clients disconnect during close.

v. 1.20.1 (2019-02-20)

  • WebSocket-Over-HTTP: don't forward Content-Length header.

v. 1.20.0 (2019-02-19)

  • WebSocket-Over-HTTP: break up response messages to fit session buffers.
  • New config option: stats_format.
  • New config option: client_buffer_size.

v. 1.19.1 (2019-01-10)

  • WebSocket: fix crash when receiving frames after close frame.
  • WebSocket: include reason and headers in rejection responses.

v. 1.19.0 (2018-12-18)

  • WebSocket: support close reasons.

v. 1.18.0 (2018-08-20)

  • WebSocket-Over-HTTP: update headers (mainly Grip-Sig) for each request.
  • WebSocket-Over-HTTP: properly report errors and handle target failover.
  • WebSocket: support debug responses.
  • Option to not send non-standard X-Forwarded-Protocol header.
  • Increase default request buffer size to 8k.
  • Make http_port optional.
  • runner: remove mongrel2 pid file before starting.
  • runner: return non-zero status code if failing due to subprocess error.
  • runner: prevent SIGINT from being copied to subprocesses.

v. 1.17.2 (2018-01-11)

  • Fix close actions with HTTP streaming and WebSockets.

v. 1.17.1 (2017-12-12)

  • Fix compilation with Qt 5.10.

v. 1.17.0 (2017-11-06)

  • De-dup published messages based on recently seen IDs (default 60s).
  • Limit number of subscriptions per connection (default 20).
  • Ensure filters update after following next links.
  • Support content-filters field in http-stream and http-response formats.
  • Include subscribers field in subscription stats.
  • Include duration field in report stats.
  • New config options: connection_subscription_max, subscription_linger.
  • New config options: stats_connection_ttl, stats_subscription_ttl.
  • New config option: stats_report_interval.

v. 1.16.0 (2017-07-14)

  • Reliable streaming fixes.
  • SockJS: XHR transport fixes.
  • WebSocket-Over-HTTP: more fixes to ensure DISCONNECT events get sent.
  • Fix routes file change detection when file is replaced.
  • Set Grip-Last headers when retrying long-polling request.
  • Enable client-side TCP keep-alives.
  • Stats: report logical IP address rather than physical.
  • Published items can include no-seq flag to bypass sequencing buffer.
  • New config options: log_from, log_user_agent.
  • New filters: skip-users, build-id, require-sub.
  • Add randomness to stream keep alives.
  • pushpin-publish: --meta option.
  • pushpin-publish: --no-seq option.
  • Announce more features using Grip-Feature request header.
  • Fix GRIP session detection.
  • sub target parameter works for both HTTP and WebSocket, forbids unsub.
  • Packet logging uses new format that only trims content, not headers.

v. 1.15.0 (2017-01-22)

  • Publish hint action for triggering recovery requests.
  • Recover command for triggering recovery requests.
  • Refresh command for triggering WebSocket-Over-HTTP requests.
  • Improve reliability of long-polling when previous ID is used.
  • WebSocket-Over-HTTP: ensure DISCONNECT events get sent.
  • WebSocket: new control messages: send-delayed, flush-delayed.
  • WebSocket: break large published messages into frames.
  • Allow unknown previous ID for first message to channel.
  • Forget previous ID when channel has no subscribers.
  • Reduce timeout of out-of-order messages to 5 seconds.
  • pushpin-publish: --hint option
  • pushpin-publish: --no-eol option
  • pushpin-publish: ability to use file source (@filename)
  • New config option: message_block_size
  • Remove docs files from repository. Content moved to pushpin.org.

v. 1.14.0 (2016-11-15)

  • Reliable HTTP streaming (stream hold + "GRIP Next").
  • Process messages in order if received out of order.

v. 1.13.1 (2016-10-27)

  • Fix crash when publishing to a long-polling client that is closing.
  • More conservative message_rate default.

v. 1.13.0 (2016-10-22)

  • Optimizations for higher concurrent connections.
  • New config options: message_rate and message_hwm.
  • New stats message: report.
  • Handle next links internally if relative.
  • Log accepted requests as "accept", not "hold".
  • Log handler-initiated requests in handler, not proxy.
  • Fix memory leaks.
  • Send anonymous usage statistics to Fanout.

v. 1.12.0 (2016-09-03)

  • "GRIP Next" feature for streaming many responses as a single response.
  • header route parameter for sending custom headers when proxying.
  • trust_connect_host target parameter for trusting cert of connect host.
  • SockJS: fix bug with not receiving messages from client.
  • More correct handling of Host header.
  • Set X-Forwarded-Proto in addition to X-Forwarded-Protocol.
  • Various bugfixes.

v. 1.11.0 (2016-07-11)

  • Debug mode, to get more information about errors while proxying.
  • Command line option to log subprocess output: --merge-output.
  • Command line option to log merged output to file: --logfile.
  • Command line options for quick config: --port, --route.
  • Command line option to easily run multiple instances: --id.
  • Rewrite runner from Python to C++.
  • Don't relay Content-Encoding (fixes compressed long-polling timeouts).
  • Fixes to log output.

v. 1.10.1 (2016-05-30)

  • Fix SockJS crash.
  • Fix bug that logged successful requests as errors.

v. 1.10.0 (2016-05-25)

  • Streaming: initial response now has no size limit.
  • WebSocket-Over-HTTP: retry requests to the origin server.
  • WebSocket: ability to disconnect clients by publishing a close action.
  • WebSocket: ability to publish ping/pong frames.
  • WebSocket: keep-alives.
  • New route target "test", for testing without an origin server.
  • Fix publishing of large payloads through HTTP control port.
  • New config option: log_level.
  • Ability to set bind interface in config (use addr:port form).
  • Grip-Status header, for setting alternate response code and reason.

v. 1.9.0 (2016-04-14)

  • More practical logging. Non-verbose output more informative.
  • New config option: accept_x_forwarded_protocol.
  • Support JSON responses in HTTP control endpoint.
  • More accurate WebSocket activity counting.

v. 1.8.0 (2016-02-22)

  • Fix issue proxying large responses.
  • Refactor README.
  • Port server code to Qt 5.
  • Rewrite pushpin-publish tool from Python to C++.
  • Move internal.conf into LIBDIR.

v. 1.7.0 (2016-01-10)

  • Rewrite pushpin-handler from Python to C++.
  • Initial support for subscription filters and skip-self filter.
  • Fix sending of large responses when flow control not used.
  • Speed up shutdown.
  • Pass WebSocket GRIP logic upstream if GRIP proxy detected.
  • Don't forward WebSocket-Over-HTTP requests unless client trusted.
  • WebSocket-Over-HTTP: strip private headers from responses.
  • Long-polling: finish support for JSON patch.
  • m2adapter: dynamically enable/disable control port as needed.
  • publish tool: add id, prev-id, patch, and sender options.
  • Add monitorsubsock tool for monitoring SUB socket.
  • Refactor docs/grip-protocol.md.

v. 1.6.0 (2015-09-24)

  • Fix rare assert when publishing to a WebSocket.
  • Remove libdir from pushpin.conf.
  • Mongrel2: use download flow control.
  • Mongrel2: enable relaxed parsing.
  • Auto Cross-Origin: include Access-Control-Max-Age.
  • Throw error if can't create runtime directories on startup.
  • Various cleanups.

v. 1.5.0 (2015-07-23)

  • replace_beg route parameter.
  • Fixed bug where non-persistent connections were closed before data sent.
  • Accept invalid characters in request URIs and URL-encode them.

v. 1.4.0 (2015-07-16)

  • Improved handling of streamed input while proxying.
  • WebSocket over_http mode: relay error responses rather than 502.
  • Various WebSocket bugfixes.
  • Prefer using sortedcontainers.SortedDict rather than blist.sorteddict.

v. 1.3.3 (2015-07-05)

  • Fix crash on conflict retry introduced in previous version.

v. 1.3.2 (2015-07-05)

  • Better handling of responses with no explicit body (HEAD, 204, 304).
  • Persistent connection fixes.
  • Proxy flow control fixes.
  • WebSocket over_http mode: buffer fragmented messages before sending.

v. 1.3.1 (2015-06-19)

  • Fix http-response conflict recovery.
  • Correctly proxy WebSocket ping and pong frames.
  • Fix WebSocket compatibility with latest Zurl.

v. 1.3.0 (2015-06-03)

  • Many fixes with subscription reporting via stats and SUB socket.
  • Tweaks to enable higher concurrent connection counts.
  • WebSocket over_http mode sends DISCONNECT events.

v. 1.2.0 (2015-05-09)

  • http-stream: close action, keep-alive.
  • Check for new pushpin versions.
  • ZeroMQ endpoint discovery via command socket.
  • pushpin-publish command line tool.

v. 1.1.1 (2015-04-17)

  • Fix auto-cross-origin feature.

v. 1.1.0 (2015-03-08)

  • SUB socket input. SockJS client support.

v. 1.0.0 (2014-09-16)

  • Stable version.