diff --git a/src/apps/cam/camera_session.cpp b/src/apps/cam/camera_session.cpp
index 17444a217b..f90800caf8 100644
--- a/src/apps/cam/camera_session.cpp
+++ b/src/apps/cam/camera_session.cpp
@@ -326,7 +326,7 @@ int CameraSession::start()
 			return ret;
 		}
 
-		sink_->requestProcessed.connect(this, &CameraSession::sinkRelease);
+		sink_->requestProcessed.connect(this, &CameraSession::requeueRequest);
 	}
 
 	allocator_ = std::make_unique<FrameBufferAllocator>(camera_);
@@ -542,14 +542,11 @@ void CameraSession::processRequest(Request *request)
 	 * If the frame sink holds on the request, we'll requeue it later in the
 	 * complete handler.
 	 */
-	if (!requeue)
-		return;
-
-	request->reuse(Request::ReuseBuffers);
-	queueRequest(request);
+	if (requeue)
+		requeueRequest(request);
 }
 
-void CameraSession::sinkRelease(Request *request)
+void CameraSession::requeueRequest(Request *request)
 {
 	request->reuse(Request::ReuseBuffers);
 	queueRequest(request);
diff --git a/src/apps/cam/camera_session.h b/src/apps/cam/camera_session.h
index 4442fd9b1a..7ad1b77d62 100644
--- a/src/apps/cam/camera_session.h
+++ b/src/apps/cam/camera_session.h
@@ -55,7 +55,7 @@ private:
 	int queueRequest(libcamera::Request *request);
 	void requestComplete(libcamera::Request *request);
 	void processRequest(libcamera::Request *request);
-	void sinkRelease(libcamera::Request *request);
+	void requeueRequest(libcamera::Request *request);
 
 	const OptionsParser::Options &options_;
 	std::shared_ptr<libcamera::Camera> camera_;
