From b2d3ed74e307e05e67791924c556e1f9907faa5b Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nicolas.pope@utu.fi>
Date: Tue, 10 May 2022 22:10:23 +0100
Subject: [PATCH] Try some reordering

---
 src/peer.cpp | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/src/peer.cpp b/src/peer.cpp
index dab342b..83d722a 100644
--- a/src/peer.cpp
+++ b/src/peer.cpp
@@ -215,13 +215,7 @@ void Peer::close(bool retry) {
 
 void Peer::_close(bool retry) {
 	if (status_ != NodeStatus::kConnected && status_ != NodeStatus::kConnecting) return;
-	status_ = NodeStatus::kDisconnected;
 	
-	if (sock_->is_valid()) {
-		net_->_notifyDisconnect(this);
-		sock_->close();
-	}
-
 	// Attempt auto reconnect?
 	if (retry && can_reconnect_) {
 		status_ = NodeStatus::kReconnecting;
@@ -229,6 +223,11 @@ void Peer::_close(bool retry) {
 	} else {
 		status_ = NodeStatus::kDisconnected;
 	}
+
+	if (sock_->is_valid()) {
+		net_->_notifyDisconnect(this);
+		sock_->close();
+	}
 }
 
 bool Peer::socketError() {
@@ -238,8 +237,8 @@ bool Peer::socketError() {
 	// Must close before log since log may try to send over net causing
 	// more socket errors...
 	
-	_close(reconnect_on_socket_error_);
-	net_->_notifyError(this, ftl::protocol::Error::kSocketError, uri_.to_string()); 
+	net_->_notifyError(this, ftl::protocol::Error::kSocketError, uri_.to_string());
+	_close(reconnect_on_socket_error_); 
 	return true;
 }
 
-- 
GitLab