Changeset 3487 for trunk/src


Ignore:
Timestamp:
May 3, 2000, 8:34:26 PM (25 years ago)
Author:
sandervl
Message:

fix for high addresses & 16 bits tcp/ip stack in setsockopt

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wsock32/wsock32.cpp

    r3472 r3487  
    1 /* $Id: wsock32.cpp,v 1.28 2000-05-02 13:09:44 bird Exp $ */
     1/* $Id: wsock32.cpp,v 1.29 2000-05-03 18:34:26 sandervl Exp $ */
    22
    33/*
     
    845845  int               ret;
    846846  ULONG             size;
    847 
    848    if(!fWSAInitialized) {
    849         WSASetLastError(WSANOTINITIALISED);
    850         return SOCKET_ERROR;
    851    }
    852    else
    853    if(WSAIsBlocking()) {
    854         WSASetLastError(WSAEINPROGRESS);
    855         return SOCKET_ERROR;
    856    }
     847  char             *safeoptval;
     848
     849   if(!fWSAInitialized) {
     850        WSASetLastError(WSANOTINITIALISED);
     851        return SOCKET_ERROR;
     852   }
     853   else
     854   if(WSAIsBlocking()) {
     855        WSASetLastError(WSAEINPROGRESS);
     856        return SOCKET_ERROR;
     857   }
     858   //SvL: The 16 bits TCP/IP stack doesn't like high addresses, so copy
     859   //     the option value(s) on the stack.
     860   safeoptval = (char *)alloca(optlen);
     861   if(safeoptval == NULL) {
     862        DebugInt3();
     863        WSASetLastError(WSAEFAULT);
     864        return SOCKET_ERROR;
     865   }
     866   memcpy(safeoptval, optval, optlen);
     867   optval = safeoptval;
     868
    857869   if (level == SOL_SOCKET) {
    858870        switch(optname) {
Note: See TracChangeset for help on using the changeset viewer.