@@ -194,20 +194,31 @@ public function push($documentId, $sessionId, $sessionToken, $version, $steps, $
194194 return new DataResponse ([], 403 );
195195 }
196196 $ session = $ this ->sessionService ->getSession ($ documentId , $ sessionId , $ sessionToken );
197- $ this ->sessionService ->updateSessionAwareness ($ documentId , $ sessionId , $ sessionToken , $ awareness );
197+ if (!$ session ) {
198+ return new DataResponse ([], 403 );
199+ }
200+ try {
201+ $ this ->sessionService ->updateSessionAwareness ($ documentId , $ sessionId , $ sessionToken , $ awareness );
202+ } catch (DoesNotExistException $ e ) {
203+ // Session was removed in the meantime. #3875
204+ return new DataResponse ([], 403 );
205+ }
198206 if (empty ($ steps )) {
199207 return new DataResponse ([]);
200208 }
201209 $ file = $ this ->documentService ->getFileForSession ($ session , $ token );
202- if (!$ this ->documentService ->isReadOnly ($ file , $ token )) {
203- try {
204- $ result = $ this ->documentService ->addStep ($ documentId , $ sessionId , $ steps , $ version );
205- } catch (InvalidArgumentException $ e ) {
206- return new DataResponse ($ e ->getMessage (), 422 );
207- }
208- return new DataResponse ($ result );
210+ if ($ this ->documentService ->isReadOnly ($ file , $ token )) {
211+ return new DataResponse ([], 403 );
212+ }
213+ try {
214+ $ result = $ this ->documentService ->addStep ($ documentId , $ sessionId , $ steps , $ version );
215+ } catch (InvalidArgumentException $ e ) {
216+ return new DataResponse ($ e ->getMessage (), 422 );
217+ } catch (DoesNotExistException $ e ) {
218+ // Session was removed in the meantime. #3875
219+ return new DataResponse ([], 403 );
209220 }
210- return new DataResponse ([], 403 );
221+ return new DataResponse ($ result );
211222 }
212223
213224 public function sync ($ documentId , $ sessionId , $ sessionToken , $ version = 0 , $ autosaveContent = null , $ documentState = null , bool $ force = false , bool $ manualSave = false , $ token = null ): DataResponse {
0 commit comments