code: def _do_timeout_for_query(self, timeout, datapath):
          
          dpid = datapath.id
  
          hub.sleep(timeout)
          outport = self._to_querier[dpid]['port']
  
          remove_dsts = []
          for dst in self._to_hosts[dpid]:
              if not self._to_hosts[dpid][dst]['replied']:
                  # if no REPORT message sent from any members of
                  # the group, remove flow entries about the group and
                  # send a LEAVE message if exists.
                  self._remove_multicast_group(datapath, outport, dst)
                  remove_dsts.append(dst)
  
          for dst in remove_dsts:
              del self._to_hosts[dpid][dst]
docs: the process when the QUERY from the querier timeout expired.