# Limitations and known issues

In `configuration` and `normal` modes, Homie for ESP8266 code is designed to be non-blocking, so that you can do other tasks in the main `loop()`. However, the connection to the MQTT broker is blocking during ~5 seconds in case the server is unreachable. This is an Arduino for ESP8266 limitation, and we can't do anything on our side to solve this issue, not even a timeout.

The `OTA` mode is blocking for obvious reason.

# Limitations and known issues

## Blocking Homie code

In `configuration` and `normal` modes, Homie for ESP8266 code is designed to be non-blocking, so that you can do other tasks in the main `loop()`. However, the connection to the MQTT broker is blocking during ~5 seconds in case the server is unreachable. This is an Arduino for ESP8266 limitation, and we can't do anything on our side to solve this issue, not even a timeout.

The `OTA` mode is blocking for obvious reason.

## SSL fingerprint Checking

Adding a TLS fingerprint effectively pins the device to a particular certificate. Furthermore, as currently implemented by `WifiSecureClient`, both `mqtt.host` and `ota.host` are verified against the server certificate's common name (CN) in the certificate subject or in the SANs (subjectAlternateName) contained in it, but not in their IP addresses. For example, if the certificate used by your server looks like this:

```
Subject: CN=tiggr.example.org, OU=generate-CA/emailAddress=nobody@example.net
...
X509v3 Subject Alternative Name:
  IP Address:192.168.1.10, DNS:broker.example.org
```

Enabling fingerprint in Homie will work only if host is set to `tiggr.example.org` or `broker.example.org` and the correct fingerprint is used; setting host to the IP address will cause fingerprint verification to fail.

Add note about fingerprint checking against domain name only
Add note about fingerprint checking against domain name only
