mirror of
https://github.com/home-assistant/core.git
synced 2025-12-24 12:59:34 +00:00
Removed assumptions about provided upnp data (#17604)
* Removed assumptions about incomplete UPnP devices * Removed assumptions about incomplete UPnP devices
This commit is contained in:
committed by
Martin Hjelmare
parent
9b47af68ae
commit
82edea6077
@@ -1,4 +1,5 @@
|
||||
"""Config flow for UPNP."""
|
||||
import logging
|
||||
from collections import OrderedDict
|
||||
|
||||
import voluptuous as vol
|
||||
@@ -14,6 +15,9 @@ from .const import (
|
||||
from .const import DOMAIN
|
||||
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
async def async_ensure_domain_data(hass):
|
||||
"""Ensure hass.data is filled properly."""
|
||||
hass.data[DOMAIN] = hass.data.get(DOMAIN, {})
|
||||
@@ -70,14 +74,25 @@ class UpnpFlowHandler(data_entry_flow.FlowHandler):
|
||||
"""
|
||||
await async_ensure_domain_data(self.hass)
|
||||
|
||||
if not discovery_info.get('udn') or not discovery_info.get('host'):
|
||||
# Silently ignore incomplete/broken devices to prevent constant
|
||||
# errors/warnings
|
||||
_LOGGER.debug('UPnP device is missing the udn. Provided info: %r',
|
||||
discovery_info)
|
||||
return self.async_abort(reason='incomplete_device')
|
||||
|
||||
# store discovered device
|
||||
discovery_info['friendly_name'] = \
|
||||
'{} ({})'.format(discovery_info['host'], discovery_info['name'])
|
||||
discovery_info['friendly_name'] = discovery_info.get('host', '')
|
||||
|
||||
# add name if available
|
||||
if discovery_info.get('name'):
|
||||
discovery_info['friendly_name'] += ' ({name})'.format(
|
||||
**discovery_info)
|
||||
|
||||
self._store_discovery_info(discovery_info)
|
||||
|
||||
# ensure not already discovered/configured
|
||||
udn = discovery_info['udn']
|
||||
if udn in self._configured_upnp_igds:
|
||||
if discovery_info.get('udn') in self._configured_upnp_igds:
|
||||
return self.async_abort(reason='already_configured')
|
||||
|
||||
# auto config?
|
||||
|
||||
Reference in New Issue
Block a user