diff options
Diffstat (limited to 'main/asterisk/fix-strerror_r.patch')
-rw-r--r-- | main/asterisk/fix-strerror_r.patch | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/main/asterisk/fix-strerror_r.patch b/main/asterisk/fix-strerror_r.patch deleted file mode 100644 index 97894309bd..0000000000 --- a/main/asterisk/fix-strerror_r.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 3d7089121731a1122e1306e631adaf5004ac323c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi> -Date: Fri, 11 Nov 2016 08:29:40 +0200 -Subject: [PATCH] addons/chan_mobile: do not use strerror_r - -The two reasons why it might be used are that some systems do not -implement strerror in thread safe manner, and that strerror_r returns -the error code in the string in case there's no error message. - -However, all of asterisk elsewhere uses strerror() and assumes it -to be thread safe. And in chan_mobile the errno is also explicitly -printed so neither of the above reasons are valid. - -The reasoning to remove usage is that there are actually two versions -of strerror_r: XSI and GNU. They are incompatible in their return -value, and there's no easy way to figure out which one is being -used. glibc gives you the GNU version if _GNU_SOURCE is defined, -but the same feature test macro is needed for other symbols. On -all other systems you assumedly get XSI symbol, and compilation warnings -as well as non-working error printing. - -Thus the easiest solution is to just remove strerror_r and use -strerror as rest of the code. Alternative is to introduce ast_strerror -in separate translation unit so it can request the XSI symbol in -glibc case, and replace all usage of strerror. - -Change-Id: I84d35225b5642d85d48bc35fdf399afbae28a91d ---- - addons/chan_mobile.c | 13 +++---------- - 1 file changed, 3 insertions(+), 10 deletions(-) - -diff --git a/addons/chan_mobile.c b/addons/chan_mobile.c -index 64d53b7..8d13c96 100644 ---- a/addons/chan_mobile.c -+++ b/addons/chan_mobile.c -@@ -3855,10 +3855,7 @@ static void *do_monitor_phone(void *data) - } - - if ((at_msg = at_read_full(hfp->rsock, buf, sizeof(buf))) < 0) { -- /* XXX gnu specific strerror_r is assummed here, this -- * is not really safe. See the strerror(3) man page -- * for more info. */ -- ast_debug(1, "[%s] error reading from device: %s (%d)\n", pvt->id, strerror_r(errno, buf, sizeof(buf)), errno); -+ ast_debug(1, "[%s] error reading from device: %s (%d)\n", pvt->id, strerror(errno), errno); - break; - } - -@@ -3995,7 +3992,7 @@ static void *do_monitor_phone(void *data) - ast_debug(1, "[%s] error parsing message\n", pvt->id); - goto e_cleanup; - case AT_READ_ERROR: -- ast_debug(1, "[%s] error reading from device: %s (%d)\n", pvt->id, strerror_r(errno, buf, sizeof(buf)), errno); -+ ast_debug(1, "[%s] error reading from device: %s (%d)\n", pvt->id, strerror(errno), errno); - goto e_cleanup; - default: - break; -@@ -4073,11 +4070,7 @@ static void *do_monitor_headset(void *data) - continue; - - if ((at_msg = at_read_full(pvt->rfcomm_socket, buf, sizeof(buf))) < 0) { -- if (strerror_r(errno, buf, sizeof(buf))) -- ast_debug(1, "[%s] error reading from device\n", pvt->id); -- else -- ast_debug(1, "[%s] error reading from device: %s (%d)\n", pvt->id, buf, errno); -- -+ ast_debug(1, "[%s] error reading from device: %s (%d)\n", pvt->id, strerror(errno), errno); - goto e_cleanup; - } - ast_debug(1, "[%s] %s\n", pvt->id, buf); --- -2.10.2 - |