Changeset 9841
- Timestamp:
- Feb 24, 2003, 11:03:58 AM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/src/ws2_32/socket.cpp ¶
r9836 r9841 1 /* $Id: socket.cpp,v 1.1 4 2003-02-22 10:05:41sandervl Exp $ */1 /* $Id: socket.cpp,v 1.15 2003-02-24 10:03:58 sandervl Exp $ */ 2 2 /* 3 3 * based on Windows Sockets 1.1 specs … … 186 186 LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine ) 187 187 { 188 DWORD dwBytesSent, tmpret; 189 DWORD ret = NO_ERROR; 190 191 dprintf(("WSASend %d %x %d %x %x %x %x", s, lpBuffers, dwBufferCount, lpNumberOfBytesSent, dwFlags, lpOverlapped, lpCompletionRoutine)); 192 193 if(lpBuffers == NULL) { 194 WSASetLastError(WSAEINVAL); 195 return SOCKET_ERROR; 196 } 197 if(lpNumberOfBytesSent == NULL) { 198 lpNumberOfBytesSent = &dwBytesSent; 199 } 200 if(!lpOverlapped && !lpCompletionRoutine) 201 { 202 *lpNumberOfBytesSent = 0; 203 204 for(int i=0;i<dwBufferCount;i++) { 205 tmpret = send(s, lpBuffers[i].buf, lpBuffers[i].len, dwFlags); 206 if(tmpret != SOCKET_ERROR) { 207 *lpNumberOfBytesSent += ret; 208 } 209 else { 210 ret = SOCKET_ERROR; 211 break; 212 } 213 } 214 return ret; 215 } 188 216 return WSASendTo ( s, lpBuffers, dwBufferCount, lpNumberOfBytesSent, dwFlags, 189 217 NULL, 0, lpOverlapped, lpCompletionRoutine ); … … 205 233 */ 206 234 int WINAPI WSARecv (SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, 207 LPDWORD NumberOfBytesReceived, LPDWORD lpFlags,235 LPDWORD lpNumberOfBytesReceived, LPDWORD lpFlags, 208 236 LPWSAOVERLAPPED lpOverlapped, 209 237 LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine) 210 238 { 211 return WSARecvFrom (s, lpBuffers, dwBufferCount, NumberOfBytesReceived, lpFlags, 239 DWORD dwBytesReceived, tmpret, flags; 240 DWORD ret = NO_ERROR; 241 242 dprintf(("WSARecv %d %x %d %x %x %x %x", s, lpBuffers, dwBufferCount, lpNumberOfBytesReceived, lpFlags, lpOverlapped, lpCompletionRoutine)); 243 if(lpBuffers == NULL) { 244 WSASetLastError(WSAEINVAL); 245 return SOCKET_ERROR; 246 } 247 if(lpNumberOfBytesReceived == NULL) { 248 lpNumberOfBytesReceived = &dwBytesReceived; 249 } 250 if(lpFlags == NULL) { 251 lpFlags = &flags; 252 flags = 0; 253 } 254 if(!lpOverlapped && !lpCompletionRoutine) 255 { 256 *lpNumberOfBytesReceived = 0; 257 258 for(int i=0;i<dwBufferCount;i++) { 259 tmpret = recv(s, lpBuffers[i].buf, lpBuffers[i].len, *lpFlags); 260 if(tmpret != SOCKET_ERROR) { 261 *lpNumberOfBytesReceived += ret; 262 } 263 else { 264 ret = SOCKET_ERROR; 265 break; 266 } 267 } 268 *lpFlags = 0; //what to do with this? 269 return ret; 270 } 271 return WSARecvFrom (s, lpBuffers, dwBufferCount, lpNumberOfBytesReceived, lpFlags, 212 272 NULL, NULL, lpOverlapped, lpCompletionRoutine); 213 273 }
Note:
See TracChangeset
for help on using the changeset viewer.