Changeset 85650 in vbox for trunk/src/VBox/Runtime
- Timestamp:
- Aug 8, 2020 2:06:23 PM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 139775
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/generic/http-curl.cpp
r85646 r85650 3556 3556 3557 3557 3558 RTR3DECL(int) RTHttpGetProxyInfoForUrl(RTHTTP hHttp, const char *pcszUrl, PRTHTTPPROXYINFO pProxy) 3559 { 3560 PRTHTTPINTERNAL pThis = hHttp; 3558 RTR3DECL(int) RTHttpQueryProxyInfoForUrl(RTHTTP hHttp, const char *pszUrl, PRTHTTPPROXYINFO pProxy) 3559 { 3560 /* 3561 * Validate input and clear output. 3562 */ 3563 Log(("RTHttpQueryProxyInfoForUrl: hHttp=%p pszUrl=%s pProxy=%s\n", hHttp, pszUrl, pProxy)); 3564 RT_ZERO(*pProxy); 3565 pProxy->uProxyPort = UINT32_MAX; 3566 3567 PRTHTTPINTERNAL pThis = hHttp; 3568 RTHTTP_VALID_RETURN(pThis); 3569 3570 /* 3571 * Set up the proxy for the URL. 3572 */ 3561 3573 rtHttpResetState(pThis); 3562 int rc = rtHttpApplySettings(pThis, pcszUrl); 3563 if (RT_FAILURE(rc)) 3564 return rc; 3565 3566 switch (pThis->enmProxyType) 3567 { 3568 case CURLPROXY_HTTP: 3569 case CURLPROXY_HTTP_1_0: 3570 pProxy->enmProxyType = RTHTTPPROXYTYPE_HTTP; 3571 break; 3574 /** @todo this does a bit too much (we don't need to set up SSL for instance). */ 3575 int rc = rtHttpApplySettings(pThis, pszUrl); 3576 if (RT_SUCCESS(rc)) 3577 { 3578 /* 3579 * Copy out the result. 3580 */ 3581 if (pThis->fNoProxy) 3582 pProxy->enmProxyType = RTHTTPPROXYTYPE_NOPROXY; 3583 else 3584 { 3585 switch (pThis->enmProxyType) 3586 { 3587 case CURLPROXY_HTTP: 3588 #ifdef CURL_AT_LEAST_VERSION 3589 # if CURL_AT_LEAST_VERSION(7,19,4) 3590 case CURLPROXY_HTTP_1_0: 3591 # endif 3592 #endif 3593 pProxy->enmProxyType = RTHTTPPROXYTYPE_HTTP; 3594 break; 3572 3595 #ifdef CURL_AT_LEAST_VERSION 3573 3596 # if CURL_AT_LEAST_VERSION(7,52,0) 3574 case CURLPROXY_HTTPS:3575 pProxy->enmProxyType = RTHTTPPROXYTYPE_HTTPS;3576 break;3597 case CURLPROXY_HTTPS: 3598 pProxy->enmProxyType = RTHTTPPROXYTYPE_HTTPS; 3599 break; 3577 3600 # endif 3578 3601 #endif 3579 case CURLPROXY_SOCKS4: 3580 case CURLPROXY_SOCKS4A: 3581 pProxy->enmProxyType = RTHTTPPROXYTYPE_SOCKS4; 3582 break; 3583 case CURLPROXY_SOCKS5: 3584 case CURLPROXY_SOCKS5_HOSTNAME: 3585 pProxy->enmProxyType = RTHTTPPROXYTYPE_SOCKS5; 3586 break; 3587 default: 3588 pProxy->enmProxyType = RTHTTPPROXYTYPE_UNKNOWN; 3589 break; 3590 } 3591 if (pThis->pszProxyHost == NULL) 3592 return VERR_INTERNAL_ERROR; 3593 pProxy->pszProxyHost = RTStrDup(pThis->pszProxyHost); 3594 pProxy->uProxyPort = pThis->uProxyPort; 3595 pProxy->pszProxyUsername = NULL; 3596 pProxy->pszProxyPassword = NULL; 3597 3598 return VINF_SUCCESS; 3602 case CURLPROXY_SOCKS4: 3603 case CURLPROXY_SOCKS4A: 3604 pProxy->enmProxyType = RTHTTPPROXYTYPE_SOCKS4; 3605 break; 3606 case CURLPROXY_SOCKS5: 3607 case CURLPROXY_SOCKS5_HOSTNAME: 3608 pProxy->enmProxyType = RTHTTPPROXYTYPE_SOCKS5; 3609 break; 3610 default: 3611 AssertFailed(); 3612 pProxy->enmProxyType = RTHTTPPROXYTYPE_UNKNOWN; 3613 break; 3614 } 3615 pProxy->uProxyPort = pThis->uProxyPort; 3616 if (pThis->pszProxyHost != NULL) 3617 { 3618 rc = RTStrDupEx(&pProxy->pszProxyHost, pThis->pszProxyHost); 3619 if (pThis->pszProxyUsername && RT_SUCCESS(rc)) 3620 rc = RTStrDupEx(&pProxy->pszProxyUsername, pThis->pszProxyUsername); 3621 if (pThis->pszProxyPassword && RT_SUCCESS(rc)) 3622 rc = RTStrDupEx(&pProxy->pszProxyPassword, pThis->pszProxyPassword); 3623 if (RT_FAILURE(rc)) 3624 RTHttpFreeProxyInfo(pProxy); 3625 } 3626 else 3627 { 3628 AssertFailed(); 3629 rc = VERR_INTERNAL_ERROR; 3630 } 3631 } 3632 } 3633 return rc; 3599 3634 } 3600 3635 … … 3607 3642 RTStrFree(pProxy->pszProxyUsername); 3608 3643 RTStrFree(pProxy->pszProxyPassword); 3644 pProxy->pszProxyHost = NULL; 3645 pProxy->pszProxyUsername = NULL; 3646 pProxy->pszProxyPassword = NULL; 3647 pProxy->enmProxyType = RTHTTPPROXYTYPE_INVALID; 3648 pProxy->uProxyPort = UINT32_MAX; 3609 3649 } 3610 3650 return VINF_SUCCESS;
Note:
See TracChangeset
for help on using the changeset viewer.