From 3ad05a076238eda5bcb7c7e30cc762b13b0277fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anthony=20L=C3=A9onard?= <anthony.leonard@savoirfairelinux.com> Date: Tue, 27 Jun 2017 13:59:40 -0400 Subject: [PATCH] contrib: add restbed patch fixing locale issues On MacOS, if the language is set to one not using dots to separate integer and fractional part of a number (like french using a comma), a bad HTTP version is sent when dealing with the name server. It prevents registering a username and using one to add a friend in the contact list. This patch resets the locale to "C" before attempting to convert HTTP version from a double to a char* thus enforcing the use of a dot in the request. The locale is then restored to its old value then preserving any modification done elsewhere. Change-Id: I5b116294c428f626e03885b54950c868211e587e Reviewed-by: Philippe Gorley <philippe.gorley@savoirfairelinux.com> --- contrib/src/restbed/rules.mak | 1 + contrib/src/restbed/string.patch | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 contrib/src/restbed/string.patch diff --git a/contrib/src/restbed/rules.mak b/contrib/src/restbed/rules.mak index 89c6b0d0a6..263f84aa96 100644 --- a/contrib/src/restbed/rules.mak +++ b/contrib/src/restbed/rules.mak @@ -45,6 +45,7 @@ restbed: restbed-$(RESTBED_VERSION).tar.gz $(APPLY) $(SRC)/restbed/strand.patch $(APPLY) $(SRC)/restbed/uri_cpp.patch $(APPLY) $(SRC)/restbed/dns-resolution-error.patch + $(APPLY) $(SRC)/restbed/string.patch $(MOVE) .restbed: restbed toolchain.cmake diff --git a/contrib/src/restbed/string.patch b/contrib/src/restbed/string.patch new file mode 100644 index 0000000000..53b2eb21a7 --- /dev/null +++ b/contrib/src/restbed/string.patch @@ -0,0 +1,25 @@ +--- a/source/corvusoft/restbed/string.cpp 2016-09-14 20:58:54.000000000 -0400 ++++ b/source/corvusoft/restbed/string.cpp 2017-06-27 10:17:55.000000000 -0400 +@@ -7,6 +7,7 @@ + #include <memory> + #include <ciso646> + #include <algorithm> ++#include <cstdlib> + + //Project Includes + #include "corvusoft/restbed/string.hpp" +@@ -161,8 +162,14 @@ + string::size_type String::format( string& output, const string::size_type length, const char* format, va_list arguments ) + { + unique_ptr< char[ ] > formatted( new char[ length + 1 ] ); ++ ++ char* saved_locale = strdup(setlocale(LC_NUMERIC, NULL)); ++ setlocale(LC_NUMERIC, "C"); + + int required_length = vsnprintf( formatted.get( ), length + 1, format, arguments ); ++ ++ setlocale(LC_NUMERIC, saved_locale); ++ free(saved_locale); + + if ( required_length == -1 ) + { -- GitLab