fix: WHIP not cleaning up
This commit is contained in:
Generated
+1
-1
@@ -2906,7 +2906,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "server"
|
name = "server"
|
||||||
version = "0.3.0"
|
version = "0.4.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"argon2",
|
"argon2",
|
||||||
"async-broadcast",
|
"async-broadcast",
|
||||||
|
|||||||
@@ -201,7 +201,6 @@ async fn catalog_handler(
|
|||||||
user: x.stream_key_user.clone(),
|
user: x.stream_key_user.clone(),
|
||||||
started_at: x.started_at,
|
started_at: x.started_at,
|
||||||
})
|
})
|
||||||
.into_iter()
|
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
Ok(Json(catalog))
|
Ok(Json(catalog))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ use crate::{
|
|||||||
pub async fn handle_whip_injest_delete(
|
pub async fn handle_whip_injest_delete(
|
||||||
State(state): State<Arc<HttpServer>>,
|
State(state): State<Arc<HttpServer>>,
|
||||||
ConnectInfo(remote): ConnectInfo<SocketAddr>,
|
ConnectInfo(remote): ConnectInfo<SocketAddr>,
|
||||||
|
Path(_slug): Path<String>,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
) -> Result<impl IntoResponse, HttpError> {
|
) -> Result<impl IntoResponse, HttpError> {
|
||||||
let token = headers
|
let token = headers
|
||||||
@@ -44,14 +45,19 @@ pub async fn handle_whip_injest_delete(
|
|||||||
.await?
|
.await?
|
||||||
.ok_or(HttpError::Unauthorized)?;
|
.ok_or(HttpError::Unauthorized)?;
|
||||||
|
|
||||||
let active_session = stream_session::Model::get_active_by_stream_key_id(&state.db, key.id)
|
// The detach task may have already cleaned up the session when ICE
|
||||||
.await?
|
// disconnected (OBS closes the PeerConnection before sending DELETE).
|
||||||
.ok_or(HttpError::NotFound)?;
|
// Deleting an already-gone session is still a successful delete.
|
||||||
|
if let Some(active_session) =
|
||||||
|
stream_session::Model::get_active_by_stream_key_id(&state.db, key.id).await?
|
||||||
|
{
|
||||||
active_session
|
active_session
|
||||||
.into_active_model()
|
.into_active_model()
|
||||||
.finish_stream_session(&state.db, Utc::now())
|
.finish_stream_session(&state.db, Utc::now())
|
||||||
.await?;
|
.await?;
|
||||||
|
}
|
||||||
|
|
||||||
|
state.appstate.lock().await.stream_sessions.remove(&key.id);
|
||||||
|
|
||||||
Ok(StatusCode::OK)
|
Ok(StatusCode::OK)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user