Aiocoap

Latest version: v0.4.9

Safety actively analyzes 630254 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 3

0.4.5

-------------

Behavioral changes
~~~~~~~~~~~~~~~~~~

* RSTs are not sent on unrecognized responses any more unless the received
message was a CON; the previous behavior was violating the specification.

Deprecations
~~~~~~~~~~~~

* UNSUPPORTED_MEDIA_TYPE is now formally deprecated, use
UNSUPPORTED_CONTENT_FORMAT instead.

Minor enhancements
~~~~~~~~~~~~~~~~~~

* Fix tests for Python 3.11.
* Lower log level of "but could not match it to a running exchange" from warning to info.
* Shorten the string representation of message types (to "CON", "ACK" etc.)

0.4.4

-------------

New features
~~~~~~~~~~~~

* Content-Format / Accept option now use a dedicated ContentFormat type.

Applications should be unaffected as the type is still derived from int.

* Non-traditional responses are now experimentally supported by implementing
``.render_to_pipe()`` on a resource.

Deprecations
~~~~~~~~~~~~

* Building custom resources by inheriting from ``interfaces.Resource`` /
``interfaces.ObservableResource`` and implementing ``.render()`` etc. is
deprecated. Instead, inherit from ``resource.Resource`` (recommended), or
implement ``.render_to_pipe()`` (eg. when implementing a proxy).

* numbers.media_type and media_type_rev: Use the ContentFormat type's
constructor and accessors instead.

Tools
~~~~~

* aiocoap-fileserver now has optiojnal write support, and ETag and If-* option
handling.

* aiocoap-client now assembles and displays the Location-* options of
responses.

* aiocoap-rd now has dedicated logging independent of aiocoap's.

* Various small fixes to aiocoap-rd.

* Help and error texts were improved.

Minor enhancements
~~~~~~~~~~~~~~~~~~

* Documentation now uses ``await`` idiom, as it is available even inside the
asyncio REPL.

* The default cut-off for block-wise fragmentation was increased from 1024 to
1124 bytes. This allows OSCORE to use the full inner block-wise size without
inadvertently causing outer fragmentation, while still fitting within the
IPv6 minimum MTU.

* Connection shutdown for TCP and WebSockets has been implemented, they now
send Release messages and wait for the peer to close the connection.

* Type annotations are now used more widely.

* Library shutdown works more cleanly by not relying on the presence of the
async loop.

* OSCORE contexts now only access the disk when necessary.

* OSCORE now supports inner block-wise transfer and observations.

* WebSocket servers can now pick an ephemeral port (when binding to port 0).

* Tasks created by the library are now named for easier debugging.

* Bugs fixed around handling of IP literals in proxies.

Internal refactoring
~~~~~~~~~~~~~~~~~~~~

* Pipes (channels for asynchronously producing resposnes, previously called
PlumbingResponse) are now used also for resource rendering. Block-wise and
observation handling could thus be moved away from the core protocol and into
the resource implementations.

* Exception chaining was started to be reworked into explicit re-raises.

0.4.3

-------------

Compatibility
~~~~~~~~~~~~~

* Fix compatibility with websockets 10.1.

Minor enhancements
~~~~~~~~~~~~~~~~~~

* Failure path fixes.

0.4.2

-------------

New features
~~~~~~~~~~~~

* Experimental support for DTLS server operation (PSK only).

Tools
~~~~~

* aiocoap-client reports responder address if different from requested.
* aiocoap-rd is aligned with draft version -27 (e.g. using .well-known/rd).
* aiocoap-proxy can be registered to an RD.

Compatibility
~~~~~~~~~~~~~

* Group OSCORE updated to -11.
* Fixes to support Python 3.10, including removal of some deprecated idioms and
inconsistent loop handling.

Examples / contrib
~~~~~~~~~~~~~~~~~~

* Demo for Deterministic OSCORE added.

Deprecations
~~~~~~~~~~~~

* util.quote_nonascii
* error.{RequestTimedOut,WaitingForClientTimedOut}
* Direct use of AsyncCLIDaemon from asynchronous contexts (replacement not
available yet).

Minor enhancements
~~~~~~~~~~~~~~~~~~

* Resources can hide themselves from the listing in /.well-known/core.
* RD's built-in proxy handles block-wise better.
* Added __repr__ to TokenManager and MessageManager.
* Pretty printer errs gracefully.
* Failure path fixes.
* Documentation updates.
* Removed distutils dependency.

Internal refactoring
~~~~~~~~~~~~~~~~~~~~

* CI testing now uses pytest.
* dispatch_error now passes on exceptions.
* DTLS client cleaned up.
* Build process now uses the build module.

0.4.1

-------------

* Fix Python version reference to clearly indicate the 3.7 requirement
everywhere.

A Python requirement of ">= 3.6.9" was left over in the previous release's
metadata from earlier intermediate steps that accomodated PyPy's pre-3.7
version.

0.4

-----------

Multicast improvements
~~~~~~~~~~~~~~~~~~~~~~

* Multicast groups are not joined by default any more. Instead, groups and
interfaces on which to join need to be specified explicitly. The previous
mechanism was unreliable, and only joined on one (more or less random)
interface.

* Network interfaces can now be specified in remotes of larger than link-local
scope.

* In udp6, network interface are selected via PKTINFO now. They used to be
selected using the socket address tuple, but that was limited to link-local
addresses, but PKTINFO worked just as well for link-local addresses.

* Remote addresses in udp6 now have a ``netif`` property.

New features
~~~~~~~~~~~~

* The simple6 transport can now indicate the local address when supported by
the platoforrm. This makes it a viable candidate for LwM2M clients as they
often operate using role reversal.

* Servers (including the shipped examples) can now offer OSCORE through the
OSCORE sitewrapper.

Access control is only rudimentary in that the authorization information is
not available in a convenient form yet.

* CoAP over WebSockets is now supported (in client and server role, with and
without TLS). Please note that the default port bound to is not the HTTP
default port but 8683.

* OSCORE group communication is now minimally supported (based on draft version
10). No automated ways of setting up a context are provided yet.

This includes highly experimental support for deterministic requests.

* DTLS: Terminating connections are now handled correctly, and shut down when
unused.

The associated refactoring also reduces the resource usage of DTLS
connections.

Tools updates
~~~~~~~~~~~~~

* aiocoap-client: New options to

* set initial Block1 size (``--payload-initial-szx``), and to
* elide the Uri-Host option from requests to named hosts.

* aiocoap-client: CBOR input now accepts Python literals or JSON automatically,
and can thus produce numeric keys and byte strings.

* aiocoap-client: Preprocessed CBOR output now works for any CBOR-based content
format.

* resource-directory: Updated to draft -25.

* resource-directory: Compatibility mode for LwM2M added.

* resource-directory: Proxying extension implemented. With this, and RD can be
configured to allow access to endpoints behind a firewalls or NAT.

* Example server: Add /whoami resource.

Dependencies
~~~~~~~~~~~~

* The minimum required Python version is now 3.7.
* The cbor library dependency was replaced with the cbor2 library.
* The dependency on the hkdf library was removed.
* The ge25519 library dependency was added to perform key conversion steps necessary for Group OSCORE.

Portability
~~~~~~~~~~~

* Several small adjustments were made to accomodate execution on Windows.
* FreeBSD was added to the list of supported systems (without any need for changes).

Fixes possibly breaking applications
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Some cases of OSError were previously raised in responses. Those are now all
expressed as an aiocoap.error.NetworkError, so that an application only need
to catch aiocoap.error.Error for anything that's expected to go wrong.

The original error cause is available in a chained exception.

* Responses are not deduplicated any more; as a result, less state is kept in
the library.

As a result, separate responses whose ACKs get lost produce an RST the second
time the CON comes. This changes nothing about the client-side handling
(which is complete either way with the first response), but may upset servers
that do not anticipate this allowed behavior.

Minor fixes
~~~~~~~~~~~

* The repr of udp6 addresses now shows all address components.
* Debug information output was increased in several spots.
* The ``loop=`` parameter was removed where it is deprecated by Python 3.8.
* asyncio Futures are created using create_future in some places.
* Binding to port 0 works again.
* The file server's registration at an RD was fixed.
* File server directories can now use block-wise transfer.
* Server errors from rendering exceptions to messages are now caught.
* Notifications now respect the block size limit.
* Several improvements to the test infrastructure.
* Refactoring around request processing internals (PlumbingRequest) alleviated potential memory leaks.
* Update option numbers from draft-ietf-echo-request-tag-10.
* Various proxying fixes and enhancements.
* TLS: Use SNI (Python >= 3.8), set correct hostinfo based on it.
* Internally used NoResponse options on responses are not leaked any more.
* Timeouts from one remote are now correctly propagated to all pending requests.
* Various logging improvements and changes.
* udp6: Show warnings when operating system fails to deliver pktinfo (happens with very old Linux kernels).
* Reduce installation clobber by excluding tests.
* Enhanced error reporting for erroneous ``coap://2001:db8::1/`` style URIs
* Improve OSCORE's shutdown robustness.
* Sending to IPv4 literals now does not send the Uri-Host automatically any more.

Page 2 of 3

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.