VirtualBox

Changeset 51635 in vbox for trunk/src/VBox/Runtime


Ignore:
Timestamp:
Jun 17, 2014 3:58:40 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
94391
Message:

introduced RTHttpGetBinary(), renamed RTHttpGet() to RTHttpGetText()

Location:
trunk/src/VBox/Runtime
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/misc/http.cpp

    r46070 r51635  
    6666typedef struct RTHTTPMEMCHUNK
    6767{
    68     char *pszMem;
     68    uint8_t *pu8Mem;
    6969    size_t cb;
    7070} RTHTTPMEMCHUNK;
     
    146146    size_t cbAll = cb * n;
    147147
    148     pMem->pszMem = (char*)RTMemRealloc(pMem->pszMem, pMem->cb + cbAll + 1);
    149     if (pMem->pszMem)
    150     {
    151         memcpy(&pMem->pszMem[pMem->cb], pvBuf, cbAll);
     148    pMem->pu8Mem = (uint8_t*)RTMemRealloc(pMem->pu8Mem, pMem->cb + cbAll + 1);
     149    if (pMem->pu8Mem)
     150    {
     151        memcpy(&pMem->pu8Mem[pMem->cb], pvBuf, cbAll);
    152152        pMem->cb += cbAll;
    153         pMem->pszMem[pMem->cb] = '\0';
     153        pMem->pu8Mem[pMem->cb] = '\0';
    154154    }
    155155    return cbAll;
     
    414414}
    415415
    416 RTR3DECL(int) RTHttpGet(RTHTTP hHttp, const char *pcszUrl, char **ppszResponse)
     416RTR3DECL(int) rtHttpGet(RTHTTP hHttp, const char *pcszUrl, uint8_t **ppvResponse, size_t *pcb)
    417417{
    418418    PRTHTTPINTERNAL pHttpInt = hHttp;
     
    460460    rcCurl = curl_easy_perform(pHttpInt->pCurl);
    461461    int rc = rtHttpGetCalcStatus(pHttpInt, rcCurl);
    462     *ppszResponse = chunk.pszMem;
     462    *ppvResponse = chunk.pu8Mem;
     463    *pcb = chunk.cb;
    463464
    464465    return rc;
     466}
     467
     468
     469RTR3DECL(int) RTHttpGetText(RTHTTP hHttp, const char *pcszUrl, char **ppszResponse)
     470{
     471    uint8_t *pv;
     472    size_t cb;
     473    int rc = rtHttpGet(hHttp, pcszUrl, &pv, &cb);
     474    *ppszResponse = (char*)pv;
     475    return rc;
     476}
     477
     478
     479RTR3DECL(int) RTHttpGetBinary(RTHTTP hHttp, const char *pcszUrl, void **ppvResponse, size_t *pcb)
     480{
     481    return rtHttpGet(hHttp, pcszUrl, (uint8_t**)ppvResponse, pcb);
    465482}
    466483
  • trunk/src/VBox/Runtime/testcase/tstRTHttp.cpp

    r45512 r51635  
    7474    // using an intermediate cert which is signed by old root)
    7575    if (RT_SUCCESS(rc))
    76         rc = RTHttpGet(hHttp,
    77                        "http://www.verisign.com/repository/roots/root-certificates/PCA-3G5.pem",
    78                        &pszBuf);
     76        rc = RTHttpGetText(hHttp,
     77                           "http://www.verisign.com/repository/roots/root-certificates/PCA-3G5.pem",
     78                           &pszBuf);
    7979    if (RT_SUCCESS(rc) && pszBuf)
    8080    {
     
    146146    // fetch root CA certificate (old one, but still very widely used)
    147147    if (RT_SUCCESS(rc))
    148         rc = RTHttpGet(hHttp,
    149                        "http://www.verisign.com/repository/roots/root-certificates/PCA-3.pem",
    150                        &pszBuf);
     148        rc = RTHttpGetText(hHttp,
     149                           "http://www.verisign.com/repository/roots/root-certificates/PCA-3.pem",
     150                           &pszBuf);
    151151    if (RT_SUCCESS(rc) && pszBuf)
    152152    {
     
    227227
    228228    if (RT_SUCCESS(rc))
    229         rc = RTHttpGet(hHttp,
    230                        "https://update.virtualbox.org/query.php?platform=LINUX_32BITS_UBUNTU_12_04&version=4.1.18",
    231                        &pszBuf);
     229        rc = RTHttpGetText(hHttp,
     230                           "https://update.virtualbox.org/query.php?platform=LINUX_32BITS_UBUNTU_12_04&version=4.1.18",
     231                           &pszBuf);
    232232
    233233    if (   RT_FAILURE(rc)
     
    246246    }
    247247
     248    void *u8Buf;
     249    size_t cb;
     250    rc = RTHttpGetBinary(hHttp,
     251                         "http://www.verisign.com/support/roots.zip",
     252                         &u8Buf, &cb);
     253    if (RT_SUCCESS(rc) && u8Buf)
     254    {
     255        RTPrintf("Got file length %zd\n", cb);
     256    }
     257    else
     258        RTPrintf("Error code %Rrc\n", rc);
     259
    248260    RTHttpDestroy(hHttp);
    249261
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette