Adding PAC and exclusion list support to BlackBerry Qt proxy implementation.
The additional proxy functionality is only available starting BPS API version 3.1.1. Change-Id: Iadd2950119fa1dca706e8cd34804b038e3f704bc Reviewed-by: Peter Hartmann <phartmann@rim.com>
This commit is contained in:
parent
8c4d02f97a
commit
4b71432987
@ -1560,10 +1560,9 @@ void QNetworkProxyFactory::setApplicationProxyFactory(QNetworkProxyFactory *fact
|
|||||||
\li On Windows platforms, this function may take several seconds to
|
\li On Windows platforms, this function may take several seconds to
|
||||||
execute depending on the configuration of the user's system.
|
execute depending on the configuration of the user's system.
|
||||||
|
|
||||||
\li On BlackBerry, this function ignores network configuration specified
|
\li On BlackBerry, only UrlRequest queries are supported. SOCKS is
|
||||||
in \a query. Only UrlRequest quieries are supported. SOCKS is not supported.
|
not supported. The proxy credentials are only retrieved for the
|
||||||
The proxy information is retrieved only for the default configuration.
|
default configuration.
|
||||||
Also, PAC and exclusion lists are currently not supported.
|
|
||||||
\endlist
|
\endlist
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -79,11 +79,34 @@ QList<QNetworkProxy> QNetworkProxyFactory::systemProxyForQuery(const QNetworkPro
|
|||||||
|
|
||||||
netstatus_proxy_details_t details;
|
netstatus_proxy_details_t details;
|
||||||
memset(&details, 0, sizeof(netstatus_proxy_details_t));
|
memset(&details, 0, sizeof(netstatus_proxy_details_t));
|
||||||
|
|
||||||
|
#if BPS_VERSION >= 3001001
|
||||||
|
|
||||||
|
QByteArray bUrl(url.toEncoded());
|
||||||
|
QString sInterface(query.networkConfiguration().name());
|
||||||
|
QByteArray bInterface;
|
||||||
|
if (!sInterface.isEmpty()) {
|
||||||
|
if (query.networkConfiguration().type() != QNetworkConfiguration::InternetAccessPoint) {
|
||||||
|
qWarning("Unsupported configuration type: %d", query.networkConfiguration().type());
|
||||||
|
return QList<QNetworkProxy>() << QNetworkProxy(QNetworkProxy::NoProxy);
|
||||||
|
}
|
||||||
|
bInterface = sInterface.toUtf8();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (netstatus_get_proxy_details_for_url(bUrl.constData(), (bInterface.isEmpty() ? NULL : bInterface.constData()), &details) != BPS_SUCCESS) {
|
||||||
|
qWarning("netstatus_get_proxy_details_for_url failed! errno: %d", errno);
|
||||||
|
return QList<QNetworkProxy>() << QNetworkProxy(QNetworkProxy::NoProxy);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
if (netstatus_get_proxy_details(&details) != BPS_SUCCESS) {
|
if (netstatus_get_proxy_details(&details) != BPS_SUCCESS) {
|
||||||
qWarning("netstatus_get_proxy_details failed! errno: %d", errno);
|
qWarning("netstatus_get_proxy_details failed! errno: %d", errno);
|
||||||
return QList<QNetworkProxy>() << QNetworkProxy(QNetworkProxy::NoProxy);
|
return QList<QNetworkProxy>() << QNetworkProxy(QNetworkProxy::NoProxy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
if (details.http_proxy_host == NULL) { // No proxy
|
if (details.http_proxy_host == NULL) { // No proxy
|
||||||
netstatus_free_proxy_details(&details);
|
netstatus_free_proxy_details(&details);
|
||||||
return QList<QNetworkProxy>() << QNetworkProxy(QNetworkProxy::NoProxy);
|
return QList<QNetworkProxy>() << QNetworkProxy(QNetworkProxy::NoProxy);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user