Changeset 3472 for trunk/src/wsock32/wsock32.cpp
- Timestamp:
- May 2, 2000, 3:09:44 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wsock32/wsock32.cpp
r3282 r3472 1 /* $Id: wsock32.cpp,v 1.2 7 2000-03-30 20:52:56 sandervlExp $ */1 /* $Id: wsock32.cpp,v 1.28 2000-05-02 13:09:44 bird Exp $ */ 2 2 3 3 /* … … 63 63 #include "dbglocal.h" 64 64 65 //kso: dirty fix to make this compile! not permanent! 66 BOOL WINAPI QueryPerformanceCounter(LARGE_INTEGER *p); 67 #define LowPart u.LowPart 68 65 69 66 70 ODINDEBUGCHANNEL(WSOCK32-WSOCK32) … … 105 109 { 106 110 LPWSINFO iData; 107 111 108 112 iData = (LPWSINFO)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WSINFO)); 109 113 if (!iData) … … 122 126 if (iData) { 123 127 ppid = lpFirstIData; 124 while(ppid) 128 while(ppid) 125 129 { 126 130 iData = ppid; … … 171 175 WSASetLastError(WSANOTINITIALISED); 172 176 return SOCKET_ERROR; 173 } 174 else 175 if(WSAIsBlocking()) { 176 WSASetLastError(WSAEINPROGRESS); 177 return SOCKET_ERROR; 178 } 177 } 178 else 179 if(WSAIsBlocking()) { 180 WSASetLastError(WSAEINPROGRESS); 181 return SOCKET_ERROR; 182 } 179 183 ret = shutdown(s, how); 180 184 181 185 if(ret == SOCKET_ERROR) { 182 186 WSASetLastError(wsaErrno()); … … 197 201 WSASetLastError(WSANOTINITIALISED); 198 202 return SOCKET_ERROR; 199 } 200 else 201 if(WSAIsBlocking()) { 202 WSASetLastError(WSAEINPROGRESS); 203 return SOCKET_ERROR; 204 } 203 } 204 else 205 if(WSAIsBlocking()) { 206 WSASetLastError(WSAEINPROGRESS); 207 return SOCKET_ERROR; 208 } 205 209 s = socket(af, type, protocol); 206 210 207 211 if(s == SOCKET_ERROR && sock_errno() == SOCEPFNOSUPPORT) { 208 212 //map SOCEPFNOSUPPORT to SOCEPFNOSUPPORT … … 225 229 WSASetLastError(WSANOTINITIALISED); 226 230 return SOCKET_ERROR; 227 } 228 else 229 if(WSAIsBlocking()) { 230 WSASetLastError(WSAEINPROGRESS); 231 return SOCKET_ERROR; 232 } 231 } 232 else 233 if(WSAIsBlocking()) { 234 WSASetLastError(WSAEINPROGRESS); 235 return SOCKET_ERROR; 236 } 233 237 ret = soclose(s); 234 238 //Close WSAAsyncSelect thread if one was created for this socket 235 239 FindAndSetAsyncEvent(s, 0, 0, 0); 236 240 237 241 if(ret == SOCKET_ERROR) { 238 242 WSASetLastError(wsaErrno()); … … 253 257 WSASetLastError(WSANOTINITIALISED); 254 258 return SOCKET_ERROR; 255 } 256 else 257 if(WSAIsBlocking()) { 258 WSASetLastError(WSAEINPROGRESS); 259 return SOCKET_ERROR; 260 } 259 } 260 else 261 if(WSAIsBlocking()) { 262 WSASetLastError(WSAEINPROGRESS); 263 return SOCKET_ERROR; 264 } 261 265 ret = connect(s, (sockaddr *)name, namelen); 262 266 // map BSD error codes … … 268 272 if(sockerror == SOCEINPROGRESS) { 269 273 WSASetLastError(WSAEWOULDBLOCK); 270 } 271 else 274 } 275 else 272 276 if(sockerror == SOCEOPNOTSUPP) { 273 277 WSASetLastError(WSAEINVAL); … … 290 294 WSASetLastError(WSANOTINITIALISED); 291 295 return SOCKET_ERROR; 292 } 293 else 294 if(WSAIsBlocking()) { 295 WSASetLastError(WSAEINPROGRESS); 296 return SOCKET_ERROR; 297 } 296 } 297 else 298 if(WSAIsBlocking()) { 299 WSASetLastError(WSAEINPROGRESS); 300 return SOCKET_ERROR; 301 } 298 302 // clear high word (not used in OS/2's tcpip stack) 299 303 cmd = LOUSHORT(cmd); … … 354 358 WSASetLastError(WSANOTINITIALISED); 355 359 return SOCKET_ERROR; 356 } 357 else 358 if(WSAIsBlocking()) { 359 WSASetLastError(WSAEINPROGRESS); 360 return SOCKET_ERROR; 361 } 362 else 360 } 361 else 362 if(WSAIsBlocking()) { 363 WSASetLastError(WSAEINPROGRESS); 364 return SOCKET_ERROR; 365 } 366 else 363 367 if (namelen == NULL || *namelen < (int)sizeof(struct sockaddr_in)) { 364 368 WSASetLastError(WSAEFAULT); … … 384 388 WSASetLastError(WSANOTINITIALISED); 385 389 return SOCKET_ERROR; 386 } 387 else 388 if(WSAIsBlocking()) { 389 WSASetLastError(WSAEINPROGRESS); 390 return SOCKET_ERROR; 391 } 392 else 390 } 391 else 392 if(WSAIsBlocking()) { 393 WSASetLastError(WSAEINPROGRESS); 394 return SOCKET_ERROR; 395 } 396 else 393 397 if (namelen == NULL || *namelen < (int)sizeof(struct sockaddr_in)) { 394 398 WSASetLastError(WSAEFAULT); … … 460 464 WSASetLastError(WSANOTINITIALISED); 461 465 return SOCKET_ERROR; 462 } 463 else 464 if(WSAIsBlocking()) { 465 WSASetLastError(WSAEINPROGRESS); 466 return SOCKET_ERROR; 467 } 468 else 466 } 467 else 468 if(WSAIsBlocking()) { 469 WSASetLastError(WSAEINPROGRESS); 470 return SOCKET_ERROR; 471 } 472 else 469 473 if ((addr != NULL) && (addrlen != NULL)) { 470 474 if (*addrlen < (int)sizeof(struct sockaddr_in)) { … … 505 509 WSASetLastError(WSANOTINITIALISED); 506 510 return SOCKET_ERROR; 507 } 508 else 509 if(WSAIsBlocking()) { 510 WSASetLastError(WSAEINPROGRESS); 511 return SOCKET_ERROR; 512 } 513 else 511 } 512 else 513 if(WSAIsBlocking()) { 514 WSASetLastError(WSAEINPROGRESS); 515 return SOCKET_ERROR; 516 } 517 else 514 518 if(namelen < (int)sizeof(struct sockaddr_in)) { 515 519 WSASetLastError(WSAEFAULT); … … 536 540 WSASetLastError(WSANOTINITIALISED); 537 541 return SOCKET_ERROR; 538 } 539 else 540 if(WSAIsBlocking()) { 541 WSASetLastError(WSAEINPROGRESS); 542 return SOCKET_ERROR; 543 } 542 } 543 else 544 if(WSAIsBlocking()) { 545 WSASetLastError(WSAEINPROGRESS); 546 return SOCKET_ERROR; 547 } 544 548 namelen = sizeof(name); 545 549 ret = getsockname(s, (struct sockaddr *)&name, &namelen); … … 549 553 WSASetLastError(WSAEINVAL); 550 554 return SOCKET_ERROR; 551 } 555 } 552 556 ret = ioctl(s, FIOBSTATUS, (char *)&tmp, sizeof(tmp)) & 553 557 (SS_ISCONNECTING | SS_ISCONNECTED | SS_ISDISCONNECTING); … … 579 583 WSASetLastError(WSANOTINITIALISED); 580 584 return SOCKET_ERROR; 581 } 582 else 583 if(WSAIsBlocking()) { 584 WSASetLastError(WSAEINPROGRESS); 585 return SOCKET_ERROR; 586 } 585 } 586 else 587 if(WSAIsBlocking()) { 588 WSASetLastError(WSAEINPROGRESS); 589 return SOCKET_ERROR; 590 } 587 591 ret = recv(s, buf, len, flags); 588 592 … … 611 615 WSASetLastError(WSANOTINITIALISED); 612 616 return SOCKET_ERROR; 613 } 614 else 615 if(WSAIsBlocking()) { 616 WSASetLastError(WSAEINPROGRESS); 617 return SOCKET_ERROR; 618 } 619 else 617 } 618 else 619 if(WSAIsBlocking()) { 620 WSASetLastError(WSAEINPROGRESS); 621 return SOCKET_ERROR; 622 } 623 else 620 624 if(fromlen == NULL || *fromlen < (int)sizeof(struct sockaddr_in)) { 621 625 WSASetLastError(WSAEFAULT); … … 646 650 WSASetLastError(WSANOTINITIALISED); 647 651 return SOCKET_ERROR; 648 } 649 else 650 if(WSAIsBlocking()) { 651 WSASetLastError(WSAEINPROGRESS); 652 return SOCKET_ERROR; 653 } 652 } 653 else 654 if(WSAIsBlocking()) { 655 WSASetLastError(WSAEINPROGRESS); 656 return SOCKET_ERROR; 657 } 654 658 ret = send(s, (char *)buf, len, flags); 655 659 … … 678 682 WSASetLastError(WSANOTINITIALISED); 679 683 return SOCKET_ERROR; 680 } 681 else 682 if(WSAIsBlocking()) { 683 WSASetLastError(WSAEINPROGRESS); 684 return SOCKET_ERROR; 685 } 686 else 684 } 685 else 686 if(WSAIsBlocking()) { 687 WSASetLastError(WSAEINPROGRESS); 688 return SOCKET_ERROR; 689 } 690 else 687 691 if(tolen < (int)sizeof(struct sockaddr_in)) { 688 692 WSASetLastError(WSAEFAULT); … … 719 723 WSASetLastError(WSANOTINITIALISED); 720 724 return SOCKET_ERROR; 721 } 722 else 723 if(WSAIsBlocking()) { 724 WSASetLastError(WSAEINPROGRESS); 725 return SOCKET_ERROR; 726 } 725 } 726 else 727 if(WSAIsBlocking()) { 728 WSASetLastError(WSAEINPROGRESS); 729 return SOCKET_ERROR; 730 } 727 731 else { 728 732 nrread = nrwrite = nrexcept = 0; … … 746 750 if(timeout == NULL) { 747 751 ttimeout = -1L; // no timeout 748 } 752 } 749 753 else ttimeout = timeout->tv_sec * 1000 + timeout->tv_usec / 1000; 750 754 751 755 sockets = (int *)malloc(sizeof(int) * (nrread+nrwrite+nrexcept)); 752 756 if(readfds) { … … 762 766 ret = select(sockets, nrread, nrwrite, nrexcept, ttimeout); 763 767 764 if(ret == SOCKET_ERROR) 768 if(ret == SOCKET_ERROR) 765 769 { 766 770 if(readfds != NULL) … … 776 780 free(sockets); 777 781 return SOCKET_ERROR; 778 } 782 } 779 783 780 784 if(ret != 0) { … … 813 817 exceptfds->fd_count = j; 814 818 } 815 } 819 } 816 820 else { 817 821 if(readfds != NULL) … … 845 849 WSASetLastError(WSANOTINITIALISED); 846 850 return SOCKET_ERROR; 847 } 848 else 849 if(WSAIsBlocking()) { 850 WSASetLastError(WSAEINPROGRESS); 851 return SOCKET_ERROR; 852 } 851 } 852 else 853 if(WSAIsBlocking()) { 854 WSASetLastError(WSAEINPROGRESS); 855 return SOCKET_ERROR; 856 } 853 857 if (level == SOL_SOCKET) { 854 858 switch(optname) { … … 896 900 ret = setsockopt(s, level, optname, (char *)optval, optlen); 897 901 break; 898 default: 902 default: 899 903 dprintf(("setsockopt: unknown option %x", optname)); 900 904 WSASetLastError(WSAENOPROTOOPT); 901 905 return SOCKET_ERROR; 902 } 903 } 904 else 906 } 907 } 908 else 905 909 if(level == IPPROTO_TCP) { 906 910 if(optname == TCP_NODELAY) { … … 910 914 } 911 915 ret = setsockopt(s, level, optname, (char *)optval, optlen); 912 } 916 } 913 917 else { 914 918 dprintf(("setsockopt: unknown option %x", optname)); … … 916 920 return SOCKET_ERROR; 917 921 } 918 } 922 } 919 923 else { 920 924 WSASetLastError(WSAEINVAL); … … 945 949 WSASetLastError(WSANOTINITIALISED); 946 950 return SOCKET_ERROR; 947 } 948 else 949 if(WSAIsBlocking()) { 950 WSASetLastError(WSAEINPROGRESS); 951 return SOCKET_ERROR; 952 } 951 } 952 else 953 if(WSAIsBlocking()) { 954 WSASetLastError(WSAEINPROGRESS); 955 return SOCKET_ERROR; 956 } 953 957 if (level == SOL_SOCKET) { 954 958 switch(optname) { … … 994 998 } 995 999 break; 996 default: 1000 default: 997 1001 dprintf(("getsockopt: unknown option %x", optname)); 998 1002 WSASetLastError(WSAENOPROTOOPT); 999 1003 return SOCKET_ERROR; 1000 } 1001 } 1002 else 1004 } 1005 } 1006 else 1003 1007 if(level == IPPROTO_TCP) { 1004 1008 if(optname == TCP_NODELAY) { … … 1008 1012 } 1009 1013 ret = getsockopt(s, level, optname, (char *)optval, optlen); 1010 } 1014 } 1011 1015 else { 1012 1016 dprintf(("getsockopt: unknown option %x", optname)); … … 1014 1018 return SOCKET_ERROR; 1015 1019 } 1016 } 1020 } 1017 1021 else { 1018 1022 WSASetLastError(WSAEINVAL); … … 1110 1114 } 1111 1115 else WSASetLastError(WSANO_DATA); 1112 } 1116 } 1113 1117 else WSASetLastError(WSANOTINITIALISED); 1114 1118 return NULL; … … 1133 1137 } 1134 1138 else WSASetLastError(WSANO_DATA); 1135 } 1139 } 1136 1140 else WSASetLastError(WSANOTINITIALISED); 1137 1141 return NULL;
Note:
See TracChangeset
for help on using the changeset viewer.