diff options
| author | Remko Tronçon <git@el-tramo.be> | 2012-06-17 08:09:45 (GMT) | 
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2012-06-17 08:09:45 (GMT) | 
| commit | c4b4eeee2433c3b16ed9390d1b7487c2c98aaee3 (patch) | |
| tree | af40d7ef542d9da2f5e7da359ae4d7ffcae5a95b | |
| parent | 334d96a441635113c761534007912a4963cb0e13 (diff) | |
| download | swift-c4b4eeee2433c3b16ed9390d1b7487c2c98aaee3.zip swift-c4b4eeee2433c3b16ed9390d1b7487c2c98aaee3.tar.bz2 | |
Fixed potential uncaught exception in HTTPConnectProxiedConnection.
| -rw-r--r-- | Swiften/Network/HTTPConnectProxiedConnection.cpp | 26 | 
1 files changed, 18 insertions, 8 deletions
| diff --git a/Swiften/Network/HTTPConnectProxiedConnection.cpp b/Swiften/Network/HTTPConnectProxiedConnection.cpp index 7bd7e41..a88ded1 100644 --- a/Swiften/Network/HTTPConnectProxiedConnection.cpp +++ b/Swiften/Network/HTTPConnectProxiedConnection.cpp @@ -61,14 +61,24 @@ void HTTPConnectProxiedConnection::initializeProxy() {  void HTTPConnectProxiedConnection::handleProxyInitializeData(boost::shared_ptr<SafeByteArray> data) {  	SWIFT_LOG(debug) << byteArrayToString(ByteArray(data->begin(), data->end())) << std::endl;  	std::vector<std::string> tmp = String::split(byteArrayToString(ByteArray(data->begin(), data->end())), ' '); -	if(tmp.size() > 1) { -		int status = boost::lexical_cast<int> (tmp[1].c_str());  -		SWIFT_LOG(debug) << "Proxy Status: " << status << std::endl; -		if (status / 100 == 2) { // all 2XX states are OK -			setProxyInitializeFinished(true); -			return; +	if (tmp.size() > 1) { +		try { +			int status = boost::lexical_cast<int>(tmp[1]); +			SWIFT_LOG(debug) << "Proxy Status: " << status << std::endl; +			if (status / 100 == 2) { // all 2XX states are OK +				setProxyInitializeFinished(true); +			} +			else { +				SWIFT_LOG(debug) << "HTTP Proxy returned an error: " << byteArrayToString(ByteArray(data->begin(), data->end())) << std::endl; +				setProxyInitializeFinished(false); +			}  		} -		SWIFT_LOG(debug) << "HTTP Proxy returned an error: " << byteArrayToString(ByteArray(data->begin(), data->end())) << std::endl; +		catch (boost::bad_lexical_cast&) { +			SWIFT_LOG(warning) << "Unexpected response: " << tmp[1] << std::endl; +			setProxyInitializeFinished(false); +		} +	} +	else { +		setProxyInitializeFinished(false);  	} -	setProxyInitializeFinished(false);  } | 
 Swift
 Swift