Merge branch 'bugfix/fix_ci_exception' into 'master'

Fix broken pipe exception in CI for OTA examples

See merge request espressif/esp-idf!8519
This commit is contained in:
Mahavir Jain 2020-05-05 18:08:42 +08:00
commit ce2a99dc23
2 changed files with 56 additions and 2 deletions

View file

@ -95,10 +95,34 @@ def get_ca_cert(ota_image_dir):
return server_file, key_file
def https_request_handler():
"""
Returns a request handler class that handles broken pipe exception
"""
class RequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def finish(self):
try:
if not self.wfile.closed:
self.wfile.flush()
self.wfile.close()
except socket.error:
pass
self.rfile.close()
def handle(self):
try:
BaseHTTPServer.BaseHTTPRequestHandler.handle(self)
except socket.error:
pass
return RequestHandler
def start_https_server(ota_image_dir, server_ip, server_port):
server_file, key_file = get_ca_cert(ota_image_dir)
requestHandler = https_request_handler()
httpd = BaseHTTPServer.HTTPServer((server_ip, server_port),
SimpleHTTPServer.SimpleHTTPRequestHandler)
requestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket,
keyfile=key_file,
@ -123,6 +147,12 @@ def redirect_handler_factory(url):
self.send_header('Location', url)
self.end_headers()
def handle(self):
try:
BaseHTTPServer.BaseHTTPRequestHandler.handle(self)
except socket.error:
pass
return RedirectHandler

View file

@ -95,10 +95,34 @@ def get_ca_cert(ota_image_dir):
return server_file, key_file
def https_request_handler():
"""
Returns a request handler class that handles broken pipe exception
"""
class RequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def finish(self):
try:
if not self.wfile.closed:
self.wfile.flush()
self.wfile.close()
except socket.error:
pass
self.rfile.close()
def handle(self):
try:
BaseHTTPServer.BaseHTTPRequestHandler.handle(self)
except socket.error:
pass
return RequestHandler
def start_https_server(ota_image_dir, server_ip, server_port):
server_file, key_file = get_ca_cert(ota_image_dir)
requestHandler = https_request_handler()
httpd = BaseHTTPServer.HTTPServer((server_ip, server_port),
SimpleHTTPServer.SimpleHTTPRequestHandler)
requestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket,
keyfile=key_file,