vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sat Nov 5 18:26:37 2011 +0200| [29d3ded7194271882f212b83aac232baa15f2939] | committer: Rémi Denis-Courmont
cddb: do not use alarm() It does not work on Windows, and is not thread-safe on Linux. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=29d3ded7194271882f212b83aac232baa15f2939 --- contrib/src/cddb/cddb-no-alarm.patch | 50 ++++++++++++++++++++++++++++++++++ contrib/src/cddb/rules.mak | 1 + 2 files changed, 51 insertions(+), 0 deletions(-) diff --git a/contrib/src/cddb/cddb-no-alarm.patch b/contrib/src/cddb/cddb-no-alarm.patch new file mode 100644 index 0000000..785b883 --- /dev/null +++ b/contrib/src/cddb/cddb-no-alarm.patch @@ -0,0 +1,50 @@ +diff -ru cddb.orig/lib/cddb_net.c cddb/lib/cddb_net.c +--- cddb.orig/lib/cddb_net.c 2011-11-05 18:21:42.000000000 +0200 ++++ cddb/lib/cddb_net.c 2011-11-05 18:22:11.000000000 +0200 +@@ -228,46 +228,9 @@ + + /* Time-out enabled work-alikes */ + +-#ifdef HAVE_ALARM +-/* time-out jump buffer */ +-static jmp_buf timeout_expired; +- +-/* time-out signal handler */ +-static void alarm_handler(int signum) +-{ +- longjmp(timeout_expired, 1); +-} +-#endif +- + struct hostent *timeout_gethostbyname(const char *hostname, int timeout) + { +-#ifdef HAVE_ALARM +- struct hostent *he = NULL; +- struct sigaction action; +- struct sigaction old; +- +- /* no signal before setjmp */ +- alarm(0); +- +- /* register signal handler */ +- memset(&action, 0, sizeof(action)); +- action.sa_handler = alarm_handler; +- sigaction(SIGALRM, &action, &old); +- +- /* save stack state */ +- if (!setjmp(timeout_expired)) { +- alarm(timeout); /* set time-out alarm */ +- he = gethostbyname(hostname); /* execute DNS query */ +- alarm(0); /* reset alarm timer */ +- } else { +- errno = ETIMEDOUT; +- } +- sigaction(SIGALRM, &old, NULL); /* restore previous signal handler */ +- +- return he; +-#else + return gethostbyname(hostname); /* execute DNS query directly */ +-#endif + } + + int timeout_connect(int sockfd, const struct sockaddr *addr, diff --git a/contrib/src/cddb/rules.mak b/contrib/src/cddb/rules.mak index 93063b8..24aee96 100644 --- a/contrib/src/cddb/rules.mak +++ b/contrib/src/cddb/rules.mak @@ -18,6 +18,7 @@ cddb: libcddb-$(CDDB_VERSION).tar.bz2 .sum-cddb $(UNPACK) $(APPLY) $(SRC)/cddb/cross.patch $(APPLY) $(SRC)/cddb/getenv-crash.patch + $(APPLY) $(SRC)/cddb/cddb-no-alarm.patch ifdef HAVE_WIN32 $(APPLY) $(SRC)/cddb/win32-pkg.patch endif _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
