diff --git a/ietf/doc/views_review.py b/ietf/doc/views_review.py index fe8bc3dcd..c1ba744a7 100644 --- a/ietf/doc/views_review.py +++ b/ietf/doc/views_review.py @@ -687,7 +687,10 @@ def search_mail_archive(request, name, request_id): try: res["messages"] = mailarch.retrieve_messages(res["query_data_url"])[:MAX_RESULTS] except Exception as e: - res["error"] = "Retrieval from mail archive failed: {}".format(unicode(e)) + if unicode(e) == "NONE": + res["error"] = "No results found" + else: + res["error"] = "Retrieval from mail archive failed: {}".format(unicode(e)) # raise # useful when debugging return JsonResponse(res) diff --git a/ietf/review/mailarch.py b/ietf/review/mailarch.py index 70b48cd99..03ca543c8 100644 --- a/ietf/review/mailarch.py +++ b/ietf/review/mailarch.py @@ -4,6 +4,7 @@ import datetime, tarfile, mailbox, tempfile, hashlib, base64, email.utils import urllib import urllib2, contextlib +import re from django.conf import settings @@ -92,6 +93,9 @@ def retrieve_messages(query_data_url): with contextlib.closing(urllib2.urlopen(query_data_url, timeout=15)) as fileobj: content_type = fileobj.info()["Content-type"] if not content_type.startswith("application/x-tar"): + if content_type.startswith("text/html"): + if not re.search("no-results", fileobj.read(20000)) is None: + raise Exception("NONE") raise Exception("Export failed - this usually means no matches were found") with tarfile.open(fileobj=fileobj, mode='r|*') as tar: