diff --git a/player.c b/player.c index 43461bf3..803288e6 100644 --- a/player.c +++ b/player.c @@ -2777,6 +2777,7 @@ int player_stop(rtsp_conn_info *conn) { if (conn->player_thread) { debug(2, "player_thread cancel..."); pthread_cancel(*conn->player_thread); + debug(2, "player_thread join..."); pthread_join(*conn->player_thread, NULL); debug(2, "player_thread joined."); free(conn->player_thread); diff --git a/rtsp.c b/rtsp.c index 4446d806..adb2dc50 100644 --- a/rtsp.c +++ b/rtsp.c @@ -2079,9 +2079,11 @@ static void *rtsp_conversation_thread_func(void *pconn) { if (conn->stop == 0) { int err = msg_write_response(conn->fd, resp); if (err) { + int odv = debuglev; + debuglev = 3; debug(1,"A communication error was detected. Closing the play session."); - conn->stop = 1; - pthread_cancel(conn->thread); + player_stop(conn); + debuglev = odv; } } pthread_cleanup_pop(1);