Skip to content

Releases: hivesolutions/netius

1.24.0

14 Feb 00:05
1ce4c5b

Choose a tag to compare

Added

  • ConnectionCompat mixin in mixin.py extracting backward-compatible Connection delegation methods (socket, renable, is_restored(), enable_read(), etc.) from StreamProtocol
  • ConnectionCompat applied to TransportStream so it exposes is_restored() and other throttle-related methods
  • Throttle unit tests for proxy server covering both Connection and TransportStream paths

Changed

  • StreamProtocol now inherits from ConnectionCompat mixin instead of defining delegation methods inline
  • _throttle() in ProxyServer and SocksServer resolves TransportStream to its _protocol for conn_map key lookup

Fixed

  • AttributeError: 'TransportStream' object has no attribute 'is_restored' in proxy throttle callbacks when using protocol-based architecture

1.23.2

13 Feb 23:05
485615e

Choose a tag to compare

Added

  • POST, PUT and DELETE integration tests for ReverseProxyIntegrationTest verifying request body forwarding through the proxy

Fixed

  • Proxy POST/PUT body data silently dropped when backend connection not yet established - StreamProtocol.send() now buffers data via _delay_send() instead of returning 0 when transport is None
  • HTTPClientProtocol.connection_made() now flushes buffered data after sending request headers, ensuring proxy-forwarded body chunks reach the backend
  • DatagramProtocol.send_to() aligned with StreamProtocol.send() guards - added is_closed_or_closing() and missing transport checks for consistency

1.23.1

13 Feb 19:42
2e24233

Choose a tag to compare

Fixed

  • ImportError: No module named http on Python 2.7/PyPy - http.client import now uses conditional fallback with skip guard for integration tests

1.23.0

13 Feb 19:33
b720568

Choose a tag to compare

Added

  • address property on StreamProtocol delegating to underlying Connection for backward compatibility with proxy code that accesses protocol.address
  • End-to-end integration tests for ReverseProxyServer exercising the full proxy data flow through a real server with httpbin backend
  • Reverse proxy example (examples/proxy/proxy_reverse.py) showing minimal setup for forwarding requests to a backend

1.22.1

13 Feb 18:56
33d7dd9

Choose a tag to compare

Fixed

  • Protocol close event not firing when _loop is None - delay(finish) ran synchronously inside close_c(), calling destroy()unbind_all() before trigger("close") could fire, leaving stale conn_map entries in the proxy
  • NoneType attribute error on StreamProtocol.send() when transport is already closed - added guard for _transport being None

1.22.0

13 Feb 15:26
f758c74

Choose a tag to compare

Added

  • Base-compatible stub methods on Agent so that Container works with both old (Base) and new (Agent/Protocol) architectures without defensive guards
  • ClientAgent.connect() method with _container_loop support for protocol-based connections to join the container's shared poll
  • Event relay system in ClientAgent._relay_protocol_events() bridging protocol events to client-level observers
  • Container tests (netius.test.base.container) covering setup, event bindings, lifecycle, and cleanup
  • Data flow tests for ReverseProxyServer covering request routing, response relay, error handling, and lifecycle management

Changed

  • Container.apply_base() now sets _container_loop on non-Base objects to enable dual architecture multiplexing
  • HTTPClient.method() uses _container_loop as default loop when available for container integration
  • Proxy throttle methods use self.reads() / self.writes() since connections are owned by the proxy server

Fixed

  • AttributeError when running ConsulProxyServer due to Agent subclasses missing load, unload, ticks, and other Base-expected methods

1.21.0

07 Feb 11:27
a387f4c

Choose a tag to compare

Added

  • conf_override context manager for temporarily overriding configuration values
  • ConsulProxyServer for Consul-based service discovery in the reverse proxy

Fixed

  • SSLError propagation in on_write breaking the main loop during SSL handshake failures