VirtualBox

Ignore:
Timestamp:
Aug 8, 2008 4:24:48 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
34351
Message:

Devices: pData -> pThis.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Serial/DrvNamedPipe.cpp

    r11267 r11269  
    103103{
    104104    int rc = VINF_SUCCESS;
    105     PDRVNAMEDPIPE pData = PDMISTREAM_2_DRVNAMEDPIPE(pInterface);
    106     LogFlow(("%s: pvBuf=%p cbRead=%#x (%s)\n", __FUNCTION__, pvBuf, cbRead, pData->pszLocation));
     105    PDRVNAMEDPIPE pThis = PDMISTREAM_2_DRVNAMEDPIPE(pInterface);
     106    LogFlow(("%s: pvBuf=%p cbRead=%#x (%s)\n", __FUNCTION__, pvBuf, cbRead, pThis->pszLocation));
    107107
    108108    Assert(pvBuf);
    109109#ifdef RT_OS_WINDOWS
    110     if (pData->NamedPipe != INVALID_HANDLE_VALUE)
     110    if (pThis->NamedPipe != INVALID_HANDLE_VALUE)
    111111    {
    112112        DWORD cbReallyRead;
    113         pData->OverlappedRead.Offset     = 0;
    114         pData->OverlappedRead.OffsetHigh = 0;
    115         if (!ReadFile(pData->NamedPipe, pvBuf, *cbRead, &cbReallyRead, &pData->OverlappedRead))
     113        pThis->OverlappedRead.Offset     = 0;
     114        pThis->OverlappedRead.OffsetHigh = 0;
     115        if (!ReadFile(pThis->NamedPipe, pvBuf, *cbRead, &cbReallyRead, &pThis->OverlappedRead))
    116116        {
    117117            DWORD uError = GetLastError();
     
    133133
    134134                    /* Wait for incoming bytes. */
    135                     if (GetOverlappedResult(pData->NamedPipe, &pData->OverlappedRead, &cbReallyRead, TRUE) == FALSE)
     135                    if (GetOverlappedResult(pThis->NamedPipe, &pThis->OverlappedRead, &cbReallyRead, TRUE) == FALSE)
    136136                        uError = GetLastError();
    137137                }
     
    144144        if (RT_FAILURE(rc))
    145145        {
    146             Log(("drvNamedPipeRead: FileRead returned %Vrc fShutdown=%d\n", rc, pData->fShutdown));
    147             if (    !pData->fShutdown
     146            Log(("drvNamedPipeRead: FileRead returned %Vrc fShutdown=%d\n", rc, pThis->fShutdown));
     147            if (    !pThis->fShutdown
    148148                &&  (   rc == VERR_EOF
    149149                     || rc == VERR_BROKEN_PIPE
     
    152152
    153153            {
    154                 FlushFileBuffers(pData->NamedPipe);
    155                 DisconnectNamedPipe(pData->NamedPipe);
    156                 if (!pData->fIsServer)
     154                FlushFileBuffers(pThis->NamedPipe);
     155                DisconnectNamedPipe(pThis->NamedPipe);
     156                if (!pThis->fIsServer)
    157157                {
    158                     CloseHandle(pData->NamedPipe);
    159                     pData->NamedPipe = INVALID_HANDLE_VALUE;
     158                    CloseHandle(pThis->NamedPipe);
     159                    pThis->NamedPipe = INVALID_HANDLE_VALUE;
    160160                }
    161161                /* pretend success */
     
    167167    }
    168168#else /* !RT_OS_WINDOWS */
    169     if (pData->LocalSocket != NIL_RTSOCKET)
     169    if (pThis->LocalSocket != NIL_RTSOCKET)
    170170    {
    171171        ssize_t cbReallyRead;
    172         cbReallyRead = recv(pData->LocalSocket, pvBuf, *cbRead, 0);
     172        cbReallyRead = recv(pThis->LocalSocket, pvBuf, *cbRead, 0);
    173173        if (cbReallyRead == 0)
    174174        {
    175             RTSOCKET tmp = pData->LocalSocket;
    176             pData->LocalSocket = NIL_RTSOCKET;
     175            RTSOCKET tmp = pThis->LocalSocket;
     176            pThis->LocalSocket = NIL_RTSOCKET;
    177177            close(tmp);
    178178        }
     
    200200{
    201201    int rc = VINF_SUCCESS;
    202     PDRVNAMEDPIPE pData = PDMISTREAM_2_DRVNAMEDPIPE(pInterface);
    203     LogFlow(("%s: pvBuf=%p cbWrite=%#x (%s)\n", __FUNCTION__, pvBuf, cbWrite, pData->pszLocation));
     202    PDRVNAMEDPIPE pThis = PDMISTREAM_2_DRVNAMEDPIPE(pInterface);
     203    LogFlow(("%s: pvBuf=%p cbWrite=%#x (%s)\n", __FUNCTION__, pvBuf, cbWrite, pThis->pszLocation));
    204204
    205205    Assert(pvBuf);
    206206#ifdef RT_OS_WINDOWS
    207     if (pData->NamedPipe != INVALID_HANDLE_VALUE)
     207    if (pThis->NamedPipe != INVALID_HANDLE_VALUE)
    208208    {
    209209        unsigned cbWritten;
    210         pData->OverlappedWrite.Offset     = 0;
    211         pData->OverlappedWrite.OffsetHigh = 0;
    212         if (!WriteFile(pData->NamedPipe, pvBuf, *cbWrite, NULL, &pData->OverlappedWrite))
     210        pThis->OverlappedWrite.Offset     = 0;
     211        pThis->OverlappedWrite.OffsetHigh = 0;
     212        if (!WriteFile(pThis->NamedPipe, pvBuf, *cbWrite, NULL, &pThis->OverlappedWrite))
    213213        {
    214214            DWORD uError = GetLastError();
     
    229229            {
    230230                /* Wait for the write to complete. */
    231                 if (GetOverlappedResult(pData->NamedPipe, &pData->OverlappedWrite, (DWORD *)&cbWritten, TRUE) == FALSE)
     231                if (GetOverlappedResult(pThis->NamedPipe, &pThis->OverlappedWrite, (DWORD *)&cbWritten, TRUE) == FALSE)
    232232                    uError = GetLastError();
    233233            }
     
    241241                ||  rc == VERR_BROKEN_PIPE)
    242242            {
    243                 FlushFileBuffers(pData->NamedPipe);
    244                 DisconnectNamedPipe(pData->NamedPipe);
    245                 if (!pData->fIsServer)
     243                FlushFileBuffers(pThis->NamedPipe);
     244                DisconnectNamedPipe(pThis->NamedPipe);
     245                if (!pThis->fIsServer)
    246246                {
    247                     CloseHandle(pData->NamedPipe);
    248                     pData->NamedPipe = INVALID_HANDLE_VALUE;
     247                    CloseHandle(pThis->NamedPipe);
     248                    pThis->NamedPipe = INVALID_HANDLE_VALUE;
    249249                }
    250250                /* pretend success */
     
    256256    }
    257257#else /* !RT_OS_WINDOWS */
    258     if (pData->LocalSocket != NIL_RTSOCKET)
     258    if (pThis->LocalSocket != NIL_RTSOCKET)
    259259    {
    260260        ssize_t cbWritten;
    261         cbWritten = send(pData->LocalSocket, pvBuf, *cbWrite, 0);
     261        cbWritten = send(pThis->LocalSocket, pvBuf, *cbWrite, 0);
    262262        if (cbWritten == 0)
    263263        {
    264             RTSOCKET tmp = pData->LocalSocket;
    265             pData->LocalSocket = NIL_RTSOCKET;
     264            RTSOCKET tmp = pThis->LocalSocket;
     265            pThis->LocalSocket = NIL_RTSOCKET;
    266266            close(tmp);
    267267        }
     
    316316static DECLCALLBACK(int) drvNamedPipeListenLoop(RTTHREAD ThreadSelf, void *pvUser)
    317317{
    318     PDRVNAMEDPIPE   pData = (PDRVNAMEDPIPE)pvUser;
     318    PDRVNAMEDPIPE   pThis = (PDRVNAMEDPIPE)pvUser;
    319319    int             rc = VINF_SUCCESS;
    320320#ifdef RT_OS_WINDOWS
    321     HANDLE          NamedPipe = pData->NamedPipe;
     321    HANDLE          NamedPipe = pThis->NamedPipe;
    322322    HANDLE          hEvent = CreateEvent(NULL, TRUE, FALSE, 0);
    323323#endif
    324324
    325     while (RT_LIKELY(!pData->fShutdown))
     325    while (RT_LIKELY(!pThis->fShutdown))
    326326    {
    327327#ifdef RT_OS_WINDOWS
     
    333333        BOOL fConnected = ConnectNamedPipe(NamedPipe, &overlapped);
    334334        if (    !fConnected
    335             &&  !pData->fShutdown)
     335            &&  !pThis->fShutdown)
    336336        {
    337337            DWORD hrc = GetLastError();
     
    342342
    343343                hrc = 0;
    344                 if (GetOverlappedResult(pData->NamedPipe, &overlapped, &dummy, TRUE) == FALSE)
     344                if (GetOverlappedResult(pThis->NamedPipe, &overlapped, &dummy, TRUE) == FALSE)
    345345                    hrc = GetLastError();
    346346
    347347            }
    348348
    349             if (pData->fShutdown)
     349            if (pThis->fShutdown)
    350350                break;
    351351
    352352            if (hrc == ERROR_PIPE_CONNECTED)
    353353            {
    354                 RTSemEventWait(pData->ListenSem, 250);
     354                RTSemEventWait(pThis->ListenSem, 250);
    355355            }
    356356            else if (hrc != ERROR_SUCCESS)
    357357            {
    358358                rc = RTErrConvertFromWin32(hrc);
    359                 LogRel(("NamedPipe%d: ConnectNamedPipe failed, rc=%Vrc\n", pData->pDrvIns->iInstance, rc));
     359                LogRel(("NamedPipe%d: ConnectNamedPipe failed, rc=%Vrc\n", pThis->pDrvIns->iInstance, rc));
    360360                break;
    361361            }
    362362        }
    363363#else /* !RT_OS_WINDOWS */
    364         if (listen(pData->LocalSocketServer, 0) == -1)
     364        if (listen(pThis->LocalSocketServer, 0) == -1)
    365365        {
    366366            rc = RTErrConvertFromErrno(errno);
    367             LogRel(("NamedPipe%d: listen failed, rc=%Vrc\n", pData->pDrvIns->iInstance, rc));
     367            LogRel(("NamedPipe%d: listen failed, rc=%Vrc\n", pThis->pDrvIns->iInstance, rc));
    368368            break;
    369369        }
    370         int s = accept(pData->LocalSocketServer, NULL, NULL);
     370        int s = accept(pThis->LocalSocketServer, NULL, NULL);
    371371        if (s == -1)
    372372        {
    373373            rc = RTErrConvertFromErrno(errno);
    374             LogRel(("NamedPipe%d: accept failed, rc=%Vrc\n", pData->pDrvIns->iInstance, rc));
     374            LogRel(("NamedPipe%d: accept failed, rc=%Vrc\n", pThis->pDrvIns->iInstance, rc));
    375375            break;
    376376        }
    377377        else
    378378        {
    379             if (pData->LocalSocket != NIL_RTSOCKET)
    380             {
    381                 LogRel(("NamedPipe%d: only single connection supported\n", pData->pDrvIns->iInstance));
     379            if (pThis->LocalSocket != NIL_RTSOCKET)
     380            {
     381                LogRel(("NamedPipe%d: only single connection supported\n", pThis->pDrvIns->iInstance));
    382382                close(s);
    383383            }
    384384            else
    385                 pData->LocalSocket = s;
     385                pThis->LocalSocket = s;
    386386        }
    387387#endif /* !RT_OS_WINDOWS */
     
    391391    CloseHandle(hEvent);
    392392#endif
    393     pData->ListenThread = NIL_RTTHREAD;
     393    pThis->ListenThread = NIL_RTTHREAD;
    394394    return VINF_SUCCESS;
    395395}
     
    410410    int rc;
    411411    char *pszLocation = NULL;
    412     PDRVNAMEDPIPE pData = PDMINS_2_DATA(pDrvIns, PDRVNAMEDPIPE);
     412    PDRVNAMEDPIPE pThis = PDMINS_2_DATA(pDrvIns, PDRVNAMEDPIPE);
    413413
    414414    /*
    415415     * Init the static parts.
    416416     */
    417     pData->pDrvIns                      = pDrvIns;
    418     pData->pszLocation                  = NULL;
    419     pData->fIsServer                    = false;
    420 #ifdef RT_OS_WINDOWS
    421     pData->NamedPipe                    = INVALID_HANDLE_VALUE;
    422 #else /* !RT_OS_WINDOWS */
    423     pData->LocalSocketServer            = NIL_RTSOCKET;
    424     pData->LocalSocket                  = NIL_RTSOCKET;
    425 #endif /* !RT_OS_WINDOWS */
    426     pData->ListenThread                 = NIL_RTTHREAD;
    427     pData->fShutdown                    = false;
     417    pThis->pDrvIns                      = pDrvIns;
     418    pThis->pszLocation                  = NULL;
     419    pThis->fIsServer                    = false;
     420#ifdef RT_OS_WINDOWS
     421    pThis->NamedPipe                    = INVALID_HANDLE_VALUE;
     422#else /* !RT_OS_WINDOWS */
     423    pThis->LocalSocketServer            = NIL_RTSOCKET;
     424    pThis->LocalSocket                  = NIL_RTSOCKET;
     425#endif /* !RT_OS_WINDOWS */
     426    pThis->ListenThread                 = NIL_RTTHREAD;
     427    pThis->fShutdown                    = false;
    428428    /* IBase */
    429429    pDrvIns->IBase.pfnQueryInterface    = drvNamedPipeQueryInterface;
    430430    /* IStream */
    431     pData->IStream.pfnRead              = drvNamedPipeRead;
    432     pData->IStream.pfnWrite             = drvNamedPipeWrite;
     431    pThis->IStream.pfnRead              = drvNamedPipeRead;
     432    pThis->IStream.pfnWrite             = drvNamedPipeWrite;
    433433
    434434    /*
     
    447447        goto out;
    448448    }
    449     pData->pszLocation = pszLocation;
     449    pThis->pszLocation = pszLocation;
    450450
    451451    bool fIsServer;
     
    456456        goto out;
    457457    }
    458     pData->fIsServer = fIsServer;
     458    pThis->fIsServer = fIsServer;
    459459
    460460#ifdef RT_OS_WINDOWS
    461461    if (fIsServer)
    462462    {
    463         HANDLE hPipe = CreateNamedPipe(pData->pszLocation, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT, 1, 32, 32, 10000, NULL);
     463        HANDLE hPipe = CreateNamedPipe(pThis->pszLocation, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT, 1, 32, 32, 10000, NULL);
    464464        if (hPipe == INVALID_HANDLE_VALUE)
    465465        {
    466466            rc = RTErrConvertFromWin32(GetLastError());
    467             LogRel(("NamedPipe%d: CreateNamedPipe failed rc=%Vrc\n", pData->pDrvIns->iInstance));
     467            LogRel(("NamedPipe%d: CreateNamedPipe failed rc=%Vrc\n", pThis->pDrvIns->iInstance));
    468468            return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, N_("NamedPipe#%d failed to create named pipe %s"), pDrvIns->iInstance, pszLocation);
    469469        }
    470         pData->NamedPipe = hPipe;
    471 
    472         rc = RTSemEventCreate(&pData->ListenSem);
     470        pThis->NamedPipe = hPipe;
     471
     472        rc = RTSemEventCreate(&pThis->ListenSem);
    473473        AssertRC(rc);
    474474
    475         rc = RTThreadCreate(&pData->ListenThread, drvNamedPipeListenLoop, (void *)pData, 0, RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "SerPipe");
     475        rc = RTThreadCreate(&pThis->ListenThread, drvNamedPipeListenLoop, (void *)pThis, 0, RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "SerPipe");
    476476        if RT_FAILURE(rc)
    477477            return PDMDrvHlpVMSetError(pDrvIns, rc,  RT_SRC_POS, N_("NamedPipe#%d failed to create listening thread"), pDrvIns->iInstance);
     
    481481    {
    482482        /* Connect to the named pipe. */
    483         HANDLE hPipe = CreateFile(pData->pszLocation, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
     483        HANDLE hPipe = CreateFile(pThis->pszLocation, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
    484484        if (hPipe == INVALID_HANDLE_VALUE)
    485485        {
    486486            rc = RTErrConvertFromWin32(GetLastError());
    487             LogRel(("NamedPipe%d: CreateFile failed rc=%Vrc\n", pData->pDrvIns->iInstance));
     487            LogRel(("NamedPipe%d: CreateFile failed rc=%Vrc\n", pThis->pDrvIns->iInstance));
    488488            return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, N_("NamedPipe#%d failed to connect to named pipe %s"), pDrvIns->iInstance, pszLocation);
    489489        }
    490         pData->NamedPipe = hPipe;
    491     }
    492 
    493     memset(&pData->OverlappedWrite, 0, sizeof(pData->OverlappedWrite));
    494     memset(&pData->OverlappedRead, 0, sizeof(pData->OverlappedRead));
    495     pData->OverlappedWrite.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
    496     pData->OverlappedRead.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
     490        pThis->NamedPipe = hPipe;
     491    }
     492
     493    memset(&pThis->OverlappedWrite, 0, sizeof(pThis->OverlappedWrite));
     494    memset(&pThis->OverlappedRead, 0, sizeof(pThis->OverlappedRead));
     495    pThis->OverlappedWrite.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
     496    pThis->OverlappedRead.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
    497497#else /* !RT_OS_WINDOWS */
    498498    int s;
     
    512512        if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) == -1)
    513513            return PDMDrvHlpVMSetError(pDrvIns, RTErrConvertFromErrno(errno), RT_SRC_POS, N_("NamedPipe#%d failed to bind to local socket %s"), pDrvIns->iInstance, pszLocation);
    514         pData->LocalSocketServer = s;
    515         rc = RTThreadCreate(&pData->ListenThread, drvNamedPipeListenLoop, (void *)pData, 0, RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "SerPipe");
     514        pThis->LocalSocketServer = s;
     515        rc = RTThreadCreate(&pThis->ListenThread, drvNamedPipeListenLoop, (void *)pThis, 0, RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "SerPipe");
    516516        if RT_FAILURE(rc)
    517517            return PDMDrvHlpVMSetError(pDrvIns, rc,  RT_SRC_POS, N_("NamedPipe#%d failed to create listening thread"), pDrvIns->iInstance);
     
    522522        if (connect(s, (struct sockaddr *)&addr, sizeof(addr)) == -1)
    523523            return PDMDrvHlpVMSetError(pDrvIns, RTErrConvertFromErrno(errno), RT_SRC_POS, N_("NamedPipe#%d failed to connect to local socket %s"), pDrvIns->iInstance, pszLocation);
    524         pData->LocalSocket = s;
     524        pThis->LocalSocket = s;
    525525    }
    526526#endif /* !RT_OS_WINDOWS */
     
    550550static DECLCALLBACK(void) drvNamedPipeDestruct(PPDMDRVINS pDrvIns)
    551551{
    552     PDRVNAMEDPIPE pData = PDMINS_2_DATA(pDrvIns, PDRVNAMEDPIPE);
    553     LogFlow(("%s: %s\n", __FUNCTION__, pData->pszLocation));
    554 
    555     if (pData->ListenThread)
    556     {
    557         RTThreadWait(pData->ListenThread, 250, NULL);
    558         if (pData->ListenThread != NIL_RTTHREAD)
     552    PDRVNAMEDPIPE pThis = PDMINS_2_DATA(pDrvIns, PDRVNAMEDPIPE);
     553    LogFlow(("%s: %s\n", __FUNCTION__, pThis->pszLocation));
     554
     555    if (pThis->ListenThread)
     556    {
     557        RTThreadWait(pThis->ListenThread, 250, NULL);
     558        if (pThis->ListenThread != NIL_RTTHREAD)
    559559            LogRel(("NamedPipe%d: listen thread did not terminate\n", pDrvIns->iInstance));
    560560    }
    561561
    562     if (pData->pszLocation)
    563         MMR3HeapFree(pData->pszLocation);
     562    if (pThis->pszLocation)
     563        MMR3HeapFree(pThis->pszLocation);
    564564}
    565565
     
    574574static DECLCALLBACK(void) drvNamedPipePowerOff(PPDMDRVINS pDrvIns)
    575575{
    576     PDRVNAMEDPIPE pData = PDMINS_2_DATA(pDrvIns, PDRVNAMEDPIPE);
    577     LogFlow(("%s: %s\n", __FUNCTION__, pData->pszLocation));
    578 
    579     pData->fShutdown = true;
    580 
    581 #ifdef RT_OS_WINDOWS
    582     if (pData->NamedPipe != INVALID_HANDLE_VALUE)
    583     {
    584         if (pData->fIsServer)
    585         {
    586             FlushFileBuffers(pData->NamedPipe);
    587             DisconnectNamedPipe(pData->NamedPipe);
    588         }
    589 
    590         CloseHandle(pData->NamedPipe);
    591         pData->NamedPipe = INVALID_HANDLE_VALUE;
    592         CloseHandle(pData->OverlappedRead.hEvent);
    593         CloseHandle(pData->OverlappedWrite.hEvent);
    594     }
    595     if (pData->fIsServer)
     576    PDRVNAMEDPIPE pThis = PDMINS_2_DATA(pDrvIns, PDRVNAMEDPIPE);
     577    LogFlow(("%s: %s\n", __FUNCTION__, pThis->pszLocation));
     578
     579    pThis->fShutdown = true;
     580
     581#ifdef RT_OS_WINDOWS
     582    if (pThis->NamedPipe != INVALID_HANDLE_VALUE)
     583    {
     584        if (pThis->fIsServer)
     585        {
     586            FlushFileBuffers(pThis->NamedPipe);
     587            DisconnectNamedPipe(pThis->NamedPipe);
     588        }
     589
     590        CloseHandle(pThis->NamedPipe);
     591        pThis->NamedPipe = INVALID_HANDLE_VALUE;
     592        CloseHandle(pThis->OverlappedRead.hEvent);
     593        CloseHandle(pThis->OverlappedWrite.hEvent);
     594    }
     595    if (pThis->fIsServer)
    596596    {
    597597        /* Wake up listen thread */
    598         RTSemEventSignal(pData->ListenSem);
    599         RTSemEventDestroy(pData->ListenSem);
    600     }
    601 #else /* !RT_OS_WINDOWS */
    602     if (pData->fIsServer)
    603     {
    604         if (pData->LocalSocketServer != NIL_RTSOCKET)
    605             close(pData->LocalSocketServer);
    606         if (pData->pszLocation)
    607             RTFileDelete(pData->pszLocation);
     598        RTSemEventSignal(pThis->ListenSem);
     599        RTSemEventDestroy(pThis->ListenSem);
     600    }
     601#else /* !RT_OS_WINDOWS */
     602    if (pThis->fIsServer)
     603    {
     604        if (pThis->LocalSocketServer != NIL_RTSOCKET)
     605            close(pThis->LocalSocketServer);
     606        if (pThis->pszLocation)
     607            RTFileDelete(pThis->pszLocation);
    608608    }
    609609    else
    610610    {
    611         if (pData->LocalSocket != NIL_RTSOCKET)
    612             close(pData->LocalSocket);
     611        if (pThis->LocalSocket != NIL_RTSOCKET)
     612            close(pThis->LocalSocket);
    613613    }
    614614#endif /* !RT_OS_WINDOWS */
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