diff --git a/src/box/applier.cc b/src/box/applier.cc index a8b2f61ef094aecf620b3f3735fed14b4e603942..f30d9f2f77158a7ac30dad7058850d4727b7f7ab 100644 --- a/src/box/applier.cc +++ b/src/box/applier.cc @@ -60,6 +60,7 @@ #include "small/static.h" #include "tt_static.h" #include "memory.h" +#include "ssl_error.h" STRS(applier_state, applier_STATE); @@ -119,6 +120,7 @@ applier_log_error(struct applier *applier, struct error *e) case ER_ACCESS_DENIED: case ER_NO_SUCH_USER: case ER_SYSTEM: + case ER_SSL: case ER_UNKNOWN_REPLICA: case ER_PASSWORD_MISMATCH: case ER_XLOG_GAP: @@ -2186,7 +2188,8 @@ applier_f(va_list ap) applier_log_error(applier, e); applier_disconnect(applier, APPLIER_LOADING); goto reconnect; - } else if (e->errcode() == ER_SYSTEM) { + } else if (e->errcode() == ER_SYSTEM || + e->errcode() == ER_SSL) { /* System error from master instance. */ applier_log_error(applier, e); applier_disconnect(applier, APPLIER_DISCONNECTED); @@ -2239,6 +2242,10 @@ applier_f(va_list ap) applier_log_error(applier, e); applier_disconnect(applier, APPLIER_DISCONNECTED); goto reconnect; + } catch (SSLError *e) { + applier_log_error(applier, e); + applier_disconnect(applier, APPLIER_DISCONNECTED); + goto reconnect; } catch (Exception *e) { applier_log_error(applier, e); applier_disconnect(applier, APPLIER_STOPPED);