diff options
Diffstat (limited to 'Swiften/Network/EnvironmentProxyProvider.cpp')
| -rw-r--r-- | Swiften/Network/EnvironmentProxyProvider.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/Swiften/Network/EnvironmentProxyProvider.cpp b/Swiften/Network/EnvironmentProxyProvider.cpp index 8edb136..65cf4ff 100644 --- a/Swiften/Network/EnvironmentProxyProvider.cpp +++ b/Swiften/Network/EnvironmentProxyProvider.cpp | |||
| @@ -17,6 +17,8 @@ | |||
| 17 | 17 | ||
| 18 | #include <iostream> | 18 | #include <iostream> |
| 19 | 19 | ||
| 20 | #include <boost/numeric/conversion/cast.hpp> | ||
| 21 | |||
| 20 | #include <Swiften/Base/Log.h> | 22 | #include <Swiften/Base/Log.h> |
| 21 | 23 | ||
| 22 | namespace Swift { | 24 | namespace Swift { |
| @@ -38,7 +40,7 @@ HostAddressPort EnvironmentProxyProvider::getSOCKS5Proxy() const { | |||
| 38 | HostAddressPort EnvironmentProxyProvider::getFromEnv(const char* envVarName, std::string proxyProtocol) { | 40 | HostAddressPort EnvironmentProxyProvider::getFromEnv(const char* envVarName, std::string proxyProtocol) { |
| 39 | char* envVar = nullptr; | 41 | char* envVar = nullptr; |
| 40 | std::string address; | 42 | std::string address; |
| 41 | int port = 0; | 43 | unsigned short port = 0; |
| 42 | 44 | ||
| 43 | envVar = getenv(envVarName); | 45 | envVar = getenv(envVarName); |
| 44 | 46 | ||
| @@ -46,7 +48,11 @@ HostAddressPort EnvironmentProxyProvider::getFromEnv(const char* envVarName, std | |||
| 46 | address = envVar != nullptr ? envVar : "0.0.0.0"; | 48 | address = envVar != nullptr ? envVar : "0.0.0.0"; |
| 47 | if(envVar != nullptr && address.compare(0, proxyProtocol.length(), proxyProtocol) == 0) { | 49 | if(envVar != nullptr && address.compare(0, proxyProtocol.length(), proxyProtocol) == 0) { |
| 48 | address = address.substr(proxyProtocol.length(), address.length()); | 50 | address = address.substr(proxyProtocol.length(), address.length()); |
| 49 | port = atoi(address.substr(address.find(':') + 1, address.length()).c_str()); | 51 | try { |
| 52 | port = boost::numeric_cast<unsigned short>(atoi(address.substr(address.find(':') + 1, address.length()).c_str())); | ||
| 53 | } | ||
| 54 | catch (boost::numeric::bad_numeric_cast&) { | ||
| 55 | } | ||
| 50 | address = address.substr(0, address.find(':')); | 56 | address = address.substr(0, address.find(':')); |
| 51 | } | 57 | } |
| 52 | 58 | ||
Swift