diff --git a/apps/federation/lib/BackgroundJob/GetSharedSecret.php b/apps/federation/lib/BackgroundJob/GetSharedSecret.php
index 0c621aa40eadf19b9cd9a0bd8ddf291cf5e18152..6090f521fcc273fce6547556965ec77d7aa1595c 100644
--- a/apps/federation/lib/BackgroundJob/GetSharedSecret.php
+++ b/apps/federation/lib/BackgroundJob/GetSharedSecret.php
@@ -198,6 +198,7 @@ class GetSharedSecret extends Job {
 				$this->logger->info($target . ' responded with a ' . $status . ' containing: ' . $e->getMessage(), ['app' => 'federation']);
 			}
 		} catch (ConnectException $e) {
+			$status = -1; // There is no status code if we could not connect
 			$this->logger->info('Could not connect to ' . $target, ['app' => 'federation']);
 		} catch (\Exception $e) {
 			$status = Http::STATUS_INTERNAL_SERVER_ERROR;
diff --git a/apps/federation/lib/BackgroundJob/RequestSharedSecret.php b/apps/federation/lib/BackgroundJob/RequestSharedSecret.php
index 09de76cba95b6d407cedebd38e25dd09e2f5976b..a201c9dccb618580e8a0a699af0166146f097981 100644
--- a/apps/federation/lib/BackgroundJob/RequestSharedSecret.php
+++ b/apps/federation/lib/BackgroundJob/RequestSharedSecret.php
@@ -198,6 +198,7 @@ class RequestSharedSecret extends Job {
 				$this->logger->info($target . ' responded with a ' . $status . ' containing: ' . $e->getMessage(), ['app' => 'federation']);
 			}
 		} catch (ConnectException $e) {
+			$status = -1; // There is no status code if we could not connect
 			$this->logger->info('Could not connect to ' . $target, ['app' => 'federation']);
 		} catch (\Exception $e) {
 			$status = Http::STATUS_INTERNAL_SERVER_ERROR;
diff --git a/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php b/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php
index fca64faebe44b4f1c30e4c7b8f1352ebd4cc99d2..2058b2592c8db9bd85dd939786675f69b84d60b1 100644
--- a/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php
+++ b/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php
@@ -28,6 +28,7 @@
 namespace OCA\Federation\Tests\BackgroundJob;
 
 
+use GuzzleHttp\Exception\ConnectException;
 use OCA\Federation\BackgroundJob\GetSharedSecret;
 use OCA\Files_Sharing\Tests\TestCase;
 use OCA\Federation\DbHandler;
@@ -277,4 +278,41 @@ class GetSharedSecretTest extends TestCase {
 
 		$this->invokePrivate($this->getSharedSecret, 'run', [$argument]);
 	}
+
+	public function testRunConnectionError() {
+		$target = 'targetURL';
+		$source = 'sourceURL';
+		$token = 'token';
+
+		$argument = ['url' => $target, 'token' => $token];
+
+		$this->timeFactory->method('getTime')
+			->willReturn(42);
+
+		$this->urlGenerator
+			->expects($this->once())
+			->method('getAbsoluteURL')
+			->with('/')
+			->willReturn($source);
+		$this->httpClient->expects($this->once())->method('get')
+			->with(
+				$target . '/ocs/v2.php/apps/federation/api/v1/shared-secret?format=json',
+				[
+					'query' =>
+						[
+							'url' => $source,
+							'token' => $token
+						],
+					'timeout' => 3,
+					'connect_timeout' => 3,
+				]
+			)->willThrowException($this->createMock(ConnectException::class));
+
+		$this->dbHandler->expects($this->never())->method('addToken');
+		$this->trustedServers->expects($this->never())->method('addSharedSecret');
+
+		$this->invokePrivate($this->getSharedSecret, 'run', [$argument]);
+
+		$this->assertTrue($this->invokePrivate($this->getSharedSecret, 'retainJob'));
+	}
 }
diff --git a/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php b/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php
index 33133e3b12f57172832c3d6b43399679990d56bf..57a85f1be0b870a03cd8a455fcfca843d99c9642 100644
--- a/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php
+++ b/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php
@@ -27,6 +27,7 @@
 namespace OCA\Federation\Tests\BackgroundJob;
 
 
+use GuzzleHttp\Exception\ConnectException;
 use OCA\Federation\BackgroundJob\RequestSharedSecret;
 use OCA\Federation\DbHandler;
 use OCA\Federation\TrustedServers;
@@ -262,4 +263,41 @@ class RequestSharedSecretTest extends TestCase {
 
 		$this->invokePrivate($this->requestSharedSecret, 'run', [$argument]);
 	}
+
+	public function testRunConnectionError() {
+		$target = 'targetURL';
+		$source = 'sourceURL';
+		$token = 'token';
+
+		$argument = ['url' => $target, 'token' => $token];
+
+		$this->timeFactory->method('getTime')->willReturn(42);
+
+		$this->urlGenerator
+			->expects($this->once())
+			->method('getAbsoluteURL')
+			->with('/')
+			->willReturn($source);
+
+		$this->httpClient
+			->expects($this->once())
+			->method('post')
+			->with(
+				$target . '/ocs/v2.php/apps/federation/api/v1/request-shared-secret?format=json',
+				[
+					'body' =>
+						[
+							'url' => $source,
+							'token' => $token
+						],
+					'timeout' => 3,
+					'connect_timeout' => 3,
+				]
+			)->willThrowException($this->createMock(ConnectException::class));
+
+		$this->dbHandler->expects($this->never())->method('addToken');
+
+		$this->invokePrivate($this->requestSharedSecret, 'run', [$argument]);
+		$this->assertTrue($this->invokePrivate($this->requestSharedSecret, 'retainJob'));
+	}
 }