docs: def _check_tunnel(self, _srv):
          """ Check if tunnel is already established """
          if self.skip_tunnel_checkup:
              self.tunnel_is_up[_srv.local_address] = True
              return
          self.logger.info('Checking tunnel to: {0}'.format(_srv.remote_address))
          if isinstance(_srv.local_address, string_types):  # UNIX stream
              s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
          else:
              s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
          s.settimeout(TUNNEL_TIMEOUT)
          try:
              # Windows raises WinError 10049 if trying to connect to 0.0.0.0
              connect_to = ('127.0.0.1', _srv.local_port) \
                  if _srv.local_host == '0.0.0.0' else _srv.local_address
              s.connect(connect_to)
              self.tunnel_is_up[_srv.local_address] = _srv.tunnel_ok.get(
                  timeout=TUNNEL_TIMEOUT * 1.1
              )
              self.logger.debug(
                  'Tunnel to {0} is DOWN'.format(_srv.remote_address)
              )
          except socket.error:
              self.logger.debug(
                  'Tunnel to {0} is DOWN'.format(_srv.remote_address)
              )
              self.tunnel_is_up[_srv.local_address] = False
  
          except queue.Empty:
              self.logger.debug(
                  'Tunnel to {0} is UP'.format(_srv.remote_address)
              )
              self.tunnel_is_up[_srv.local_address] = True
          finally:
              s.close()