code: def send_response(self, transaction):
          
          host, port = transaction.request.source
          key_token = hash(str(host) + str(port) + str(transaction.request.token))
          if (key_token in self._block2_receive and transaction.response.payload is not None) or \
                  (transaction.response.payload is not None and len(transaction.response.payload) > defines.MAX_PAYLOAD):
              if key_token in self._block2_receive:
  
                  byte = self._block2_receive[key_token].byte
                  size = self._block2_receive[key_token].size
                  num = self._block2_receive[key_token].num
  
              else:
                  byte = 0
                  num = 0
                  size = defines.MAX_PAYLOAD
                  m = 1
  
                  self._block2_receive[key_token] = BlockItem(byte, num, m, size)
  
              if len(transaction.response.payload) > (byte + size):
                  m = 1
              else:
                  m = 0
              transaction.response.payload = transaction.response.payload[byte:byte + size]
              del transaction.response.block2
              transaction.response.block2 = (num, m, size)
  
              self._block2_receive[key_token].byte += size
              self._block2_receive[key_token].num += 1
              if m == 0:
                  del self._block2_receive[key_token]
  
          return transaction
docs: Handles the Blocks option in a outgoing response.
  
          :type transaction: Transaction
          :param transaction: the transaction that owns the response
          :rtype : Transaction
          :return: the edited transaction