@@ -293,7 +293,8 @@ def api_call(self, command, payload=None, sid=None, wait_for_task=True, timeout=
293293 "User-Agent" : "python-api-wrapper" ,
294294 "Accept" : "*/*" ,
295295 "Content-Type" : "application/json" ,
296- "Content-Length" : len (_data )
296+ "Content-Length" : len (_data ),
297+ "Connection" : "Keep-Alive"
297298 }
298299
299300 # In all API calls (except for 'login') a header containing the Check Point session-id is required.
@@ -318,6 +319,11 @@ def api_call(self, command, payload=None, sid=None, wait_for_task=True, timeout=
318319 res = APIResponse ("" , False , err_message = err_message )
319320 else :
320321 res = APIResponse ("" , False , err_message = err )
322+ except (http_client .CannotSendRequest , http_client .BadStatusLine ) as e :
323+ self .conn = self .create_https_connection ()
324+ self .conn .request ("POST" , url , _data , _headers )
325+ response = self .conn .getresponse ()
326+ res = APIResponse .from_http_response (response )
321327 except Exception as err :
322328 res = APIResponse ("" , False , err_message = err )
323329 finally :
@@ -461,7 +467,7 @@ def get_server_fingerprint(self):
461467 Initiates an HTTPS connection to the server if need and extracts the SHA1 fingerprint from the server's certificate.
462468 :return: string with SHA1 fingerprint (all uppercase letters)
463469 """
464- conn = self .get_https_connection (set_fingerprint = False , set_debug_level = False )
470+ conn = self .get_https_connection ()
465471 fingerprint_hash = conn .get_fingerprint_hash ()
466472 if not self .single_conn :
467473 conn .close ()
@@ -709,7 +715,7 @@ def read_fingerprint_from_file(server, filename="fingerprints.txt"):
709715 return json_dict [server ]
710716 return ""
711717
712- def create_https_connection (self , set_fingerprint , set_debug_level ):
718+ def create_https_connection (self ):
713719 context = ssl .create_default_context ()
714720 context .check_hostname = False
715721 context .verify_mode = ssl .CERT_NONE
@@ -721,21 +727,19 @@ def create_https_connection(self, set_fingerprint, set_debug_level):
721727 conn = HTTPSConnection (self .server , self .get_port (), context = context )
722728
723729 # Set fingerprint
724- if set_fingerprint :
725- conn .fingerprint = self .fingerprint
730+ conn .fingerprint = self .fingerprint
726731
727732 # Set debug level
728- if set_debug_level :
729- conn .set_debuglevel (self .http_debug_level )
733+ conn .set_debuglevel (self .http_debug_level )
730734 conn .connect ()
731735 return conn
732736
733- def get_https_connection (self , set_fingerprint = True , set_debug_level = True ):
737+ def get_https_connection (self ):
734738 if self .single_conn :
735739 if self .conn is None :
736- self .conn = self .create_https_connection (set_fingerprint , set_debug_level )
740+ self .conn = self .create_https_connection ()
737741 return self .conn
738- return self .create_https_connection (set_fingerprint , set_debug_level )
742+ return self .create_https_connection ()
739743
740744 def close_connection (self ):
741745 if self .conn :
0 commit comments