on master help sign in
prevent panic when handling an LSP response with no request (#2475)
50dd119Michael Davis
helix-lsp/src/transport.rs+15−14
@@ -215,20 +215,21 @@ impl Transport {
215 }
215 }
216 };
216 };
217
217
218− let tx = self
219− .pending_requests
218+ if let Some(tx) = self.pending_requests.lock().await.remove(&id) {
220− .lock()
221− .await
222− .remove(&id)
223− .expect("pending_request with id not found!");
224−
225− match tx.send(result).await {
219+ match tx.send(result).await {
226− Ok(_) => (),
220+ Ok(_) => (),
227− Err(_) => error!(
221+ Err(_) => error!(
228− "Tried sending response into a closed channel (id={:?}), original request likely timed out",
222+ "Tried sending response into a closed channel (id={:?}), original request likely timed out",
223+ id
224+ ),
225+ };
226+ } else {
227+ log::error!(
228+ "Discarding Language Server response without a request (id={:?}) {:?}",
229− id
229+ id,
230+ result
230− ),
231+ );
231− };
232+ }
232
233
233 Ok(())
234 Ok(())
234 }
235 }