Browse Source

Merge pull request #11785 from neheb/upnppp

libupnp: do not use usleep
lilik-openwrt-22.03
Rosen Penev 5 years ago
committed by GitHub
parent
commit
243f7eca91
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 61 additions and 1 deletions
  1. +1
    -1
      libs/libupnp/Makefile
  2. +60
    -0
      libs/libupnp/patches/010-Do-not-use-usleep-when-using-newer-POSIX-C-source.patch

+ 1
- 1
libs/libupnp/Makefile View File

@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=libupnp
PKG_VERSION:=1.8.6
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/pupnp


+ 60
- 0
libs/libupnp/patches/010-Do-not-use-usleep-when-using-newer-POSIX-C-source.patch View File

@ -0,0 +1,60 @@
From a346a4d0d732fdca306283c18b404679bbf40427 Mon Sep 17 00:00:00 2001
From: Rosen Penev <rosenp@gmail.com>
Date: Fri, 3 Apr 2020 17:51:45 -0700
Subject: [PATCH] Do not use usleep when using newer POSIX C source.
usleep is deprecated and is optionally unavailable with uClibc-ng.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
(cherry picked from commit c91d82a7b74df3a08de2f94a1ec2a75a7803b6bd)
---
upnp/inc/ithread.h | 10 +++++++++-
upnp/src/genlib/miniserver/miniserver.c | 4 ++--
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/upnp/inc/ithread.h b/upnp/inc/ithread.h
index 38aad3f..cc76440 100644
--- a/upnp/inc/ithread.h
+++ b/upnp/inc/ithread.h
@@ -928,7 +928,15 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
#ifdef _WIN32
#define imillisleep Sleep
#else
- #define imillisleep(x) usleep(1000*x)
+#if _POSIX_C_SOURCE < 200809L
+ #define imillisleep(x) usleep(1000 * x)
+#else
+ #define imillisleep(x) \
+ do { \
+ const struct timespec req = {0, x * 1000 * 1000}; \
+ nanosleep(&req, NULL); \
+ } while(0)
+#endif
#endif
diff --git a/upnp/src/genlib/miniserver/miniserver.c b/upnp/src/genlib/miniserver/miniserver.c
index 9251d5b..31babd0 100644
--- a/upnp/src/genlib/miniserver/miniserver.c
+++ b/upnp/src/genlib/miniserver/miniserver.c
@@ -905,7 +905,7 @@ int StartMiniServer(
count = 0;
while (gMServState != (MiniServerState)MSERV_RUNNING && count < max_count) {
/* 0.05s */
- usleep(50u * 1000u);
+ imillisleep(50);
count++;
}
if (count >= max_count) {
@@ -960,7 +960,7 @@ int StopMiniServer()
ssdpAddr.sin_port = htons(miniStopSockPort);
sendto(sock, buf, bufLen, 0,
(struct sockaddr *)&ssdpAddr, socklen);
- usleep(1000u);
+ imillisleep(1);
if (gMServState == (MiniServerState)MSERV_IDLE) {
break;
}
--
2.25.1

Loading…
Cancel
Save