'Handles the connection response from the UDP scraper and queries
it immediately for seed/leech data per infohash
:param response: The connection response from the UDP scraper'

def handle_connection_response(self, response):

    if self.is_failed:
        return
    if (len(response) < 16):
        self._logger.error(u'%s    Invalid    response    for    UDP    CONNECT:    %s', self, repr(response))
        self.failed(msg='invalid    response    size')
        return
    (action, transaction_id) = struct.unpack_from('!ii', response, 0)
    if ((action != self._action) or (transaction_id != self._transaction_id)):
        errmsg_length = (len(response) - 8)
        error_message = struct.unpack_from((('!' + str(errmsg_length)) + 's'), response, 8)
        self._logger.info(u'%s    Error    response    for    UDP    CONNECT    [%s]:    %s', self, repr(response), repr(error_message))
        self.failed(msg=''.join(error_message))
        return
    self._connection_id = struct.unpack_from('!q', response, 8)[0]
    self._action = TRACKER_ACTION_SCRAPE
    self.generate_transaction_id()
    fmt = ('!qii' + ('20s' * len(self._infohash_list)))
    message = struct.pack(fmt, self._connection_id, self._action, self._transaction_id, *self._infohash_list)
    self.scraper.write_data(message)
    self._last_contact = int(time.time())
