Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
VLCKit
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Monitor
Service Desk
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Reid Ellis
VLCKit
Commits
efb38477
Commit
efb38477
authored
1 year ago
by
Felix Paul Kühne
Browse files
Options
Downloads
Patches
Plain Diff
libvlc: add potential fix for the UPnP busy loop
parent
a930de5e
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
libvlc/patches/0048-contrib-upnp-add-patch-to-fix-potential-busyloop.patch
+129
-0
129 additions, 0 deletions
...48-contrib-upnp-add-patch-to-fix-potential-busyloop.patch
with
129 additions
and
0 deletions
libvlc/patches/0048-contrib-upnp-add-patch-to-fix-potential-busyloop.patch
0 → 100644
+
129
−
0
View file @
efb38477
From ee902bf144037dd9181b3098e805cf65a1c81f98 Mon Sep 17 00:00:00 2001
From: Thomas Guillem <thomas@gllm.fr>
Date: Thu, 29 Jun 2023 13:37:29 +0200
Subject: [PATCH 48/48] contrib: upnp: add patch to fix potential busyloop
Not tested.
---
.../upnp/0001-miniserver-fix-busy-loop.patch | 96 +++++++++++++++++++
contrib/src/upnp/rules.mak | 1 +
2 files changed, 97 insertions(+)
create mode 100644 contrib/src/upnp/0001-miniserver-fix-busy-loop.patch
diff --git a/contrib/src/upnp/0001-miniserver-fix-busy-loop.patch b/contrib/src/upnp/0001-miniserver-fix-busy-loop.patch
new file mode 100644
index 0000000000..75d4381c3c
--- /dev/null
+++ b/contrib/src/upnp/0001-miniserver-fix-busy-loop.patch
@@ -0,0 +1,96 @@
+From f6c862ef0e80a9de91545cf8bc21dc5aabbbea3d Mon Sep 17 00:00:00 2001
+From: Thomas Guillem <thomas@gllm.fr>
+Date: Thu, 29 Jun 2023 13:34:13 +0200
+Subject: [PATCH] miniserver: fix busy loop
+
+---
+ upnp/src/genlib/miniserver/miniserver.c | 20 ++++++++++++--------
+ upnp/src/inc/ssdplib.h | 4 +++-
+ upnp/src/ssdp/ssdp_server.c | 7 +++++--
+ 3 files changed, 20 insertions(+), 11 deletions(-)
+
+diff --git a/upnp/src/genlib/miniserver/miniserver.c b/upnp/src/genlib/miniserver/miniserver.c
+index cffe7984..a91a7e60 100644
+--- a/upnp/src/genlib/miniserver/miniserver.c
++++ b/upnp/src/genlib/miniserver/miniserver.c
+@@ -537,10 +537,14 @@ static void web_server_accept(SOCKET lsock, fd_set *set)
+ #endif /* INTERNAL_WEB_SERVER */
+ }
+
+-static void ssdp_read(SOCKET rsock, fd_set *set)
++static void ssdp_read(SOCKET *rsock, fd_set *set)
+ {
+- if (rsock != INVALID_SOCKET && FD_ISSET(rsock, set)) {
+- readFromSSDPSocket(rsock);
++ if (*rsock != INVALID_SOCKET && FD_ISSET(*rsock, set)) {
++ int ret = readFromSSDPSocket(*rsock);
++ if (ret != 0) {
++ sock_close(*rsock);
++ *rsock = INVALID_SOCKET;
++ }
+ }
+ }
+
+@@ -658,12 +662,12 @@ static void RunMiniServer(
+ web_server_accept(
+ miniSock->miniServerSock6UlaGua, &rdSet);
+ #ifdef INCLUDE_CLIENT_APIS
+- ssdp_read(miniSock->ssdpReqSock4, &rdSet);
+- ssdp_read(miniSock->ssdpReqSock6, &rdSet);
++ ssdp_read(&miniSock->ssdpReqSock4, &rdSet);
++ ssdp_read(&miniSock->ssdpReqSock6, &rdSet);
+ #endif /* INCLUDE_CLIENT_APIS */
+- ssdp_read(miniSock->ssdpSock4, &rdSet);
+- ssdp_read(miniSock->ssdpSock6, &rdSet);
+- ssdp_read(miniSock->ssdpSock6UlaGua, &rdSet);
++ ssdp_read(&miniSock->ssdpSock4, &rdSet);
++ ssdp_read(&miniSock->ssdpSock6, &rdSet);
++ ssdp_read(&miniSock->ssdpSock6UlaGua, &rdSet);
+ stopSock = receive_from_stopSock(
+ miniSock->miniServerStopSock, &rdSet);
+ }
+diff --git a/upnp/src/inc/ssdplib.h b/upnp/src/inc/ssdplib.h
+index 64f500c8..3578a245 100644
+--- a/upnp/src/inc/ssdplib.h
++++ b/upnp/src/inc/ssdplib.h
+@@ -239,8 +239,10 @@ int ssdp_request_type(
+
+ /*!
+ * \brief This function reads the data from the ssdp socket.
++ *
++ * \return 0 on success; -1 on error.
+ */
+-void readFromSSDPSocket(
++int readFromSSDPSocket(
+ /* [in] SSDP socket. */
+ SOCKET socket);
+
+diff --git a/upnp/src/ssdp/ssdp_server.c b/upnp/src/ssdp/ssdp_server.c
+index 728f543d..c4f23f40 100644
+--- a/upnp/src/ssdp/ssdp_server.c
++++ b/upnp/src/ssdp/ssdp_server.c
+@@ -805,7 +805,7 @@ static void ssdp_event_handler_thread(
+ free_ssdp_event_handler_data(data);
+ }
+
+-void readFromSSDPSocket(SOCKET socket)
++int readFromSSDPSocket(SOCKET socket)
+ {
+ char *requestBuf = NULL;
+ char staticBuf[BUFSIZE];
+@@ -896,8 +896,11 @@ void readFromSSDPSocket(SOCKET socket)
+ if (ThreadPoolAdd(&gRecvThreadPool, &job, NULL) != 0)
+ free_ssdp_event_handler_data(data);
+ }
+- } else
++ return 0;
++ } else {
+ free_ssdp_event_handler_data(data);
++ return -1;
++ }
+ }
+
+ /*!
+--
+2.39.2
+
diff --git a/contrib/src/upnp/rules.mak b/contrib/src/upnp/rules.mak
index 54202e106f..8167611fd7 100644
--- a/contrib/src/upnp/rules.mak
+++ b/contrib/src/upnp/rules.mak
@@ -56,6 +56,7 @@
endif
ifdef HAVE_IOS
$(APPLY) $(SRC)/upnp/fix-reuseaddr-option.patch
endif
+ $(APPLY) $(SRC)/upnp/0001-miniserver-fix-busy-loop.patch
$(UPDATE_AUTOCONFIG)
$(MOVE)
--
2.32.1 (Apple Git-133)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment