Zeroconf

Latest version: v0.140.1

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

Scan your dependencies

Page 38 of 39

0.17.6

Testing

* test: added test for DNS-SD subtype discovery ([`914241b`](https://github.com/python-zeroconf/python-zeroconf/commit/914241b92c3097669e1e8c1a380f6c2f23a14cf8))

Unknown

* Fix readme to valid reStructuredText, ([`94570b7`](https://github.com/python-zeroconf/python-zeroconf/commit/94570b730aaab606db820b9c4d48b1c313fdaa98))

* Prepare release 0.17.6 ([`e168a6f`](https://github.com/python-zeroconf/python-zeroconf/commit/e168a6fa5486d92114fb02d4c40b36f8298a022f))

* Merge pull request 61 from stephenrauch/add-python3.5

Add python 3.5 to Travis ([`617d9fd`](https://github.com/python-zeroconf/python-zeroconf/commit/617d9fd0db5bef350eaebd13cfcc73803900ad24))

* Add python 3.5 to Travis ([`6198e89`](https://github.com/python-zeroconf/python-zeroconf/commit/6198e8909b968430ddac9261f4dd9c508d96db65))

* Merge pull request 60 from stephenrauch/delay_ServiceBrowser_connect

Delay connecting ServiceBrowser() until it is running ([`56d9ac1`](https://github.com/python-zeroconf/python-zeroconf/commit/56d9ac13381a3ae205cb2b9339981a50f0a2eb62))

* Delay connecting ServiceBrowser() until it is running ([`6d1370c`](https://github.com/python-zeroconf/python-zeroconf/commit/6d1370cc2aa6d2c125aa924342e224b6b92ef8d9))

* Merge pull request 57 from herczy/master

resolve issue 56: service browser initialization race ([`0225a18`](https://github.com/python-zeroconf/python-zeroconf/commit/0225a18957a26855720d7ab002f3983cb9d76e0e))

* resolve issue 56: service browser initialization race ([`1567016`](https://github.com/python-zeroconf/python-zeroconf/commit/15670161c597bc035c0e9411d0bb830b9520589f))

* Merge pull request 58 from strahlex/subtype-test

added test for DNS-SD subtype discovery ([`4a569fe`](https://github.com/python-zeroconf/python-zeroconf/commit/4a569fe389d2fb5fd4b4f294ae9ebc0e38164e4a))

* Merge pull request 53 from stephenrauch/validate_service_names

Validate service names ([`76a5e99`](https://github.com/python-zeroconf/python-zeroconf/commit/76a5e99f2e772a9462d0f4b3ab4c80f1b0a3b542))

* Service Name Validation

This change validates service, instance and subtype names against
rfc6763.

Also adds test code for subtypes and provides a fix for issue 37. ([`88fa059`](https://github.com/python-zeroconf/python-zeroconf/commit/88fa0595cd880b6d82ac8580512461e64eb32d6b))

* Test Case and fixes for DNSHInfo (49)

* Fix ability for a cache lookup to match properly

When querying for a service type, the response is processed. During the
processing, an info lookup is performed. If the info is not found in
the cache, then a query is sent. Trouble is that the info requested is
present in the same packet that triggered the lookup, and a query is not
necessary. But two problems caused the cache lookup to fail.

1) The info was not yet in the cache. The call back was fired before
all answers in the packet were cached.

2) The test for a cache hit did not work, because the cache hit test
uses a DNSEntry as the comparison object. But some of the objects in
the cache are descendents of DNSEntry and have their own __eq__()
defined which accesses fields only present on the descendent. Thus the
test can NEVER work since the descendent's __eq__() will be used.

Also continuing the theme of some other recent pull requests, add three
_GLOBAL_DONE tests to avoid doing work after the attempted stop, and
thus avoid generating (harmless, but annoying) exceptions during
shutdown

* Remove unnecessary packet send in ServiceInfo.request()

When performing an info query via request(), a listener is started, and
a packet is formed. As the packet is formed, known answers are taken
from the cache and placed into the packet. Then the packet is sent.
The packet is self received (via multicast loopback, I assume). At that
point the listener is fired and the answers in the packet are propagated
back to the object that started the request. This is a really long way
around the barn.

The PR queries the cache directly in request() and then calls
update_record(). If all of the information is in the cache, then no
packet is formed or sent or received. This approach was taken because,
for whatever reason, the reception of the packets on windows via the
loopback was proving to be unreliable. The method has the side benefit
of being a whole lot faster.

This PR also incorporates the joins() from PR 30. In addition it moves
the two joins() in close() to their own thread because they can take
quite a while to execute.

* Fix locking race condition in Engine.run()

This fixes a race condition in which the receive engine was waiting
against its condition variable under a different lock than the one it
used to determine if it needed to wait. This was causing the code to
sometimes take 5 seconds to do anything useful.

When fixing the race condition, decided to also fix the other
correctness issues in the loop which was likely causing the errors that
led to the inclusion of the 'except Exception' catch all. This in turn
allowed the use of EBADF error due to closing the socket during exit to
be used to get out of the select in a timely manner.

Finally, this allowed reorganizing the shutdown code to shutdown from
the front to the back. That is to say, shutdown the recv socket first,
which then allows a clean join with the engine thread. After the engine
thread exits most everything else is inert as all callbacks have been
unwound.

* Remove a now invalid test case

With the restructure of shutdown, Listener() now needs to throw EBADF on
a closed socket to allow a timely and graceful shutdown.

* Shutdown the service listeners in an organized fashion

Also adds names to the various threads to make debugging easier.

* Improve test coverage

Add more needed shutdown cleanup found via additional test coverage.

Force timeout calculation from milli to seconds to use floating point.

* init ServiceInfo._properties

* Add query support and test case for _services._dns-sd._udp.local.

* pep8 cleanup

* Add testcase and fixes for HInfo Record Generation

The DNSHInfo packet generation code was broken. There was no test case for that
functionality, and adding a test case showed four issues. Two of which were
relative to PY3 string, one of which was a typoed reference to an attribute,
and finally the two fields present in the HInfo record were using the wrong
encoding, which is what necessitated the change from write_string() to
write_character_string(). ([`6b39c70`](https://github.com/python-zeroconf/python-zeroconf/commit/6b39c70fa1ed7cfac89e02e2b3764a9038b87267))

* Merge pull request 48 from stephenrauch/Find-Service-Types

Find service types ([`1dfc40f`](https://github.com/python-zeroconf/python-zeroconf/commit/1dfc40f4da145a55d60a952df90301ee0e5d65c4))

* Add query support and test case for _services._dns-sd._udp.local. ([`cfbb157`](https://github.com/python-zeroconf/python-zeroconf/commit/cfbb1572e44c4d8af1b50cb62abc0d426fc8e3ea))

* Merge pull request 45 from stephenrauch/master

Multiple fixes to speed up querys and remove exceptions at shutdown ([`183cd81`](https://github.com/python-zeroconf/python-zeroconf/commit/183cd81d9274bf28c642314df2f9e32f1f60020b))

* init ServiceInfo._properties ([`d909942`](https://github.com/python-zeroconf/python-zeroconf/commit/d909942e2c9479819e9113ffb3a354b1d99d6814))

* Improve test coverage

Add more needed shutdown cleanup found via additional test coverage.

Force timeout calculation from milli to seconds to use floating point. ([`75232cc`](https://github.com/python-zeroconf/python-zeroconf/commit/75232ccf28a820ee723db072951078eba31145a5))

* Shutdown the service listeners in an organized fashion

Also adds names to the various threads to make debugging easier. ([`ad3c248`](https://github.com/python-zeroconf/python-zeroconf/commit/ad3c248e4b67d5d2e9a4448a56b4e4648284ecd4))

* Remove a now invalid test case

With the restructure of shutdown, Listener() now needs to throw EBADF on
a closed socket to allow a timely and graceful shutdown. ([`7bbee59`](https://github.com/python-zeroconf/python-zeroconf/commit/7bbee590e553a1ff0e4dde3b1fdcf614b7e1ecd5))

* Fix locking race condition in Engine.run()

This fixes a race condition in which the receive engine was waiting
against its condition variable under a different lock than the one it
used to determine if it needed to wait. This was causing the code to
sometimes take 5 seconds to do anything useful.

When fixing the race condition, decided to also fix the other
correctness issues in the loop which was likely causing the errors that
led to the inclusion of the 'except Exception' catch all. This in turn
allowed the use of EBADF error due to closing the socket during exit to
be used to get out of the select in a timely manner.

Finally, this allowed reorganizing the shutdown code to shutdown from
the front to the back. That is to say, shutdown the recv socket first,
which then allows a clean join with the engine thread. After the engine
thread exits most everything else is inert as all callbacks have been
unwound. ([`8a110f5`](https://github.com/python-zeroconf/python-zeroconf/commit/8a110f58b02825100f5bdb56c119495ae42ae54c))

* Remove unnecessary packet send in ServiceInfo.request()

When performing an info query via request(), a listener is started, and
a packet is formed. As the packet is formed, known answers are taken
from the cache and placed into the packet. Then the packet is sent.
The packet is self received (via multicast loopback, I assume). At that
point the listener is fired and the answers in the packet are propagated
back to the object that started the request. This is a really long way
around the barn.

The PR queries the cache directly in request() and then calls
update_record(). If all of the information is in the cache, then no
packet is formed or sent or received. This approach was taken because,
for whatever reason, the reception of the packets on windows via the
loopback was proving to be unreliable. The method has the side benefit
of being a whole lot faster.

This PR also incorporates the joins() from PR 30. In addition it moves
the two joins() in close() to their own thread because they can take
quite a while to execute. ([`c49145c`](https://github.com/python-zeroconf/python-zeroconf/commit/c49145c35de09b2631d8a2b4751d787a6b4dc904))

* Fix ability for a cache lookup to match properly

When querying for a service type, the response is processed. During the
processing, an info lookup is performed. If the info is not found in
the cache, then a query is sent. Trouble is that the info requested is
present in the same packet that triggered the lookup, and a query is not
necessary. But two problems caused the cache lookup to fail.

1) The info was not yet in the cache. The call back was fired before
all answers in the packet were cached.

2) The test for a cache hit did not work, because the cache hit test
uses a DNSEntry as the comparison object. But some of the objects in
the cache are descendents of DNSEntry and have their own __eq__()
defined which accesses fields only present on the descendent. Thus the
test can NEVER work since the descendent's __eq__() will be used.

Also continuing the theme of some other recent pull requests, add three
_GLOBAL_DONE tests to avoid doing work after the attempted stop, and
thus avoid generating (harmless, but annoying) exceptions during
shutdown ([`d8562fd`](https://github.com/python-zeroconf/python-zeroconf/commit/d8562fd3546d6cd27b1ba9e95105ea534649a43e))

0.17.5

Unknown

* Prepare release 0.17.5 ([`f33b8f9`](https://github.com/python-zeroconf/python-zeroconf/commit/f33b8f9c182245b14b9b73a86aefedcee4520eb5))

* resolve issue 38: size change during iteration ([`fd9d531`](https://github.com/python-zeroconf/python-zeroconf/commit/fd9d531f294e7fa5b9b934f192b061f56eaf1d37))

* Installation on system with ASCII encoding

The default open function in python2 made a best effort to open text files of any encoding.
After 3.0 the encoding has to be set correctly and it defaults to the user preferences. ([`6007537`](https://github.com/python-zeroconf/python-zeroconf/commit/60075379d57664f94fa41a96dea7c7c64489ef3d))

* Revert "Switch from netifaces to psutil"

psutil doesn't seem to work on pypy3:

Traceback (most recent call last):
File "/home/travis/virtualenv/pypy3-2.4.0/site-packages/nose/failure.py", line 39, in runTest
raise self.exc_val.with_traceback(self.tb)
File "/home/travis/virtualenv/pypy3-2.4.0/site-packages/nose/loader.py", line 414, in loadTestsFromName
addr.filename, addr.module)
File "/home/travis/virtualenv/pypy3-2.4.0/site-packages/nose/importer.py", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/home/travis/virtualenv/pypy3-2.4.0/site-packages/nose/importer.py", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/home/travis/build/jstasiak/python-zeroconf/test_zeroconf.py", line 17, in <module>
import zeroconf as r
File "/home/travis/build/jstasiak/python-zeroconf/zeroconf.py", line 35, in <module>
import psutil
File "/home/travis/virtualenv/pypy3-2.4.0/site-packages/psutil/__init__.py", line 62, in <module>
from . import _pslinux as _psplatform
File "/home/travis/virtualenv/pypy3-2.4.0/site-packages/psutil/_pslinux.py", line 23, in <module>
from . import _psutil_linux as cext
ImportError: unable to load extension module
'/home/travis/virtualenv/pypy3-2.4.0/site-packages/psutil/_psutil_linux.pypy3-24.so':
/home/travis/virtualenv/pypy3-2.4.0/site-packages/psutil/_psutil_linux.pypy3-24.so: undefined symbol: PyModule_GetState

Additionally netifaces turns out to be possible to install on Python 3,
therefore making it necessary to investigate the original issue.

This reverts commit dd907f2eed3768a3c1e3889af84b5dbeb700a1e7. ([`6349d19`](https://github.com/python-zeroconf/python-zeroconf/commit/6349d197b442209331a0ff8676541967f7142991))

* fix issue 23 race-condition on ServiceBrowser startup ([`30bd44f`](https://github.com/python-zeroconf/python-zeroconf/commit/30bd44f04f94a9b26622a7213dd9950ae57df21c))

* Switch from netifaces to psutil

netifaces installation on Python 3.x is broken and there doesn't seem to
be any plan to release a working version on PyPI, instead of using its
fork I decided to use another package providing the required
information.

This closes https://github.com/jstasiak/python-zeroconf/issues/31

[1] https://bitbucket.org/al45tair/netifaces/issues/13/0104-install-is-broken-on-python-3x ([`dd907f2`](https://github.com/python-zeroconf/python-zeroconf/commit/dd907f2eed3768a3c1e3889af84b5dbeb700a1e7))

* Fix multicast TTL and LOOP options on OpenBSD

IP_MULTICAST_TTL and IP_MULTICAST_LOOP socket options on OpenBSD don't
accept int, only unsigned char. Otherwise you will get an error:
[Errno 22] Invalid argument. ([`0f46a06`](https://github.com/python-zeroconf/python-zeroconf/commit/0f46a0609931e6dc299c0473312e434e84abe7b0))

0.17.4

Unknown

* Prepare release 0.17.4 ([`0b9093d`](https://github.com/python-zeroconf/python-zeroconf/commit/0b9093de863928d7f13092aaf2be1f0a33f4ead2))

* Support kernel versions <3.9

added catch of OSError
added catch of socket.error for python2 ([`023426e`](https://github.com/python-zeroconf/python-zeroconf/commit/023426e0f8982640f46bca3dfcd3abeee2cb832f))

* Make it explicit who says what in the readme ([`ddb1048`](https://github.com/python-zeroconf/python-zeroconf/commit/ddb10485ef17aec3f37ef70dcb37af167271bfe1))

0.17.3

Unknown

* Make the package's status explicit ([`f29c0f4`](https://github.com/python-zeroconf/python-zeroconf/commit/f29c0f475be76f70ecbb1586deb4618180dd1969))

* Prepare release 0.17.3 ([`9c3a81a`](https://github.com/python-zeroconf/python-zeroconf/commit/9c3a81af84c3450459795e5fc5142300f9680804))

* Add a DNSText __repr__ test

The test helps making sure the situation fixed by
e8299c0527c965f83c1326b18e484652a9eb829c doesn't happen again. ([`c7567d6`](https://github.com/python-zeroconf/python-zeroconf/commit/c7567d6b065d7460e2022b8cde5dd0b52a3828a7))

* Fix DNSText repr Python 3 issue

Prevents following exception:

File "/Users/paulus/dev/python/netdisco/lib/python3.4/site-packages/zeroconf.py", line 412, in __repr__
return self.to_string(self.text[:7] + "...")
TypeError: can't concat bytes to str
([`e8299c0`](https://github.com/python-zeroconf/python-zeroconf/commit/e8299c0527c965f83c1326b18e484652a9eb829c))

0.17.2

Unknown

* Release version 0.17.2 ([`d1ee5ce`](https://github.com/python-zeroconf/python-zeroconf/commit/d1ee5ce7558060ea8d92f804172f67f960f814bb))

* Fix a typo, meant strictly lesser than 0.6 :< ([`dadbbfc`](https://github.com/python-zeroconf/python-zeroconf/commit/dadbbfc9e1787561981807d3e008433a107c1e5e))

* Restrict flake8-import-order version

There seems to be a bug in 0.6.x, see
https://github.com/public/flake8-import-order/issues/42 ([`4435a2a`](https://github.com/python-zeroconf/python-zeroconf/commit/4435a2a4ae1c0b0877785f1a5047f65bb80a14bd))

* Use enum-compat instead of enum34 directly

This is in order for the package's installation to work on Python 3.4+,
solves the same issue as
https://github.com/jstasiak/python-zeroconf/pull/22. ([`ba89455`](https://github.com/python-zeroconf/python-zeroconf/commit/ba894559f43fa6955989b92533c06fd8e8b92c74))

0.17.1

Unknown

* Restrict pep8 version as something depends on it ([`4dbd04b`](https://github.com/python-zeroconf/python-zeroconf/commit/4dbd04b807813384108ff8e4cb5291c2560eed6b))

* Bump version to 0.17.1 ([`0b8936b`](https://github.com/python-zeroconf/python-zeroconf/commit/0b8936b94011c0783c7d0469b9ebae76cd4d1976))

* Fix some typos in the readme ([`7c64ebf`](https://github.com/python-zeroconf/python-zeroconf/commit/7c64ebf6129fb6c0c533a1fed618c9d5926d5100))

* Update README.rst ([`44fa62a`](https://github.com/python-zeroconf/python-zeroconf/commit/44fa62a738335781ecdd789ad636f82e6542ecd2))

* Update README.rst ([`a22484a`](https://github.com/python-zeroconf/python-zeroconf/commit/a22484af90c7c4cbdee849d2b75efab2772c3592))

* Getting an EADDRNOTAVAIL error when adding an address to the multicast group on windows. ([`93d34f9`](https://github.com/python-zeroconf/python-zeroconf/commit/93d34f925cd8913ff6836f9393cdce15679e4794))

Page 38 of 39

Links

Releases

Has known vulnerabilities

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.