diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java
index 49fcb6d6a..05f678829 100644
--- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java
+++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java
@@ -2013,6 +2013,17 @@ public class CallActivity extends CallBaseActivity {
                 } else {
                     callParticipant.setPeerConnectionWrapper(peerConnectionWrapper);
                 }
+
+                if (!hasExternalSignalingServer) {
+                    OfferAnswerNickProvider offerAnswerNickProvider = offerAnswerNickProviders.get(sessionId);
+                    if ("screen".equals(type)) {
+                        signalingMessageReceiver.addListener(offerAnswerNickProvider.getScreenWebRtcMessageListener(),
+                                                             sessionId, "screen");
+                    } else {
+                        signalingMessageReceiver.addListener(offerAnswerNickProvider.getVideoWebRtcMessageListener(),
+                                                             sessionId, "video");
+                    }
+                }
             }
 
             if (publisher) {
@@ -2037,8 +2048,6 @@ public class CallActivity extends CallBaseActivity {
         if (!hasExternalSignalingServer) {
             OfferAnswerNickProvider offerAnswerNickProvider = new OfferAnswerNickProvider(sessionId);
             offerAnswerNickProviders.put(sessionId, offerAnswerNickProvider);
-            signalingMessageReceiver.addListener(offerAnswerNickProvider.getVideoWebRtcMessageListener(), sessionId, "video");
-            signalingMessageReceiver.addListener(offerAnswerNickProvider.getScreenWebRtcMessageListener(), sessionId, "screen");
         }
 
         final CallParticipantModel callParticipantModel = callParticipant.getCallParticipantModel();
@@ -2074,6 +2083,15 @@ public class CallActivity extends CallBaseActivity {
             }
         }
 
+        if (!hasExternalSignalingServer) {
+            OfferAnswerNickProvider offerAnswerNickProvider = offerAnswerNickProviders.get(sessionId);
+            if ("screen".equals(type)) {
+                signalingMessageReceiver.removeListener(offerAnswerNickProvider.getScreenWebRtcMessageListener());
+            } else {
+                signalingMessageReceiver.removeListener(offerAnswerNickProvider.getVideoWebRtcMessageListener());
+            }
+        }
+
         peerConnectionWrapper.removePeerConnection();
         peerConnectionWrapperList.remove(peerConnectionWrapper);
     }
@@ -2093,11 +2111,7 @@ public class CallActivity extends CallBaseActivity {
         SignalingMessageReceiver.CallParticipantMessageListener listener = callParticipantMessageListeners.remove(sessionId);
         signalingMessageReceiver.removeListener(listener);
 
-        OfferAnswerNickProvider offerAnswerNickProvider = offerAnswerNickProviders.remove(sessionId);
-        if (offerAnswerNickProvider != null) {
-            signalingMessageReceiver.removeListener(offerAnswerNickProvider.getVideoWebRtcMessageListener());
-            signalingMessageReceiver.removeListener(offerAnswerNickProvider.getScreenWebRtcMessageListener());
-        }
+        offerAnswerNickProviders.remove(sessionId);
 
         runOnUiThread(() -> removeParticipantDisplayItem(sessionId, "video"));
     }