From 7db63b10e89f31a3da726d1d96f55e28d7c79039 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Sun, 7 Sep 2014 01:11:11 +0200 Subject: [PATCH] Use netifaces for ipaddress iteration --- requirements.txt | 1 + src/octoprint/plugins/discovery/__init__.py | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/requirements.txt b/requirements.txt index 62301f0e..121234d5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,3 +10,4 @@ pyserial netaddr watchdog sarge +netifaces diff --git a/src/octoprint/plugins/discovery/__init__.py b/src/octoprint/plugins/discovery/__init__.py index 71f35ec0..59c6029d 100644 --- a/src/octoprint/plugins/discovery/__init__.py +++ b/src/octoprint/plugins/discovery/__init__.py @@ -174,11 +174,13 @@ class DiscoveryPlugin(octoprint.plugin.types.StartupPlugin, octoprint.plugin.typ def _ssdp_notify(self, port, alive=True): import socket + import netifaces - def interface_addresses(family=socket.AF_INET): - for fam, _, _, _, sockaddr in socket.getaddrinfo('', None): - if family == fam: - yield sockaddr[0] + def interface_addresses(family=netifaces.AF_INET): + for interface in netifaces.interfaces(): + ifaddresses = netifaces.ifaddresses(interface) + if family in ifaddresses: + yield ifaddresses[family] for addr in interface_addresses(): sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)