Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Sep 9, 2010, 4:30:50 PM (14 years ago)
Author:
adrfried
Message:

IPv6 for Windows

I have not tested this, please test this and report issues to me.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/ipv6/src/external/enet/unix.c

    r7389 r7390  
    9292}
    9393
    94 
    9594static ENetAddressFamily
    9695enet_address_set_address (ENetAddress * address, const struct sockaddr * sin)
     
    398397enet_socket_wait (ENetSocket socket4, ENetSocket socket6, enet_uint32 * condition, enet_uint32 timeout)
    399398{
    400 //#ifdef HAS_POLL
     399#ifdef HAS_POLL
    401400    struct pollfd pollSocket[2];
    402401    int pollCount;
     
    444443
    445444    return 0;
    446 /*
    447 FIXME: implement or remove this
    448445#else
    449446    fd_set readSet, writeSet;
     
    458455
    459456    if (* condition & ENET_SOCKET_WAIT_SEND)
    460       FD_SET (socket, & writeSet);
     457    {
     458        if (socket4 != ENET_SOCKET_NULL)
     459            FD_SET (socket4, & writeSet);
     460        if (socket6 != ENET_SOCKET_NULL)
     461            FD_SET (socket6, & writeSet);
     462    }
    461463
    462464    if (* condition & ENET_SOCKET_WAIT_RECEIVE)
    463       FD_SET (socket, & readSet);
    464 
    465     selectCount = select (socket + 1, & readSet, & writeSet, NULL, & timeVal);
     465    {
     466        if (socket4 != ENET_SOCKET_NULL)
     467            FD_SET (socket4, & readSet);
     468        if (socket6 != ENET_SOCKET_NULL)
     469            FD_SET (socket6, & readSet);
     470    }
     471
     472    ENetSocket maxSocket = 0;
     473    if (socket4 != ENET_SOCKET_NULL)
     474        maxSocket = socket4;
     475    if (socket6 != ENET_SOCKET_NULL && socket6 > maxSocket)
     476        maxSocket = socket6;
     477
     478    selectCount = select (maxSocket + 1, & readSet, & writeSet, NULL, & timeVal);
    466479
    467480    if (selectCount < 0)
     
    473486      return 0;
    474487
    475     if (FD_ISSET (socket, & writeSet))
    476       * condition |= ENET_SOCKET_WAIT_SEND;
    477 
    478     if (FD_ISSET (socket, & readSet))
    479       * condition |= ENET_SOCKET_WAIT_RECEIVE;
    480 
    481     return 0;
    482 #endif
    483 */
    484 }
    485 
    486 #endif
    487 
     488    if ( (socket4 != ENET_SOCKET_NULL && FD_ISSET (socket4, & writeSet)) ||
     489        (socket6 != ENET_SOCKET_NULL && FD_ISSET (socket6, & writeSet)) )
     490        * condition |= ENET_SOCKET_WAIT_SEND;
     491
     492    if ( (socket4 != ENET_SOCKET_NULL && FD_ISSET (socket4, & readSet)) ||
     493        (socket6 != ENET_SOCKET_NULL && FD_ISSET (socket6, & readSet)) )
     494        * condition |= ENET_SOCKET_WAIT_RECEIVE;
     495
     496    return 0;
     497#endif
     498}
     499
     500#endif
     501
Note: See TracChangeset for help on using the changeset viewer.