diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index 84edbb8f494d..19fb9eb415b0 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -1062,11 +1062,11 @@ int Camera::stop()
 
 	LOG(Camera, Debug) << "Stopping capture";
 
-	d->setState(Private::CameraConfigured);
-
 	d->pipe_->invokeMethod(&PipelineHandler::stop, ConnectionTypeBlocking,
 			       this);
 
+	d->setState(Private::CameraConfigured);
+
 	return 0;
 }
 
@@ -1079,6 +1079,12 @@ int Camera::stop()
  */
 void Camera::requestComplete(Request *request)
 {
+	Private *const d = LIBCAMERA_D_PTR();
+
+	int ret = d->isAccessAllowed(Private::CameraRunning);
+	if (ret < 0)
+		LOG(Camera, Fatal) << "Trying to complete a request when Stopped";
+
 	requestCompleted.emit(request);
 }
 
