diff options
-rw-r--r-- | meta/recipes-core/meta/cve-update-nvd2-native.bb | 61 |
1 files changed, 34 insertions, 27 deletions
diff --git a/meta/recipes-core/meta/cve-update-nvd2-native.bb b/meta/recipes-core/meta/cve-update-nvd2-native.bb index c85df23f598..6bfdb68ff01 100644 --- a/meta/recipes-core/meta/cve-update-nvd2-native.bb +++ b/meta/recipes-core/meta/cve-update-nvd2-native.bb @@ -117,42 +117,49 @@ def nvd_request_next(url, api_key, args): import urllib.request import urllib.parse + import urllib.error import gzip import http - headers = {} - if api_key: - headers['apiKey'] = api_key + import pysnooper - data = urllib.parse.urlencode(args) + with pysnooper.snoop(bb.plain): + data = urllib.parse.urlencode(args) - full_request = url + '?' + data + full_request = url + '?' + data - for attempt in range(3): - try: - r = urllib.request.urlopen(full_request) + for attempt in range(3): + try: + request = urllib.request.Request(full_request, headers={'apiKey': 'f09ca576-ee21-4a38-b67d-8f2e95dd5c89'}) + r = urllib.request.urlopen(request) - if (r.headers['content-encoding'] == 'gzip'): - buf = r.read() - raw_data = gzip.decompress(buf) + if (r.headers['content-encoding'] == 'gzip'): + buf = r.read() + raw_data = gzip.decompress(buf) + else: + raw_data = r.read().decode("utf-8") + + r.close() + + except UnicodeDecodeError: + # Received garbage, retry + bb.debug(2, "CVE database: received malformed data, retrying (request: %s)" %(full_request)) + pass + except http.client.IncompleteRead: + # Read incomplete, let's try again + bb.debug(2, "CVE database: received incomplete data, retrying (request: %s)" %(full_request)) + pass + except urllib.error.URLError as e: + bb.warn(str(e)) + bb.warn(e.geturl()) + bb.warn(str(e.info())) + bb.warn(str(e.read())) + bb.fatal(str(e)) else: - raw_data = r.read().decode("utf-8") - - r.close() - - except UnicodeDecodeError: - # Received garbage, retry - bb.debug(2, "CVE database: received malformed data, retrying (request: %s)" %(full_request)) - pass - except http.client.IncompleteRead: - # Read incomplete, let's try again - bb.debug(2, "CVE database: received incomplete data, retrying (request: %s)" %(full_request)) - pass + return raw_data else: - return raw_data - else: - # We failed at all attempts - return None + # We failed at all attempts + return None def update_db_file(db_tmp_file, d, database_time): """ |