The NetBSD Project

CVS log for pkgsrc/net/py-zeroconf/distinfo

[BACK] Up to [cvs.NetBSD.org] / pkgsrc / net / py-zeroconf

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.41 / (download) - annotate - [select for diffs], Wed Apr 17 13:28:35 2024 UTC (46 hours, 52 minutes ago) by adam
Branch: MAIN
CVS Tags: HEAD
Changes since 1.40: +4 -4 lines
Diff to previous 1.40 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.132.2

v0.132.2 (2024-04-13)

Fix

* Update references to minimum-supported python version of 3.8
* Bump cibuildwheel to fix wheel builds

v0.132.1 (2024-04-12)

Fix

* Set change during iteration when dispatching listeners

v0.132.0 (2024-04-01)

Feature

* Make async_get_service_info available on the Zeroconf object
* Drop python 3.7 support

Revision 1.40 / (download) - annotate - [select for diffs], Sun Jan 28 20:44:28 2024 UTC (2 months, 2 weeks ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2024Q1-base, pkgsrc-2024Q1
Changes since 1.39: +4 -4 lines
Diff to previous 1.39 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.131.0

v0.131.0 (2023-12-19)

Feature

* Small speed up to constructing outgoing packets
* Speed up processing incoming packets
* Speed up the query handler

v0.130.0 (2023-12-16)

Feature

* Make ServiceInfo aware of question history
* Small speed up to ServiceInfo construction
* Significantly improve efficiency of the ServiceBrowser scheduler
* Small speed up to processing incoming records
* Small performance improvement for converting time
* Small performance improvement for ServiceInfo asking questions
* Small performance improvement constructing outgoing questions

Fix

* Scheduling race with the QueryScheduler
* Ensure question history suppresses duplicates
* Microsecond precision loss in the query handler
* Ensure IPv6 scoped address construction uses the string cache

Revision 1.39 / (download) - annotate - [select for diffs], Thu Nov 23 08:52:12 2023 UTC (4 months, 3 weeks ago) by wiz
Branch: MAIN
CVS Tags: pkgsrc-2023Q4-base, pkgsrc-2023Q4
Changes since 1.38: +4 -4 lines
Diff to previous 1.38 (colored) to selected 1.1 (colored)

py-zeroconf: update to 0.127.0.

## v0.127.0 (2023-11-15)

### Feature

* Small speed up to writing outgoing packets
* Speed up incoming packet reader
* Small speed up to processing incoming dns records

## v0.126.0 (2023-11-13)

### Feature

* Speed up outgoing packet writer
* Speed up writing name compression for outgoing packets

## v0.125.0 (2023-11-12)

### Feature

* Speed up service browser queries when browsing many types

## v0.124.0 (2023-11-12)

### Feature

* Avoid decoding known answers if we have no answers to give
* Small speed up to process incoming packets

## v0.123.0 (2023-11-12)

### Feature

* Speed up instances only used to lookup answers

## v0.122.3 (2023-11-09)

### Fix

* Do not build musllinux aarch64 wheels to reduce release time

## v0.122.2 (2023-11-09)

### Fix

* Do not build aarch64 wheels for PyPy

## v0.122.1 (2023-11-09)

### Fix

* Skip wheel builds for eol python and older python with aarch64

## v0.122.0 (2023-11-08)

### Feature

* Build aarch64 wheels

## v0.121.0 (2023-11-08)

### Feature

* Speed up record updates

## v0.120.0 (2023-11-05)

### Feature

* Speed up incoming packet processing with a memory view
* Speed up decoding labels from incoming data
* Speed up ServiceBrowsers with a pxd for the signal interface

## v0.119.0 (2023-10-18)

### Feature

* Update cibuildwheel to build wheels on latest cython final release

## v0.118.1 (2023-10-18)

### Fix

* Reduce size of wheels by excluding generated .c files

## v0.118.0 (2023-10-14)

### Feature

* Small improvements to ServiceBrowser performance

## v0.117.0 (2023-10-14)

### Feature

* Small cleanups to incoming data handlers

Revision 1.38 / (download) - annotate - [select for diffs], Fri Oct 13 05:45:53 2023 UTC (6 months ago) by adam
Branch: MAIN
Changes since 1.37: +4 -4 lines
Diff to previous 1.37 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.116.0

v0.116.0 (2023-10-13)

Feature

* Reduce type checking overhead at run time

v0.115.2 (2023-10-05)

Fix

* Ensure ServiceInfo cache is cleared when adding to the registry

v0.115.1 (2023-10-01)

Fix

* Add missing python definition for addresses_by_version

v0.115.0 (2023-09-26)

Feature

* Speed up outgoing multicast queue

v0.114.0 (2023-09-25)

Feature

* Speed up responding to queries

v0.113.0 (2023-09-24)

Feature

* Improve performance of loading records from cache in ServiceInfo

v0.112.0 (2023-09-14)

Feature

* Improve AsyncServiceBrowser performance

v0.111.0 (2023-09-14)

Feature

* Speed up question and answer internals

v0.110.0 (2023-09-14)

Feature

* Small speed ups to ServiceBrowser

v0.109.0 (2023-09-14)

Feature

* Speed up ServiceBrowsers with a cython pxd

v0.108.0 (2023-09-11)

Feature

* Improve performance of constructing outgoing queries

v0.107.0 (2023-09-11)

Feature

* Speed up responding to queries

v0.106.0 (2023-09-11)

Feature

* Speed up answering questions

v0.105.0 (2023-09-10)

Feature

* Speed up ServiceInfo with a cython pxd

v0.104.0 (2023-09-10)

Feature

* Speed up generating answers

Revision 1.37 / (download) - annotate - [select for diffs], Thu Aug 10 12:31:59 2023 UTC (8 months, 1 week ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2023Q3-base, pkgsrc-2023Q3
Changes since 1.36: +4 -4 lines
Diff to previous 1.36 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.74.0

v0.74.0 (2023-08-04)

Feature

* Speed up unpacking text records in ServiceInfo

Fix

* Remove typing on reset_ttl for cython compat

v0.73.0 (2023-08-03)

Feature

* Add a cache to service_type_name

v0.72.3 (2023-08-03)

Fix

* Revert adding typing to DNSRecord.suppressed_by

v0.72.2 (2023-08-03)

Fix

* Revert DNSIncoming cimport in _dns.pxd

v0.72.1 (2023-08-03)

Fix

* Race with InvalidStateError when async_request times out

v0.72.0 (2023-08-02)

Feature

* Speed up processing incoming records

v0.71.5 (2023-08-02)

Fix

* Improve performance of ServiceInfo.async_request

v0.71.4 (2023-07-24)

Fix

* Cleanup naming from previous refactoring in ServiceInfo

v0.71.3 (2023-07-23)

Fix

* Pin python-semantic-release to fix release process

v0.71.2 (2023-07-23)

Fix

* No change re-release to fix wheel builds

v0.71.1 (2023-07-23)

Fix

* Add missing if TYPE_CHECKING guard to generate_service_query

v0.71.0 (2023-07-08)

Feature

* Improve incoming data processing performance

v0.70.0 (2023-07-02)

Feature

* Add support for sending to a specific `addr` and `port` with `ServiceInfo.async_request` and `ServiceInfo.request`

Revision 1.36 / (download) - annotate - [select for diffs], Wed Mar 1 10:40:37 2023 UTC (13 months, 2 weeks ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2023Q2-base, pkgsrc-2023Q2, pkgsrc-2023Q1-base, pkgsrc-2023Q1
Changes since 1.35: +4 -4 lines
Diff to previous 1.35 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.47.3

v0.47.3 (2023-02-14)

Fix

Hold a strong reference to the query sender start task
v0.47.2 (2023-02-14)

Fix

Missing c extensions with newer poetry
v0.47.1 (2022-12-24)

Fix

The equality checks for DNSPointer and DNSService should be case insensitive
v0.47.0 (2022-12-22)

Feature

Optimize equality checks for DNS records
v0.46.0 (2022-12-21)

Feature

Optimize the dns cache
v0.45.0 (2022-12-20)

Feature

Optimize construction of outgoing packets
v0.44.0 (2022-12-18)

Feature

Optimize dns objects by adding pxd files
v0.43.0 (2022-12-18)

Feature

Optimize incoming parser by reducing call stack
v0.42.0 (2022-12-18)

Feature

Optimize incoming parser by using unpack_from
v0.41.0 (2022-12-18)

Feature

Optimize incoming parser by adding pxd files
v0.40.1 (2022-12-18)

Fix

Fix project name in pyproject.toml
v0.40.0 (2022-12-17)

Feature

Drop async_timeout requirement for python 3.11+

Revision 1.35 / (download) - annotate - [select for diffs], Sat Nov 12 11:02:03 2022 UTC (17 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2022Q4-base, pkgsrc-2022Q4
Changes since 1.34: +4 -4 lines
Diff to previous 1.34 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.39.4

0.39.4
Fix IP changes being missed by ServiceInfo

0.39.3
Fix port changes not being seen by ServiceInfo

Revision 1.34 / (download) - annotate - [select for diffs], Fri Oct 21 09:01:05 2022 UTC (17 months, 4 weeks ago) by adam
Branch: MAIN
Changes since 1.33: +4 -4 lines
Diff to previous 1.33 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.39.2

0.39.2
Performance improvements for parsing incoming packet data

Revision 1.33 / (download) - annotate - [select for diffs], Mon Sep 12 16:10:24 2022 UTC (19 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2022Q3-base, pkgsrc-2022Q3
Changes since 1.32: +4 -4 lines
Diff to previous 1.32 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.39.1

0.39.1
Performance improvements for constructing outgoing packet data

Revision 1.32 / (download) - annotate - [select for diffs], Wed Aug 10 09:14:23 2022 UTC (20 months, 1 week ago) by adam
Branch: MAIN
Changes since 1.31: +4 -4 lines
Diff to previous 1.31 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.39.0

0.39.0

Technically backwards incompatible:

Switch to using async_timeout for timeouts
Significantly reduces the number of asyncio tasks that are created when using ServiceInfo or AsyncServiceInfo

Revision 1.31 / (download) - annotate - [select for diffs], Wed Jul 13 20:34:07 2022 UTC (21 months ago) by adam
Branch: MAIN
Changes since 1.30: +4 -4 lines
Diff to previous 1.30 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.38.7

0.38.7
Performance improvements for parsing incoming packet data

Revision 1.30 / (download) - annotate - [select for diffs], Thu May 12 07:43:43 2022 UTC (23 months, 1 week ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2022Q2-base, pkgsrc-2022Q2
Changes since 1.29: +4 -4 lines
Diff to previous 1.29 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.38.6

0.38.6
Performance improvements for fetching ServiceInfo


0.38.5
Fix ServiceBrowsers not getting ServiceStateChange.Removed callbacks on PTR record expire

ServiceBrowsers were only getting a ServiceStateChange.Removed callback
when the record was sent with a TTL of 0. ServiceBrowsers now correctly
get a ServiceStateChange.Removed callback when the record expires as well.

Fix missing minimum version of python 3.7

Revision 1.29 / (download) - annotate - [select for diffs], Thu Mar 17 12:54:47 2022 UTC (2 years, 1 month ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2022Q1-base, pkgsrc-2022Q1
Changes since 1.28: +4 -4 lines
Diff to previous 1.28 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.38.4

0.38.4
Fix IP Address updates when hostname is uppercase

Revision 1.28 / (download) - annotate - [select for diffs], Sat Feb 5 12:08:36 2022 UTC (2 years, 2 months ago) by adam
Branch: MAIN
Changes since 1.27: +4 -4 lines
Diff to previous 1.27 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.38.3

0.38.3
Version bump only, no changes from 0.38.2

0.38.2
Make decode errors more helpful in finding the source of the bad data

Revision 1.27 / (download) - annotate - [select for diffs], Mon Jan 31 17:35:20 2022 UTC (2 years, 2 months ago) by adam
Branch: MAIN
Changes since 1.26: +4 -4 lines
Diff to previous 1.26 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.38.1

0.38.1
Improve performance of query scheduler
Avoid linear type searches in ServiceBrowsers

0.38.0
Handle Service types that end with another service type

Backwards incompatible:
Dropped Python 3.6 support

Revision 1.26 / (download) - annotate - [select for diffs], Thu Dec 16 20:21:53 2021 UTC (2 years, 4 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2021Q4-base, pkgsrc-2021Q4
Changes since 1.25: +4 -4 lines
Diff to previous 1.25 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.37.0

0.37.0

Technically backwards incompatible:

Adding a listener that does not inherit from RecordUpdateListener now logs an error

The NotRunningException exception is now thrown when Zeroconf is not running

Before this change the consumer would get a timeout or an EventLoopBlocked
exception when calling ServiceInfo.*request when the instance had already been shutdown
or had failed to startup.

The EventLoopBlocked exception is now thrown when a coroutine times out

Previously concurrent.futures.TimeoutError would have been raised
instead. This is never expected to happen during normal operation.

Revision 1.25 / (download) - annotate - [select for diffs], Tue Oct 26 11:06:46 2021 UTC (2 years, 5 months ago) by nia
Branch: MAIN
Changes since 1.24: +2 -2 lines
Diff to previous 1.24 (colored) to selected 1.1 (colored)


net: Replace RMD160 checksums with BLAKE2s checksums

All checksums have been double-checked against existing RMD160 and
SHA512 hashes

Not committed (merge conflicts...):

net/radsecproxy/distinfo

The following distfiles could not be fetched (fetched conditionally?):

./net/citrix_ica/distinfo citrix_ica-10.6.115659/en.linuxx86.tar.gz
./net/djbdns/distinfo dnscache-1.05-multiple-ip.patch
./net/djbdns/distinfo djbdns-1.05-test28.diff.xz
./net/djbdns/distinfo djbdns-1.05-ignoreip2.patch
./net/djbdns/distinfo djbdns-1.05-multiip.diff
./net/djbdns/distinfo djbdns-cachestats.patch

Revision 1.24 / (download) - annotate - [select for diffs], Thu Oct 7 14:42:36 2021 UTC (2 years, 6 months ago) by nia
Branch: MAIN
Changes since 1.23: +1 -2 lines
Diff to previous 1.23 (colored) to selected 1.1 (colored)

net: Remove SHA1 hashes for distfiles

Revision 1.23 / (download) - annotate - [select for diffs], Mon Sep 6 11:25:22 2021 UTC (2 years, 7 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2021Q3-base, pkgsrc-2021Q3
Changes since 1.22: +5 -5 lines
Diff to previous 1.22 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.36.2

0.36.2

Include NSEC records for non-existent types when responding with addresses
0.36.1

Skip goodbye packets for addresses when there is another service registered with the same name

If a ServiceInfo that used the same server name as another ServiceInfo was unregistered, goodbye packets would be sent for the addresses and would cause the other service to be seen as offline.

Fixed equality and hash for dns records with the unique bit

These records should have the same hash and equality since the unique bit (cache flush bit) is not considered when adding or removing the records from the cache.

0.36.0

Technically backwards incompatible:

Fill incomplete IPv6 tuples to avoid WinError on windows

0.35.1

Only reschedule types if the send next time changes

When the PTR response was seen again, the timer was being canceled and rescheduled even if the timer was for the same time. While this did not cause any breakage, it is quite inefficient.

Cache DNS record and question hashes

The hash was being recalculated every time the object was being used in a set or dict. Since the hashes are effectively immutable, we only calculate them once now.

0.35.0

Reduced chance of accidental synchronization of ServiceInfo requests
Sort aggregated responses to increase chance of name compression
Technically backwards incompatible:

Send unicast replies on the same socket the query was received

When replying to a QU question, we do not know if the sending host is reachable from all of the sending sockets. We now avoid this problem by replying via the receiving socket. This was the existing behavior when InterfaceChoice.Default is set.

This change extends the unicast relay behavior to used with InterfaceChoice.Default to apply when InterfaceChoice.All or interfaces are explicitly passed when instantiating a Zeroconf instance.

0.34.3

Fix sending immediate multicast responses
0.34.2

Coalesce aggregated multicast answers

When the random delay is shorter than the last scheduled response, answers are now added to the same outgoing time group.

This reduces traffic when we already know we will be sending a group of answers inside the random delay window described in datatracker.ietf.org/doc/html/rfc6762#section-6.3

Ensure ServiceInfo requests can be answered inside the default timeout with network protection

Adjust the time windows to ensure responses that have triggered the protection against against excessive packet flooding due to software bugs or malicious attack described in RFC6762 section 6 can respond in under 1350ms to ensure ServiceInfo can ask two questions within the default timeout of 3000ms

0.34.1

Ensure multicast aggregation sends responses within 620ms

Responses that trigger the protection against against excessive packet flooding due to software bugs or malicious attack described in RFC6762 section 6 could cause the multicast aggregation response to be delayed longer than 620ms (The maximum random delay of 120ms and 500ms additional for aggregation).

Only responses that trigger the protection are delayed longer than 620ms

0.34.0

Implemented Multicast Response Aggregation

Responses are now aggregated when possible per rules in RFC6762 section 6.4

Responses that trigger the protection against against excessive packet flooding due to software bugs or malicious attack described in RFC6762 section 6 are delayed instead of discarding as it was causing responders that implement Passive Observation Of Failures (POOF) to evict the records.

Probe responses are now always sent immediately as there were cases where they would fail to be answered in time to defend a name.

0.33.4

Ensure zeroconf can be loaded when the system disables IPv6

Revision 1.22 / (download) - annotate - [select for diffs], Fri Aug 6 12:42:34 2021 UTC (2 years, 8 months ago) by adam
Branch: MAIN
Changes since 1.21: +5 -5 lines
Diff to previous 1.21 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.33.3

0.33.3

Added support for forward dns compression pointers
Provide sockname when logging a protocol error

0.33.2

Handle duplicate goodbye answers in the same packet

Solves an exception being thrown when we tried to remove the known answer from the cache when the second goodbye answer in the same packet was processed

Skip ipv6 interfaces that return ENODEV

Revision 1.21 / (download) - annotate - [select for diffs], Wed Jul 21 06:59:35 2021 UTC (2 years, 8 months ago) by adam
Branch: MAIN
Changes since 1.20: +5 -5 lines
Diff to previous 1.20 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.33.1

0.33.1
Version number change only with less restrictive directory permissions

0.33.0
This release eliminates all threading locks as all non-threadsafe operations
now happen in the event loop.

Revision 1.20 / (download) - annotate - [select for diffs], Mon Jul 5 19:03:29 2021 UTC (2 years, 9 months ago) by adam
Branch: MAIN
Changes since 1.19: +5 -5 lines
Diff to previous 1.19 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.32.1

0.32.1

Increased timeout in ServiceInfo.request to handle loaded systems

It can take a few seconds for a loaded system to run the async_request coroutine when the event loop is busy, or the system is CPU bound (example being Home Assistant startup). We now add an additional _LOADED_SYSTEM_TIMEOUT (10s) to the run_coroutine_threadsafe calls to ensure the coroutine has the total amount of time to run up to its internal timeout (default of 3000ms).

Ten seconds is a bit large of a timeout; however, it is only used in cases where we wrap other timeouts. We now expect the only instance the run_coroutine_threadsafe result timeout will happen in a production circumstance is when someone is running a ServiceInfo.request() in a thread and another thread calls Zeroconf.close() at just the right moment that the future is never completed unless the system is so loaded that it is nearly unresponsive.

The timeout for run_coroutine_threadsafe is the maximum time a thread can cleanly shut down when zeroconf is closed out in another thread, which should always be longer than the underlying thread operation.

Revision 1.19 / (download) - annotate - [select for diffs], Fri Jul 2 09:54:09 2021 UTC (2 years, 9 months ago) by adam
Branch: MAIN
Changes since 1.18: +5 -5 lines
Diff to previous 1.18 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.32.0

0.32.0

This release offers 100% line and branch coverage.

Made ServiceInfo first question QU

We want an immediate response when requesting with ServiceInfo by asking a QU question; most responders will not delay the response and respond right away to our question. This also improves compatibility with split networks as we may not have been able to see the response otherwise. If the responder has not multicast the record recently, it may still choose to do so in addition to responding via unicast

Reduces traffic when there are multiple zeroconf instances running on the network running ServiceBrowsers

If we don't get an answer on the first try, we ask a QM question in the event, we can't receive a unicast response for some reason

This change puts ServiceInfo inline with ServiceBrowser which also asks the first question as QU since ServiceInfo is commonly called from ServiceBrowser callbacks

Limited duplicate packet suppression to 1s intervals

Only suppress duplicate packets that happen within the same second. Legitimate queriers will retry the question if they are suppressed. The limit was reduced to one second to be in line with rfc6762

Made multipacket known answer suppression per interface

The suppression was happening per instance of Zeroconf instead of per interface. Since the same network can be seen on multiple interfaces (usually and wifi and ethernet), this would confuse the multi-packet known answer supression since it was not expecting to get the same data more than once

New ServiceBrowsers now request QU in the first outgoing when unspecified

https://datatracker.ietf.org/doc/html/rfc6762#section-5.4 When we start a ServiceBrowser and zeroconf has just started up, the known answer list will be small. By asking a QU question first, it is likely that we have a large known answer list by the time we ask the QM question a second later (current default which is likely too low but would be a breaking change to increase). This reduces the amount of traffic on the network, and has the secondary advantage that most responders will answer a QU question without the typical delay answering QM questions.

IPv6 link-local addresses are now qualified with scope_id

When a service is advertised on an IPv6 address where the scope is link local, i.e. fe80::/64 (see RFC 4007) the resolved IPv6 address must be extended with the scope_id that identifies through the "%" symbol the local interface to be used when routing to that address. A new API parsed_scoped_addresses() is provided to return qualified addresses to avoid breaking compatibility on the existing parsed_addresses().

Network adapters that are disconnected are now skipped

Fixed listeners missing initial packets if Engine starts too quickly

When manually creating a zeroconf.Engine object, it is no longer started automatically. It must manually be started by calling .start() on the created object.

The Engine thread is now started after all the listeners have been added to avoid a race condition where packets could be missed at startup.

Fixed answering matching PTR queries with the ANY query

Fixed lookup of uppercase names in the registry

If the ServiceInfo was registered with an uppercase name and the query was for a lowercase name, it would not be found and vice-versa.

Fixed unicast responses from any source port

Unicast responses were only being sent if the source port was 53, this prevented responses when testing with dig:

dig -p 5353 @224.0.0.251 media-12.local
The above query will now see a response

Fixed queries for AAAA records not being answered

Removed second level caching from ServiceBrowsers

The ServiceBrowser had its own cache of the last time it saw a service that was reimplementing the DNSCache and presenting a source of truth problem that lead to unexpected queries when the two disagreed.

Fixed server cache not being case-insensitive

If the server name had uppercase chars and any of the matching records were lowercase, and the server would not be found

Fixed cache handling of records with different TTLs

There should only be one unique record in the cache at a time as having multiple unique records will different TTLs in the cache can result in unexpected behavior since some functions returned all matching records and some fetched from the right side of the list to return the newest record. Instead we now store the records in a dict to ensure that the newest record always replaces the same unique record, and we never have a source of truth problem determining the TTL of a record from the cache.

Fixed ServiceInfo with multiple A records

If there were multiple A records for the host, ServiceInfo would always return the last one that was in the incoming packet, which was usually not the one that was wanted.

Fixed stale unique records expiring too quickly

Records now expire 1s in the future instead of instant removal.

tools.ietf.org/html/rfc6762#section-10.2 Queriers receiving a Multicast DNS response with a TTL of zero SHOULD NOT immediately delete the record from the cache, but instead record a TTL of 1 and then delete the record one second later. In the case of multiple Multicast DNS responders on the network described in Section 6.6 above, if one of the responders shuts down and incorrectly sends goodbye packets for its records, it gives the other cooperating responders one second to send out their own response to "rescue" the records before they expire and are deleted.

Fixed exception when unregistering a service multiple times

Added an AsyncZeroconfServiceTypes to mirror ZeroconfServiceTypes to zeroconf.asyncio

Fixed interface_index_to_ip6_address not skiping ipv4 adapters

Added async_unregister_all_services to AsyncZeroconf

Fixed services not being removed from the registry when calling unregister_all_services

There was a race condition where a query could be answered for a service in the registry, while goodbye packets which could result in a fresh record being broadcast after the goodbye if a query came in at just the right time. To avoid this, we now remove the services from the registry right after we generate the goodbye packet

Fixed zeroconf exception on load when the system disables IPv6

Fixed the QU bit missing from for probe queries

The bit should be set per datatracker.ietf.org/doc/html/rfc6762#section-8.1

Fixed the TC bit missing for query packets where the known answers span multiple packets

Fixed packets not being properly separated when exceeding maximum size

Ensure that questions that exceed the max packet size are moved to the next packet. This fixes DNSQuestions being sent in multiple packets in violation of: datatracker.ietf.org/doc/html/rfc6762#section-7.2

Ensure only one resource record is sent when a record exceeds _MAX_MSG_TYPICAL datatracker.ietf.org/doc/html/rfc6762#section-17

Fixed PTR questions asked in uppercase not being answered

Added Support for context managers in Zeroconf and AsyncZeroconf

Implemented an AsyncServiceBrowser to compliment the sync ServiceBrowser

Added async_get_service_info to AsyncZeroconf and async_request to AsyncServiceInfo

Implemented allowing passing in a sync Zeroconf instance to AsyncZeroconf

Fixed IPv6 setup under MacOS when binding to ""

Fixed ZeroconfServiceTypes.find not always cancels the ServiceBrowser

There was a short window where the ServiceBrowser thread could be left running after Zeroconf is closed because the .join() was never waited for when a new Zeroconf object was created

Fixed duplicate packets triggering duplicate updates

If TXT or SRV records update was already processed and then received again, it was possible for a second update to be called back in the ServiceBrowser

Fixed ServiceStateChange.Updated event happening for IPs that already existed

Fixed RFC6762 Section 10.2 paragraph 2 compliance

Reduced length of ServiceBrowser thread name with many types

Fixed empty answers being added in ServiceInfo.request

Fixed ServiceInfo not populating all AAAA records

Use get_all_by_details to ensure all records are loaded into addresses.

Only load A/AAAA records from the cache once in load_from_cache if there is a SRV record present

Move duplicate code that checked if the ServiceInfo was complete into its own function

Fixed a case where the cache list can change during iteration

Return task objects created by AsyncZeroconf

Traffic Reduction:

Added support for handling QU questions

Implements RFC 6762 sec 5.4: Questions Requesting Unicast Responses datatracker.ietf.org/doc/html/rfc6762#section-5.4

Implemented protect the network against excessive packet flooding

Additionals are now suppressed when they are already in the answers section

Additionals are no longer included when the answer is suppressed by known-answer suppression

Implemented multi-packet known answer supression

Implements datatracker.ietf.org/doc/html/rfc6762#section-7.2

Implemented efficient bucketing of queries with known answers

Implemented duplicate question suppression

http://datatracker.ietf.org/doc/html/rfc6762#section-7.3

Technically backwards incompatible:

Update internal version check to match docs (3.6+)

Python version earlier then 3.6 were likely broken with zeroconf already, however, the version is now explicitly checked.

Update python compatibility as PyPy3 7.2 is required

Backwards incompatible:

Drop oversize packets before processing them

Oversized packets can quickly overwhelm the system and deny service to legitimate queriers. In practice, this is usually due to broken mDNS implementations rather than malicious actors.

Guard against excessive ServiceBrowser queries from PTR records significantly lowerthan recommended

We now enforce a minimum TTL for PTR records to avoid ServiceBrowsers generating excessive queries refresh queries. Apple uses a 15s minimum TTL, however, we do not have the same level of rate limit and safeguards, so we use 1/4 of the recommended value.

RecordUpdateListener now uses async_update_records instead of update_record

This allows the listener to receive all the records that have been updated in a single transaction such as a packet or cache expiry.

update_record has been deprecated in favor of async_update_records A compatibility shim exists to ensure classes that use RecordUpdateListener as a base class continue to have update_record called, however, they should be updated as soon as possible.

A new method async_update_records_complete is now called on each listener when all listeners have completed processing updates and the cache has been updated. This allows ServiceBrowsers to delay calling handlers until they are sure the cache has been updated as its a common pattern to call for ServiceInfo when a ServiceBrowser handler fires.

The async_ prefix was chosen to make it clear that these functions run in the eventloop and should never do blocking I/O. Before 0.32+ these functions ran in a select() loop and should not have been doing any blocking I/O, but it was not clear to implementors that I/O would block the loop.

Pass both the new and old records to async_update_records

Pass the old_record (cached) as the value and the new_record (wire) to async_update_records instead of forcing each consumer to check the cache since we will always have the old_record when generating the async_update_records call. This avoids the overhead of multiple cache lookups for each listener.

Revision 1.18 / (download) - annotate - [select for diffs], Wed May 19 09:40:34 2021 UTC (2 years, 11 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2021Q2-base, pkgsrc-2021Q2
Changes since 1.17: +5 -5 lines
Diff to previous 1.17 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.31.0

0.31.0:
Unknown changes

Revision 1.17 / (download) - annotate - [select for diffs], Thu May 6 04:49:07 2021 UTC (2 years, 11 months ago) by adam
Branch: MAIN
Changes since 1.16: +5 -5 lines
Diff to previous 1.16 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.30.0

0.30.0:
Unknown changes

Revision 1.16 / (download) - annotate - [select for diffs], Thu Apr 1 06:21:04 2021 UTC (3 years ago) by adam
Branch: MAIN
Changes since 1.15: +5 -5 lines
Diff to previous 1.15 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.29.0

0.29.0

A single socket is used for listening on responding when InterfaceChoice.Default is chosen.

Backwards incompatible:

Dropped Python 3.5 support

Revision 1.15 / (download) - annotate - [select for diffs], Fri Jan 15 09:57:33 2021 UTC (3 years, 3 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2021Q1-base, pkgsrc-2021Q1
Changes since 1.14: +5 -5 lines
Diff to previous 1.14 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.28.8

0.28.8
Fixed the packet generation when multiple packets are necessary, previously invalid packets were generated sometimes.

Revision 1.14 / (download) - annotate - [select for diffs], Mon Dec 14 06:37:48 2020 UTC (3 years, 4 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2020Q4-base, pkgsrc-2020Q4
Changes since 1.13: +5 -5 lines
Diff to previous 1.13 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.28.7

0.28.7
Fixed the IPv6 address rendering in the browser example
Fixed a crash happening when a service is added or removed during handle_response and improved exception handling

Revision 1.13 / (download) - annotate - [select for diffs], Wed Oct 21 11:48:25 2020 UTC (3 years, 5 months ago) by adam
Branch: MAIN
Changes since 1.12: +5 -5 lines
Diff to previous 1.12 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.28.6

0.28.6
Loosened service name validation when receiving from the network this lets us handle some real world devices previously causing errors

Revision 1.12 / (download) - annotate - [select for diffs], Tue Sep 29 16:59:31 2020 UTC (3 years, 6 months ago) by adam
Branch: MAIN
Changes since 1.11: +5 -5 lines
Diff to previous 1.11 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.28.5

0.28.5
Enabled ignoring duplicated messages which decreases CPU usage, thanks to J. Nick Koston.
Fixed spurious AttributeError: module 'unittest' has no attribute 'mock' in tests.

Revision 1.11 / (download) - annotate - [select for diffs], Thu Sep 10 09:51:07 2020 UTC (3 years, 7 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2020Q3-base, pkgsrc-2020Q3
Changes since 1.10: +5 -5 lines
Diff to previous 1.10 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.28.4

0.28.4
Improved cache reaper performance significantly, thanks to J. Nick Koston.
Added ServiceListener to __all__ as it's part of the public API, thanks to Justin Nesselrotte.

0.28.3
Reduced a time an internal lock is held which should eliminate deadlocks in high-traffic networks, thanks to J. Nick Koston.

0.28.2
Stopped asking questions we already have answers for in cache, thanks to Paul Daumlechner.
Removed initial delay before querying for service info, thanks to Erik Montnemery.

Revision 1.10 / (download) - annotate - [select for diffs], Fri Aug 21 09:06:36 2020 UTC (3 years, 7 months ago) by adam
Branch: MAIN
Changes since 1.9: +5 -5 lines
Diff to previous 1.9 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.28.1

0.28.1:
Unknown changes

Revision 1.9 / (download) - annotate - [select for diffs], Wed Jul 8 08:16:53 2020 UTC (3 years, 9 months ago) by adam
Branch: MAIN
Changes since 1.8: +5 -5 lines
Diff to previous 1.8 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.28.0

0.28.0

Improved Windows support when using socket errno checks.
Added support for passing text addresses to ServiceInfo.
Improved logging (includes fixing an incorrect logging call)
Improved Windows compatibility by using Adapter.index from ifaddr.
Improved Windows compatibility by stopping using socket.if_nameindex.
Fixed an OS X edge case which should also eliminate a memory leak.

Technically backwards incompatible:
ifaddr 0.1.7 or newer is required now.

Revision 1.8 / (download) - annotate - [select for diffs], Sat Jun 20 16:32:07 2020 UTC (3 years, 9 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2020Q2-base, pkgsrc-2020Q2
Changes since 1.7: +5 -5 lines
Diff to previous 1.7 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.27.1

0.27.1
Improved the logging situation (includes fixing a false-positive "packets() made no progress adding records")

0.27.0
Large multi-resource responses are now split into separate packets which fixes a bad mdns-repeater/ChromeCast Audio interaction ending with ChromeCast Audio crash (and possibly some others) and improves RFC 6762 compliance
Added a warning presented when the listener passed to ServiceBrowser lacks update_service() callback
Added support for finding all services available in the browser example

Backwards incompatible:
Removed previously deprecated ServiceInfo address constructor parameter and property

Revision 1.7 / (download) - annotate - [select for diffs], Wed May 27 07:58:09 2020 UTC (3 years, 10 months ago) by adam
Branch: MAIN
Changes since 1.6: +5 -5 lines
Diff to previous 1.6 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.26.3

0.26.3
Improved readability of logged incoming data.
Threads are given unique names now to aid debugging.
Fixed a regression where get_service_info() called within a listener add_service method would deadlock, timeout and incorrectly return None.

Revision 1.6 / (download) - annotate - [select for diffs], Sat May 23 07:50:31 2020 UTC (3 years, 10 months ago) by adam
Branch: MAIN
Changes since 1.5: +5 -5 lines
Diff to previous 1.5 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.26.2

0.26.2:
Unknown changes

Revision 1.5 / (download) - annotate - [select for diffs], Thu May 7 05:40:19 2020 UTC (3 years, 11 months ago) by adam
Branch: MAIN
Changes since 1.4: +5 -5 lines
Diff to previous 1.4 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.26.1

0.26.1:
Fixed a performance regression introduced in 0.26.0

Revision 1.4 / (download) - annotate - [select for diffs], Tue Apr 28 11:37:27 2020 UTC (3 years, 11 months ago) by adam
Branch: MAIN
Changes since 1.3: +5 -5 lines
Diff to previous 1.3 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.26.0

0.26.0:
Fixed a regression where service update listener wasn't called on IP address change (it's called on SRV/A/AAAA record changes now).

Technically backwards incompatible:
Service update hook is no longer called on service addition (service added hook is still called), this is related to the fix above.

Revision 1.3 / (download) - annotate - [select for diffs], Sat Apr 4 09:28:51 2020 UTC (4 years ago) by adam
Branch: MAIN
Changes since 1.2: +5 -5 lines
Diff to previous 1.2 (colored) to selected 1.1 (colored)

py-zeroconf: updated to 0.25.0

0.25.0
Reverted uniqueness assertions when browsing, they caused a regression
Backwards incompatible:

Rationalized handling of TXT records. Non-bytes values are converted to str and encoded to bytes using UTF-8 now, None values mean value-less attributes. When receiving TXT records no decoding is performed now, keys are always bytes and values are either bytes or None in value-less attributes.

0.24.5
Fixed issues with shared records being used where they shouldn't be (TXT, SRV, A records are unique now)
Stopped unnecessarily excluding host-only interfaces from InterfaceChoice.all as they don't forbid multicast
Fixed repr() of IPv6 DNSAddress
Removed duplicate update messages sent to listeners
Added support for cooperating responders
Optimized handle_response cache check
Fixed memory leak in DNSCache

Revision 1.2 / (download) - annotate - [select for diffs], Sat Feb 1 20:18:18 2020 UTC (4 years, 2 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2020Q1-base, pkgsrc-2020Q1
Changes since 1.1: +5 -5 lines
Diff to previous 1.1 (colored)

py-zeroconf: updated to 0.24.4

0.24.4
Fixed resetting TTL in DNSRecord.reset_ttl()
Improved various DNS class' string representations

Revision 1.1 / (download) - annotate - [selected], Sun Dec 29 04:39:49 2019 UTC (4 years, 3 months ago) by ryoon
Branch: MAIN

net/py-zeroconf: import py38-zeroconf-0.24.3

Pure Python Multicast DNS Service Discovery Library

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>