1
mirror of https://github.com/rapid7/metasploit-payloads synced 2025-04-18 07:11:12 +02:00

on exception from URLLib, don't spin 100% cpu

This commit is contained in:
Brent Cook 2017-12-10 11:55:35 -06:00
parent 6ea1e71e14
commit b5372d2a98

@ -642,6 +642,7 @@ class HttpTransport(Transport):
packet = None packet = None
xor_key = None xor_key = None
request = urllib.Request(self.url, None, self._http_request_headers) request = urllib.Request(self.url, None, self._http_request_headers)
try:
url_h = urllib.urlopen(request, timeout=self.communication_timeout) url_h = urllib.urlopen(request, timeout=self.communication_timeout)
packet = url_h.read() packet = url_h.read()
for _ in range(1): for _ in range(1):
@ -655,6 +656,9 @@ class HttpTransport(Transport):
pkt_length = struct.unpack('>I', header[PACKET_LENGTH_OFF:PACKET_LENGTH_OFF+PACKET_LENGTH_SIZE])[0] - 8 pkt_length = struct.unpack('>I', header[PACKET_LENGTH_OFF:PACKET_LENGTH_OFF+PACKET_LENGTH_SIZE])[0] - 8
if len(packet) != (pkt_length + PACKET_HEADER_SIZE): if len(packet) != (pkt_length + PACKET_HEADER_SIZE):
packet = None # looks corrupt packet = None # looks corrupt
except:
debug_traceback('Failure to receive packet from ' + self.url)
if not packet: if not packet:
delay = 10 * self._empty_cnt delay = 10 * self._empty_cnt
if self._empty_cnt >= 0: if self._empty_cnt >= 0:
@ -662,6 +666,7 @@ class HttpTransport(Transport):
self._empty_cnt += 1 self._empty_cnt += 1
time.sleep(float(min(10000, delay)) / 1000) time.sleep(float(min(10000, delay)) / 1000)
return packet return packet
self._empty_cnt = 0 self._empty_cnt = 0
return packet return packet