From 53553e5a84e9421089c1ea6ef7a1a1ad0a18def0 Mon Sep 17 00:00:00 2001
From: inso <insomniak.fr@gmaiL.com>
Date: Mon, 12 Mar 2018 08:11:44 +0100
Subject: [PATCH] Workaround to asyncio ssl errors

---
 src/sakia/data/connectors/bma.py  |  3 +++
 src/sakia/data/connectors/node.py | 22 ++++++++++++++++++++--
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/src/sakia/data/connectors/bma.py b/src/sakia/data/connectors/bma.py
index 154c5ff5..6515f5d0 100644
--- a/src/sakia/data/connectors/bma.py
+++ b/src/sakia/data/connectors/bma.py
@@ -248,6 +248,9 @@ class BmaConnector:
                     ValueError, jsonschema.ValidationError) as e:
                 self._logger.debug(str(e))
                 tries += 1
+            except AttributeError as e:
+                if ("feed_appdata", "do_handshake") in str(e):
+                    self._logger.debug(str(e))
         raise NoPeerAvailable("", len(endpoints))
 
     async def get(self, currency, request, req_args={}, verify=True):
diff --git a/src/sakia/data/connectors/node.py b/src/sakia/data/connectors/node.py
index ed9ec1b9..ee20a010 100644
--- a/src/sakia/data/connectors/node.py
+++ b/src/sakia/data/connectors/node.py
@@ -126,6 +126,11 @@ class NodeConnector(QObject):
                 pass
             else:
                 raise
+        except AttributeError as e:
+            if ("feed_appdata", "do_handshake") in str(e):
+                self._logger.debug(str(e))
+            else:
+                raise
 
     async def init_session(self):
         if not self.session:
@@ -197,6 +202,11 @@ class NodeConnector(QObject):
                         pass
                     else:
                         raise
+                except AttributeError as e:
+                    if ("feed_appdata", "do_handshake") in str(e):
+                        self._logger.debug(str(e))
+                    else:
+                        raise
                 finally:
                     self._connected['block'] = False
                     self._ws_tasks['block'] = None
@@ -335,6 +345,11 @@ class NodeConnector(QObject):
                         pass
                     else:
                         raise
+                except AttributeError as e:
+                    if ("feed_appdata", "do_handshake") in str(e):
+                        self._logger.debug(str(e))
+                    else:
+                        raise
                 finally:
                     self._connected['peer'] = False
                     self._ws_tasks['peer'] = None
@@ -364,8 +379,11 @@ class NodeConnector(QObject):
                                 break
                             self.refresh_peer_data(leaf_data['leaf']['value'])
                         except (AttributeError, ValueError) as e:
-                            self._logger.debug("Incorrect peer data in {leaf} : {err}".format(leaf=leaf_hash, err=str(e)))
-                            self.handle_failure()
+                            if ("feed_appdata", "do_handshake") in str(e):
+                                self._logger.debug(str(e))
+                            else:
+                                self._logger.debug("Incorrect peer data in {leaf} : {err}".format(leaf=leaf_hash, err=str(e)))
+                                self.handle_failure()
                         except errors.DuniterError as e:
                             if e.ucode == 2012:
                                 # Since with multinodes, peers or not the same on all nodes, sometimes this request results
-- 
GitLab