home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / perl / mac-perl / gs_102st.bin / GUSI / GUSITCP.cp < prev    next >
MacBinary  |  1993-01-22  |  21.6 KB  |  [TEXT/MPS ]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert MS-DOS Code Page Info (other/dosCodePage) ext Unsupported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, Thu Jan 21 22:23:04 1993, modified Thu Jan 21 22:23:04 1993, creator 'MPS ', type ASCII, 21317 bytes "GUSITCP.cp" , at 0x53c5 612 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[MPS ]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 0a 47 55 53 49 54 43 | 50 2e 63 70 00 00 00 00 |..GUSITC|P.cp....|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 50 53 | 20 00 00 00 00 00 00 00 |.TEXTMPS| .......|
|00000050| 00 00 00 00 00 53 45 00 | 00 02 64 a7 85 19 18 a7 |.....SE.|..d.....|
|00000060| 85 19 18 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 ae e5 00 00 |........|........|
|00000080| 2f 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |/*******|********|
|00000090| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000000a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000000b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000000c0| 2a 2a 2a 2a 2a 2a 0d 50 | 72 6f 6a 65 63 74 09 3a |******.P|roject.:|
|000000d0| 09 47 55 53 49 09 09 09 | 09 2d 09 47 72 61 6e 64 |.GUSI...|.-.Grand|
|000000e0| 20 55 6e 69 66 69 65 64 | 20 53 6f 63 6b 65 74 20 | Unified| Socket |
|000000f0| 49 6e 74 65 72 66 61 63 | 65 0d 46 69 6c 65 09 09 |Interfac|e.File..|
|00000100| 3a 09 47 55 53 49 54 43 | 50 2e 63 70 09 09 2d 09 |:.GUSITC|P.cp..-.|
|00000110| 54 43 50 20 53 74 72 65 | 61 6d 20 53 6f 63 6b 65 |TCP Stre|am Socke|
|00000120| 74 73 0d 41 75 74 68 6f | 72 09 3a 09 4d 61 74 74 |ts.Autho|r.:.Matt|
|00000130| 68 69 61 73 20 4e 65 65 | 72 61 63 68 65 72 0d 0d |hias Nee|racher..|
|00000140| 09 54 68 69 73 20 66 69 | 6c 65 20 77 61 73 20 64 |.This fi|le was d|
|00000150| 65 72 69 76 65 64 20 66 | 72 6f 6d 20 74 68 65 20 |erived f|rom the |
|00000160| 73 6f 63 6b 65 74 20 6c | 69 62 72 61 72 79 20 62 |socket l|ibrary b|
|00000170| 79 0d 0d 09 09 43 68 61 | 72 6c 69 65 20 52 65 69 |y....Cha|rlie Rei|
|00000180| 6d 61 6e 09 3c 63 72 65 | 69 6d 61 6e 40 6e 63 73 |man.<cre|iman@ncs|
|00000190| 61 2e 75 69 75 63 2e 65 | 64 75 3e 20 61 6e 64 0d |a.uiuc.e|du> and.|
|000001a0| 09 09 54 6f 6d 20 4d 69 | 6c 6c 69 67 61 6e 09 3c |..Tom Mi|lligan.<|
|000001b0| 6d 69 6c 6c 69 67 61 6e | 40 6d 61 64 68 61 75 73 |milligan|@madhaus|
|000001c0| 2e 75 74 63 73 2e 75 74 | 6f 72 6f 6e 74 6f 2e 63 |.utcs.ut|oronto.c|
|000001d0| 61 3e 0d 0d 53 74 61 72 | 74 65 64 09 3a 09 31 32 |a>..Star|ted.:.12|
|000001e0| 41 75 67 39 32 09 09 09 | 09 09 09 09 09 4c 61 6e |Aug92...|.....Lan|
|000001f0| 67 75 61 67 65 09 3a 09 | 4d 50 57 20 43 2f 43 2b |guage.:.|MPW C/C+|
|00000200| 2b 0d 4d 6f 64 69 66 69 | 65 64 09 3a 09 30 38 53 |+.Modifi|ed.:.08S|
|00000210| 65 70 39 32 09 4d 4e 09 | 41 20 62 69 67 20 70 61 |ep92.MN.|A big pa|
|00000220| 72 74 20 73 68 6f 75 6c | 64 20 77 6f 72 6b 20 6e |rt shoul|d work n|
|00000230| 6f 77 09 09 09 09 0d 09 | 09 09 09 30 38 4a 61 6e |ow......|...08Jan|
|00000240| 39 33 09 4d 4e 09 74 63 | 70 5f 6e 6f 74 69 66 79 |93.MN.tc|p_notify|
|00000250| 20 77 61 73 20 73 65 74 | 74 69 6e 67 20 74 68 65 | was set|ting the|
|00000260| 20 77 72 6f 6e 67 20 73 | 74 61 74 65 20 74 6f 20 | wrong s|tate to |
|00000270| 75 6e 63 6f 6e 6e 65 63 | 74 65 64 0d 09 09 09 09 |unconnec|ted.....|
|00000280| 31 37 4a 61 6e 39 33 09 | 4d 4e 09 42 65 20 6d 6f |17Jan93.|MN.Be mo|
|00000290| 72 65 20 63 61 72 65 66 | 75 6c 20 61 62 6f 75 74 |re caref|ul about|
|000002a0| 20 75 73 65 72 20 69 6e | 74 65 72 72 75 70 74 73 | user in|terrupts|
|000002b0| 2e 0d 09 09 09 09 32 31 | 4a 61 6e 39 33 09 4d 4e |......21|Jan93.MN|
|000002c0| 09 53 69 6d 70 6c 69 66 | 79 20 61 6e 64 20 63 6f |.Simplif|y and co|
|000002d0| 72 72 65 63 74 20 63 6f | 64 65 0d 4c 61 73 74 09 |rrect co|de.Last.|
|000002e0| 09 3a 09 32 31 4a 61 6e | 39 33 0d 2a 2a 2a 2a 2a |.:.21Jan|93.*****|
|000002f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000300| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000310| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000320| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000330| 2f 0d 0d 23 69 6e 63 6c | 75 64 65 20 22 47 55 53 |/..#incl|ude "GUS|
|00000340| 49 49 4e 45 54 5f 50 2e | 68 22 0d 0d 23 70 72 61 |IINET_P.|h"..#pra|
|00000350| 67 6d 61 20 66 6f 72 63 | 65 5f 61 63 74 69 76 65 |gma forc|e_active|
|00000360| 20 6f 6e 0d 0d 2f 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a | on../**|********|
|00000370| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 20 43 6f 6d |********|**** Com|
|00000380| 70 6c 65 74 69 6f 6e 20 | 70 72 6f 63 65 64 75 72 |pletion |procedur|
|00000390| 65 73 20 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |es *****|********|
|000003a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2f 0d 0d 23 70 72 |********|**/..#pr|
|000003b0| 61 67 6d 61 20 73 65 67 | 6d 65 6e 74 20 47 55 53 |agma seg|ment GUS|
|000003c0| 49 52 65 73 69 64 65 6e | 74 0d 0d 70 61 73 63 61 |IResiden|t..pasca|
|000003d0| 6c 20 76 6f 69 64 20 74 | 63 70 5f 6e 6f 74 69 66 |l void t|cp_notif|
|000003e0| 79 28 0d 09 53 74 72 65 | 61 6d 50 74 72 2c 0d 09 |y(..Stre|amPtr,..|
|000003f0| 75 5f 73 68 6f 72 74 09 | 09 09 09 09 65 76 65 6e |u_short.|....even|
|00000400| 74 43 6f 64 65 2c 0d 09 | 50 74 72 09 09 09 09 09 |tCode,..|Ptr.....|
|00000410| 09 75 73 65 72 44 61 74 | 61 50 74 72 2c 0d 09 75 |.userDat|aPtr,..u|
|00000420| 5f 73 68 6f 72 74 2c 0d | 09 73 74 72 75 63 74 20 |_short,.|.struct |
|00000430| 49 43 4d 50 52 65 70 6f | 72 74 20 2a 29 0d 7b 0d |ICMPRepo|rt *).{.|
|00000440| 09 54 43 50 53 6f 63 6b | 65 74 20 2a 09 73 6f 63 |.TCPSock|et *.soc|
|00000450| 6b 09 3d 09 2a 28 54 43 | 50 53 6f 63 6b 65 74 20 |k.=.*(TC|PSocket |
|00000460| 2a 2a 29 20 75 73 65 72 | 44 61 74 61 50 74 72 3b |**) user|DataPtr;|
|00000470| 0d 0d 09 73 77 69 74 63 | 68 20 28 65 76 65 6e 74 |...switc|h (event|
|00000480| 43 6f 64 65 29 20 7b 0d | 09 63 61 73 65 20 54 43 |Code) {.|.case TC|
|00000490| 50 43 6c 6f 73 69 6e 67 | 3a 0d 09 09 73 6f 63 6b |PClosing|:...sock|
|000004a0| 2d 3e 73 73 74 61 74 65 | 20 3d 20 53 4f 43 4b 5f |->sstate| = SOCK_|
|000004b0| 53 54 41 54 45 5f 43 4c | 4f 53 49 4e 47 3b 0d 09 |STATE_CL|OSING;..|
|000004c0| 09 62 72 65 61 6b 3b 0d | 0d 09 63 61 73 65 20 54 |.break;.|..case T|
|000004d0| 43 50 54 65 72 6d 69 6e | 61 74 65 3a 0d 09 09 73 |CPTermin|ate:...s|
|000004e0| 6f 63 6b 2d 3e 73 73 74 | 61 74 65 20 3d 20 53 4f |ock->sst|ate = SO|
|000004f0| 43 4b 5f 53 54 41 54 45 | 5f 55 4e 43 4f 4e 4e 45 |CK_STATE|_UNCONNE|
|00000500| 43 54 45 44 3b 0d 09 09 | 62 72 65 61 6b 3b 0d 09 |CTED;...|break;..|
|00000510| 7d 0d 7d 0d 0d 76 6f 69 | 64 20 74 63 70 5f 63 6f |}.}..voi|d tcp_co|
|00000520| 6e 6e 65 63 74 5f 64 6f | 6e 65 28 41 6e 6e 6f 74 |nnect_do|ne(Annot|
|00000530| 61 74 65 64 50 42 20 2a | 70 62 29 0d 7b 0d 09 54 |atedPB *|pb).{..T|
|00000540| 43 50 53 6f 63 6b 65 74 | 20 2a 09 73 6f 63 6b 09 |CPSocket| *.sock.|
|00000550| 3d 09 28 54 43 50 53 6f | 63 6b 65 74 20 2a 29 20 |=.(TCPSo|cket *) |
|00000560| 70 62 2d 3e 4f 77 6e 65 | 72 28 29 3b 0d 09 54 43 |pb->Owne|r();..TC|
|00000570| 50 69 6f 70 62 20 2a 09 | 74 63 70 09 3d 09 70 62 |Piopb *.|tcp.=.pb|
|00000580| 2d 3e 54 43 50 28 29 3b | 0d 0d 09 69 66 20 28 21 |->TCP();|...if (!|
|00000590| 74 63 70 2d 3e 69 6f 52 | 65 73 75 6c 74 29 20 7b |tcp->ioR|esult) {|
|000005a0| 0d 09 09 73 6f 63 6b 2d | 3e 73 61 2e 73 69 6e 5f |...sock-|>sa.sin_|
|000005b0| 61 64 64 72 2e 73 5f 61 | 64 64 72 20 09 3d 20 74 |addr.s_a|ddr .= t|
|000005c0| 63 70 2d 3e 63 73 50 61 | 72 61 6d 2e 6f 70 65 6e |cp->csPa|ram.open|
|000005d0| 2e 6c 6f 63 61 6c 48 6f | 73 74 3b 0d 09 09 73 6f |.localHo|st;...so|
|000005e0| 63 6b 2d 3e 73 61 2e 73 | 69 6e 5f 70 6f 72 74 20 |ck->sa.s|in_port |
|000005f0| 09 09 09 3d 20 74 63 70 | 2d 3e 63 73 50 61 72 61 |...= tcp|->csPara|
|00000600| 6d 2e 6f 70 65 6e 2e 6c | 6f 63 61 6c 50 6f 72 74 |m.open.l|ocalPort|
|00000610| 3b 0d 09 09 73 6f 63 6b | 2d 3e 70 65 65 72 2e 73 |;...sock|->peer.s|
|00000620| 69 6e 5f 61 64 64 72 2e | 73 5f 61 64 64 72 09 3d |in_addr.|s_addr.=|
|00000630| 20 74 63 70 2d 3e 63 73 | 50 61 72 61 6d 2e 6f 70 | tcp->cs|Param.op|
|00000640| 65 6e 2e 72 65 6d 6f 74 | 65 48 6f 73 74 3b 0d 09 |en.remot|eHost;..|
|00000650| 09 73 6f 63 6b 2d 3e 70 | 65 65 72 2e 73 69 6e 5f |.sock->p|eer.sin_|
|00000660| 70 6f 72 74 20 09 09 09 | 3d 20 74 63 70 2d 3e 63 |port ...|= tcp->c|
|00000670| 73 50 61 72 61 6d 2e 6f | 70 65 6e 2e 72 65 6d 6f |sParam.o|pen.remo|
|00000680| 74 65 50 6f 72 74 3b 0d | 09 09 73 6f 63 6b 2d 3e |tePort;.|..sock->|
|00000690| 73 73 74 61 74 65 20 09 | 09 09 09 09 3d 20 53 4f |sstate .|....= SO|
|000006a0| 43 4b 5f 53 54 41 54 45 | 5f 43 4f 4e 4e 45 43 54 |CK_STATE|_CONNECT|
|000006b0| 45 44 3b 0d 09 09 73 6f | 63 6b 2d 3e 61 73 79 6e |ED;...so|ck->asyn|
|000006c0| 63 65 72 72 20 09 09 09 | 09 3d 20 6e 6f 45 72 72 |cerr ...|.= noErr|
|000006d0| 3b 0d 09 7d 0d 7d 0d 0d | 76 6f 69 64 20 74 63 70 |;..}.}..|void tcp|
|000006e0| 5f 6c 69 73 74 65 6e 5f | 64 6f 6e 65 28 41 6e 6e |_listen_|done(Ann|
|000006f0| 6f 74 61 74 65 64 50 42 | 20 2a 70 62 29 0d 7b 0d |otatedPB| *pb).{.|
|00000700| 09 54 43 50 53 6f 63 6b | 65 74 20 2a 09 73 6f 63 |.TCPSock|et *.soc|
|00000710| 6b 09 3d 09 28 54 43 50 | 53 6f 63 6b 65 74 20 2a |k.=.(TCP|Socket *|
|00000720| 29 20 70 62 2d 3e 4f 77 | 6e 65 72 28 29 3b 0d 09 |) pb->Ow|ner();..|
|00000730| 54 43 50 69 6f 70 62 20 | 2a 09 74 63 70 09 3d 09 |TCPiopb |*.tcp.=.|
|00000740| 70 62 2d 3e 54 43 50 28 | 29 3b 0d 0d 09 73 77 69 |pb->TCP(|);...swi|
|00000750| 74 63 68 28 74 63 70 2d | 3e 69 6f 52 65 73 75 6c |tch(tcp-|>ioResul|
|00000760| 74 29 20 7b 0d 09 63 61 | 73 65 20 6e 6f 45 72 72 |t) {..ca|se noErr|
|00000770| 3a 0d 09 09 73 6f 63 6b | 2d 3e 70 65 65 72 2e 73 |:...sock|->peer.s|
|00000780| 69 6e 5f 61 64 64 72 2e | 73 5f 61 64 64 72 09 3d |in_addr.|s_addr.=|
|00000790| 20 74 63 70 2d 3e 63 73 | 50 61 72 61 6d 2e 6f 70 | tcp->cs|Param.op|
|000007a0| 65 6e 2e 72 65 6d 6f 74 | 65 48 6f 73 74 3b 0d 09 |en.remot|eHost;..|
|000007b0| 09 73 6f 63 6b 2d 3e 70 | 65 65 72 2e 73 69 6e 5f |.sock->p|eer.sin_|
|000007c0| 70 6f 72 74 20 09 09 09 | 3d 20 74 63 70 2d 3e 63 |port ...|= tcp->c|
|000007d0| 73 50 61 72 61 6d 2e 6f | 70 65 6e 2e 72 65 6d 6f |sParam.o|pen.remo|
|000007e0| 74 65 50 6f 72 74 3b 0d | 09 09 73 6f 63 6b 2d 3e |tePort;.|..sock->|
|000007f0| 73 73 74 61 74 65 20 09 | 09 09 09 09 3d 20 53 4f |sstate .|....= SO|
|00000800| 43 4b 5f 53 54 41 54 45 | 5f 4c 49 53 5f 43 4f 4e |CK_STATE|_LIS_CON|
|00000810| 3b 0d 09 09 73 6f 63 6b | 2d 3e 61 73 79 6e 63 65 |;...sock|->asynce|
|00000820| 72 72 20 09 09 09 09 3d | 20 30 3b 0d 09 09 62 72 |rr ....=| 0;...br|
|00000830| 65 61 6b 3b 0d 0d 09 63 | 61 73 65 20 6f 70 65 6e |eak;...c|ase open|
|00000840| 46 61 69 6c 65 64 3a 0d | 09 63 61 73 65 20 69 6e |Failed:.|.case in|
|00000850| 76 61 6c 69 64 53 74 72 | 65 61 6d 50 74 72 3a 0d |validStr|eamPtr:.|
|00000860| 09 63 61 73 65 20 63 6f | 6e 6e 65 63 74 69 6f 6e |.case co|nnection|
|00000870| 45 78 69 73 74 73 3a 0d | 09 63 61 73 65 20 64 75 |Exists:.|.case du|
|00000880| 70 6c 69 63 61 74 65 53 | 6f 63 6b 65 74 3a 0d 09 |plicateS|ocket:..|
|00000890| 63 61 73 65 20 63 6f 6d | 6d 61 6e 64 54 69 6d 65 |case com|mandTime|
|000008a0| 6f 75 74 3a 0d 09 64 65 | 66 61 75 6c 74 3a 0d 09 |out:..de|fault:..|
|000008b0| 09 73 6f 63 6b 2d 3e 73 | 73 74 61 74 65 20 09 09 |.sock->s|state ..|
|000008c0| 09 09 09 3d 20 53 4f 43 | 4b 5f 53 54 41 54 45 5f |...= SOC|K_STATE_|
|000008d0| 55 4e 43 4f 4e 4e 45 43 | 54 45 44 3b 0d 09 09 73 |UNCONNEC|TED;...s|
|000008e0| 6f 63 6b 2d 3e 61 73 79 | 6e 63 65 72 72 20 09 09 |ock->asy|ncerr ..|
|000008f0| 09 09 3d 20 74 63 70 2d | 3e 69 6f 52 65 73 75 6c |..= tcp-|>ioResul|
|00000900| 74 3b 0d 09 09 62 72 65 | 61 6b 3b 0d 09 7d 0d 7d |t;...bre|ak;..}.}|
|00000910| 0d 0d 76 6f 69 64 20 74 | 63 70 5f 72 65 63 76 5f |..void t|cp_recv_|
|00000920| 64 6f 6e 65 28 41 6e 6e | 6f 74 61 74 65 64 50 42 |done(Ann|otatedPB|
|00000930| 20 2a 70 62 29 0d 7b 0d | 09 54 43 50 53 6f 63 6b | *pb).{.|.TCPSock|
|00000940| 65 74 20 2a 09 09 73 6f | 63 6b 09 3d 09 28 54 43 |et *..so|ck.=.(TC|
|00000950| 50 53 6f 63 6b 65 74 20 | 2a 29 20 70 62 2d 3e 4f |PSocket |*) pb->O|
|00000960| 77 6e 65 72 28 29 3b 0d | 09 54 43 50 69 6f 70 62 |wner();.|.TCPiopb|
|00000970| 20 2a 09 09 74 63 70 09 | 3d 09 70 62 2d 3e 54 43 | *..tcp.|=.pb->TC|
|00000980| 50 28 29 3b 0d 09 72 65 | 67 69 73 74 65 72 09 69 |P();..re|gister.i|
|00000990| 6e 74 20 09 72 65 61 64 | 69 6e 3b 0d 0d 09 69 66 |nt .read|in;...if|
|000009a0| 20 28 21 74 63 70 2d 3e | 69 6f 52 65 73 75 6c 74 | (!tcp->|ioResult|
|000009b0| 29 20 7b 0d 09 09 72 65 | 61 64 69 6e 20 3d 20 74 |) {...re|adin = t|
|000009c0| 63 70 2d 3e 63 73 50 61 | 72 61 6d 2e 72 65 63 65 |cp->csPa|ram.rece|
|000009d0| 69 76 65 2e 72 63 76 42 | 75 66 66 4c 65 6e 3b 0d |ive.rcvB|uffLen;.|
|000009e0| 09 09 73 6f 63 6b 2d 3e | 72 65 63 76 64 20 20 20 |..sock->|recvd |
|000009f0| 3d 20 72 65 61 64 69 6e | 3b 0d 09 7d 0d 7d 0d 0d |= readin|;..}.}..|
|00000a00| 76 6f 69 64 20 74 63 70 | 5f 73 65 6e 64 5f 64 6f |void tcp|_send_do|
|00000a10| 6e 65 28 41 6e 6e 6f 74 | 61 74 65 64 50 42 20 2a |ne(Annot|atedPB *|
|00000a20| 70 62 29 0d 7b 0d 09 54 | 43 50 53 6f 63 6b 65 74 |pb).{..T|CPSocket|
|00000a30| 20 2a 09 73 6f 63 6b 09 | 3d 09 28 54 43 50 53 6f | *.sock.|=.(TCPSo|
|00000a40| 63 6b 65 74 20 2a 29 20 | 70 62 2d 3e 4f 77 6e 65 |cket *) |pb->Owne|
|00000a50| 72 28 29 3b 0d 09 54 43 | 50 69 6f 70 62 20 2a 09 |r();..TC|Piopb *.|
|00000a60| 74 63 70 09 3d 09 70 62 | 2d 3e 54 43 50 28 29 3b |tcp.=.pb|->TCP();|
|00000a70| 0d 0d 09 73 77 69 74 63 | 68 20 28 74 63 70 2d 3e |...switc|h (tcp->|
|00000a80| 69 6f 52 65 73 75 6c 74 | 29 20 7b 0d 09 63 61 73 |ioResult|) {..cas|
|00000a90| 65 20 6e 6f 45 72 72 3a | 0d 09 09 28 28 77 64 73 |e noErr:|...((wds|
|00000aa0| 45 6e 74 72 79 20 2a 29 | 28 74 63 70 2d 3e 63 73 |Entry *)|(tcp->cs|
|00000ab0| 50 61 72 61 6d 2e 73 65 | 6e 64 2e 77 64 73 50 74 |Param.se|nd.wdsPt|
|00000ac0| 72 29 29 2d 3e 6c 65 6e | 67 74 68 20 3d 20 30 3b |r))->len|gth = 0;|
|00000ad0| 09 2f 2a 20 6d 61 72 6b | 20 69 74 20 66 72 65 65 |./* mark| it free|
|00000ae0| 20 2a 2f 0d 09 09 62 72 | 65 61 6b 3b 0d 0d 09 63 | */...br|eak;...c|
|00000af0| 61 73 65 20 69 70 4e 6f | 46 72 61 67 4d 65 6d 45 |ase ipNo|FragMemE|
|00000b00| 72 72 3a 0d 09 63 61 73 | 65 20 63 6f 6e 6e 65 63 |rr:..cas|e connec|
|00000b10| 74 69 6f 6e 43 6c 6f 73 | 69 6e 67 3a 0d 09 63 61 |tionClos|ing:..ca|
|00000b20| 73 65 20 63 6f 6e 6e 65 | 63 74 69 6f 6e 54 65 72 |se conne|ctionTer|
|00000b30| 6d 69 6e 61 74 65 64 3a | 0d 09 63 61 73 65 20 63 |minated:|..case c|
|00000b40| 6f 6e 6e 65 63 74 69 6f | 6e 44 6f 65 73 6e 74 45 |onnectio|nDoesntE|
|00000b50| 78 69 73 74 3a 0d 09 09 | 73 6f 63 6b 2d 3e 73 73 |xist:...|sock->ss|
|00000b60| 74 61 74 65 20 09 3d 20 | 53 4f 43 4b 5f 53 54 41 |tate .= |SOCK_STA|
|00000b70| 54 45 5f 55 4e 43 4f 4e | 4e 45 43 54 45 44 3b 0d |TE_UNCON|NECTED;.|
|00000b80| 09 09 73 6f 63 6b 2d 3e | 61 73 79 6e 63 65 72 72 |..sock->|asyncerr|
|00000b90| 20 3d 20 45 4e 4f 54 43 | 4f 4e 4e 3b 0d 09 09 62 | = ENOTC|ONN;...b|
|00000ba0| 72 65 61 6b 3b 0d 0d 09 | 63 61 73 65 20 69 70 44 |reak;...|case ipD|
|00000bb0| 6f 6e 74 46 72 61 67 45 | 72 72 3a 0d 09 63 61 73 |ontFragE|rr:..cas|
|00000bc0| 65 20 69 6e 76 61 6c 69 | 64 53 74 72 65 61 6d 50 |e invali|dStreamP|
|00000bd0| 74 72 3a 0d 09 63 61 73 | 65 20 69 6e 76 61 6c 69 |tr:..cas|e invali|
|00000be0| 64 4c 65 6e 67 74 68 3a | 0d 09 63 61 73 65 20 69 |dLength:|..case i|
|00000bf0| 6e 76 61 6c 69 64 57 44 | 53 3a 0d 09 64 65 66 61 |nvalidWD|S:..defa|
|00000c00| 75 6c 74 3a 0d 09 09 73 | 6f 63 6b 2d 3e 73 73 74 |ult:...s|ock->sst|
|00000c10| 61 74 65 20 09 3d 20 53 | 4f 43 4b 5f 53 54 41 54 |ate .= S|OCK_STAT|
|00000c20| 45 5f 55 4e 43 4f 4e 4e | 45 43 54 45 44 3b 0d 09 |E_UNCONN|ECTED;..|
|00000c30| 09 73 6f 63 6b 2d 3e 61 | 73 79 6e 63 65 72 72 20 |.sock->a|syncerr |
|00000c40| 3d 20 74 63 70 2d 3e 69 | 6f 52 65 73 75 6c 74 3b |= tcp->i|oResult;|
|00000c50| 0d 09 09 62 72 65 61 6b | 3b 0d 09 7d 0d 7d 0d 0d |...break|;..}.}..|
|00000c60| 23 70 72 61 67 6d 61 20 | 73 65 67 6d 65 6e 74 20 |#pragma |segment |
|00000c70| 47 55 53 49 49 4e 45 54 | 0d 0d 2f 2a 2a 2a 2a 2a |GUSIINET|../*****|
|00000c80| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000c90| 2a 2a 2a 20 54 43 50 53 | 6f 63 6b 65 74 20 6d 65 |*** TCPS|ocket me|
|00000ca0| 6d 62 65 72 73 20 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |mbers **|********|
|00000cb0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2f |********|*******/|
|00000cc0| 0d 0d 54 43 50 53 6f 63 | 6b 65 74 3a 3a 54 43 50 |..TCPSoc|ket::TCP|
|00000cd0| 53 6f 63 6b 65 74 28 29 | 0d 09 3a 09 49 4e 45 54 |Socket()|..:.INET|
|00000ce0| 53 6f 63 6b 65 74 28 29 | 0d 7b 0d 09 54 43 50 69 |Socket()|.{..TCPi|
|00000cf0| 6f 70 62 09 70 62 3b 0d | 0d 09 73 73 74 61 74 65 |opb.pb;.|..sstate|
|00000d00| 20 09 3d 20 53 4f 43 4b | 5f 53 54 41 54 45 5f 55 | .= SOCK|_STATE_U|
|00000d10| 4e 43 4f 4e 4e 45 43 54 | 45 44 3b 0d 09 73 65 6c |NCONNECT|ED;..sel|
|00000d20| 66 20 09 20 09 3d 20 6e | 65 77 28 54 43 50 53 6f |f . .= n|ew(TCPSo|
|00000d30| 63 6b 65 74 20 2a 29 3b | 0d 09 2a 73 65 6c 66 09 |cket *);|..*self.|
|00000d40| 09 3d 20 74 68 69 73 3b | 0d 0d 09 70 62 2e 69 6f |.= this;|...pb.io|
|00000d50| 43 52 65 66 4e 75 6d 20 | 09 09 09 09 09 09 3d 20 |CRefNum |......= |
|00000d60| 49 4e 45 54 53 6f 63 6b | 65 74 73 2e 44 72 69 76 |INETSock|ets.Driv|
|00000d70| 65 72 28 29 3b 0d 09 70 | 62 2e 63 73 43 6f 64 65 |er();..p|b.csCode|
|00000d80| 20 09 09 09 09 09 09 09 | 3d 20 54 43 50 43 72 65 | .......|= TCPCre|
|00000d90| 61 74 65 3b 0d 09 70 62 | 2e 63 73 50 61 72 61 6d |ate;..pb|.csParam|
|00000da0| 2e 63 72 65 61 74 65 2e | 72 63 76 42 75 66 66 20 |.create.|rcvBuff |
|00000db0| 09 09 3d 20 28 63 68 61 | 72 20 2a 29 4e 65 77 50 |..= (cha|r *)NewP|
|00000dc0| 74 72 28 53 54 52 45 41 | 4d 5f 42 55 46 46 45 52 |tr(STREA|M_BUFFER|
|00000dd0| 5f 53 49 5a 45 29 3b 0d | 09 70 62 2e 63 73 50 61 |_SIZE);.|.pb.csPa|
|00000de0| 72 61 6d 2e 63 72 65 61 | 74 65 2e 72 63 76 42 75 |ram.crea|te.rcvBu|
|00000df0| 66 66 4c 65 6e 20 09 3d | 20 53 54 52 45 41 4d 5f |ffLen .=| STREAM_|
|00000e00| 42 55 46 46 45 52 5f 53 | 49 5a 45 3b 0d 09 70 62 |BUFFER_S|IZE;..pb|
|00000e10| 2e 63 73 50 61 72 61 6d | 2e 63 72 65 61 74 65 2e |.csParam|.create.|
|00000e20| 6e 6f 74 69 66 79 50 72 | 6f 63 20 09 3d 20 74 63 |notifyPr|oc .= tc|
|00000e30| 70 5f 6e 6f 74 69 66 79 | 3b 0d 09 70 62 2e 63 73 |p_notify|;..pb.cs|
|00000e40| 50 61 72 61 6d 2e 63 72 | 65 61 74 65 2e 75 73 65 |Param.cr|eate.use|
|00000e50| 72 44 61 74 61 50 74 72 | 09 3d 20 50 74 72 28 73 |rDataPtr|.= Ptr(s|
|00000e60| 65 6c 66 29 3b 0d 0d 09 | 73 77 69 74 63 68 28 50 |elf);...|switch(P|
|00000e70| 42 43 6f 6e 74 72 6f 6c | 53 79 6e 63 28 50 61 72 |BControl|Sync(Par|
|00000e80| 6d 42 6c 6b 50 74 72 28 | 26 70 62 29 29 29 0d 09 |mBlkPtr(|&pb)))..|
|00000e90| 7b 0d 09 09 63 61 73 65 | 20 6e 6f 45 72 72 3a 20 |{...case| noErr: |
|00000ea0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000eb0| 09 62 72 65 61 6b 3b 0d | 09 09 63 61 73 65 20 69 |.break;.|..case i|
|00000ec0| 6e 76 61 6c 69 64 4c 65 | 6e 67 74 68 3a 20 20 20 |nvalidLe|ngth: |
|00000ed0| 20 20 20 20 20 20 09 47 | 55 53 49 5f 65 72 72 6f | .G|USI_erro|
|00000ee0| 72 28 45 4e 4f 42 55 46 | 53 29 3b 20 09 72 65 74 |r(ENOBUF|S); .ret|
|00000ef0| 75 72 6e 3b 0d 09 09 63 | 61 73 65 20 69 6e 76 61 |urn;...c|ase inva|
|00000f00| 6c 69 64 42 75 66 50 74 | 72 3a 20 20 20 20 20 20 |lidBufPt|r: |
|00000f10| 20 20 20 09 47 55 53 49 | 5f 65 72 72 6f 72 28 45 | .GUSI|_error(E|
|00000f20| 4e 4f 42 55 46 53 29 3b | 20 09 72 65 74 75 72 6e |NOBUFS);| .return|
|00000f30| 3b 0d 09 09 63 61 73 65 | 20 69 6e 73 75 66 66 69 |;...case| insuffi|
|00000f40| 63 69 65 6e 74 52 65 73 | 6f 75 72 63 65 73 3a 20 |cientRes|ources: |
|00000f50| 09 47 55 53 49 5f 65 72 | 72 6f 72 28 45 4d 46 49 |.GUSI_er|ror(EMFI|
|00000f60| 4c 45 29 3b 20 09 09 72 | 65 74 75 72 6e 3b 0d 09 |LE); ..r|eturn;..|
|00000f70| 09 64 65 66 61 75 6c 74 | 3a 20 09 09 09 09 09 09 |.default|: ......|
|00000f80| 09 47 55 53 49 5f 65 72 | 72 6f 72 28 45 4e 45 54 |.GUSI_er|ror(ENET|
|00000f90| 44 4f 57 4e 29 3b 20 09 | 72 65 74 75 72 6e 3b 0d |DOWN); .|return;.|
|00000fa0| 09 7d 0d 0d 09 70 65 65 | 72 2e 73 69 6e 5f 66 61 |.}...pee|r.sin_fa|
|00000fb0| 6d 69 6c 79 20 09 09 3d | 20 41 46 5f 49 4e 45 54 |mily ..=| AF_INET|
|00000fc0| 3b 0d 09 70 65 65 72 2e | 73 69 6e 5f 61 64 64 72 |;..peer.|sin_addr|
|00000fd0| 2e 73 5f 61 64 64 72 20 | 3d 20 30 3b 0d 09 70 65 |.s_addr |= 0;..pe|
|00000fe0| 65 72 2e 73 69 6e 5f 70 | 6f 72 74 20 09 09 09 3d |er.sin_p|ort ...=|
|00000ff0| 20 30 3b 0d 0d 09 62 7a | 65 72 6f 28 26 70 65 65 | 0;...bz|ero(&pee|
|00001000| 72 2e 73 69 6e 5f 7a 65 | 72 6f 5b 30 5d 2c 20 38 |r.sin_ze|ro[0], 8|
|00001010| 29 3b 0d 0d 09 61 73 79 | 6e 63 65 72 72 20 09 09 |);...asy|ncerr ..|
|00001020| 09 09 3d 20 30 3b 0d 09 | 73 74 72 65 61 6d 20 09 |..= 0;..|stream .|
|00001030| 09 09 09 09 3d 20 70 62 | 2e 74 63 70 53 74 72 65 |....= pb|.tcpStre|
|00001040| 61 6d 3b 0d 7d 0d 0d 54 | 43 50 53 6f 63 6b 65 74 |am;.}..T|CPSocket|
|00001050| 3a 3a 54 43 50 53 6f 63 | 6b 65 74 28 54 43 50 53 |::TCPSoc|ket(TCPS|
|00001060| 6f 63 6b 65 74 20 2a 20 | 73 6f 63 6b 29 0d 7b 0d |ocket * |sock).{.|
|00001070| 09 73 74 72 65 61 6d 09 | 09 3d 20 73 6f 63 6b 2d |.stream.|.= sock-|
|00001080| 3e 73 74 72 65 61 6d 3b | 0d 09 73 74 61 74 75 73 |>stream;|..status|
|00001090| 09 09 3d 20 73 6f 63 6b | 2d 3e 73 74 61 74 75 73 |..= sock|->status|
|000010a0| 3b 0d 09 6e 6f 6e 62 6c | 6f 63 6b 69 6e 67 09 3d |;..nonbl|ocking.=|
|000010b0| 20 73 6f 63 6b 2d 3e 6e | 6f 6e 62 6c 6f 63 6b 69 | sock->n|onblocki|
|000010c0| 6e 67 3b 0d 09 72 65 63 | 76 42 75 66 09 09 3d 20 |ng;..rec|vBuf..= |
|000010d0| 73 6f 63 6b 2d 3e 72 65 | 63 76 42 75 66 3b 0d 09 |sock->re|cvBuf;..|
|000010e0| 72 65 63 76 64 09 09 09 | 3d 20 73 6f 63 6b 2d 3e |recvd...|= sock->|
|000010f0| 72 65 63 76 64 3b 0d 09 | 73 61 09 09 09 09 3d 20 |recvd;..|sa....= |
|00001100| 73 6f 63 6b 2d 3e 73 61 | 3b 0d 09 70 65 65 72 09 |sock->sa|;..peer.|
|00001110| 09 09 3d 20 73 6f 63 6b | 2d 3e 70 65 65 72 3b 0d |..= sock|->peer;.|
|00001120| 09 73 73 74 61 74 65 09 | 09 3d 20 73 6f 63 6b 2d |.sstate.|.= sock-|
|00001130| 3e 73 73 74 61 74 65 3b | 0d 09 61 73 79 6e 63 65 |>sstate;|..asynce|
|00001140| 72 72 09 09 3d 20 30 3b | 0d 09 0d 09 2f 2f 20 54 |rr..= 0;|....// T|
|00001150| 68 65 20 72 65 61 73 6f | 6e 20 66 6f 72 20 74 68 |he reaso|n for th|
|00001160| 69 73 20 73 74 72 61 6e | 67 65 20 63 6f 64 65 20 |is stran|ge code |
|00001170| 69 73 20 74 68 61 74 20 | 73 74 72 65 61 6d 2d 3e |is that |stream->|
|00001180| 75 73 65 72 44 61 74 61 | 20 70 6f 69 6e 74 73 20 |userData| points |
|00001190| 74 6f 0d 09 2f 2f 20 73 | 6f 63 6b 2e 73 65 6c 66 |to..// s|ock.self|
|000011a0| 20 61 6e 64 20 63 61 6e | 6e 6f 74 20 62 65 20 63 | and can|not be c|
|000011b0| 68 61 6e 67 65 64 20 77 | 68 69 6c 65 20 74 68 65 |hanged w|hile the|
|000011c0| 20 73 74 72 65 61 6d 20 | 69 73 20 61 6c 69 76 65 | stream |is alive|
|000011d0| 0d 09 0d 09 73 65 6c 66 | 09 09 09 3d 20 73 6f 63 |....self|...= soc|
|000011e0| 6b 2d 3e 73 65 6c 66 3b | 0d 09 2a 73 65 6c 66 09 |k->self;|..*self.|
|000011f0| 09 09 3d 20 74 68 69 73 | 3b 0d 09 73 6f 63 6b 2d |..= this|;..sock-|
|00001200| 3e 73 65 6c 66 09 3d 20 | 6e 65 77 28 54 43 50 53 |>self.= |new(TCPS|
|00001210| 6f 63 6b 65 74 20 2a 29 | 3b 0d 09 2a 73 6f 63 6b |ocket *)|;..*sock|
|00001220| 2d 3e 73 65 6c 66 09 3d | 20 73 6f 63 6b 3b 0d 7d |->self.=| sock;.}|
|00001230| 0d 0d 54 43 50 53 6f 63 | 6b 65 74 3a 3a 7e 54 43 |..TCPSoc|ket::~TC|
|00001240| 50 53 6f 63 6b 65 74 28 | 29 0d 7b 0d 09 54 43 50 |PSocket(|).{..TCP|
|00001250| 69 6f 70 62 20 2a 09 70 | 62 3b 0d 0d 09 64 6f 20 |iopb *.p|b;...do |
|00001260| 7b 0d 09 09 70 62 09 09 | 09 09 09 3d 20 47 65 74 |{...pb..|...= Get|
|00001270| 50 42 28 29 3b 0d 09 09 | 70 62 2d 3e 63 73 43 6f |PB();...|pb->csCo|
|00001280| 64 65 20 09 09 3d 20 54 | 43 50 53 74 61 74 75 73 |de ..= T|CPStatus|
|00001290| 3b 0d 0d 09 09 50 42 43 | 6f 6e 74 72 6f 6c 53 79 |;....PBC|ontrolSy|
|000012a0| 6e 63 28 50 61 72 6d 42 | 6c 6b 50 74 72 28 70 62 |nc(ParmB|lkPtr(pb|
|000012b0| 29 29 3b 0d 0d 09 09 53 | 41 46 45 53 50 49 4e 28 |));....S|AFESPIN(|
|000012c0| 66 61 6c 73 65 2c 20 53 | 50 5f 4d 49 53 43 2c 20 |false, S|P_MISC, |
|000012d0| 30 29 3b 0d 09 7d 20 77 | 68 69 6c 65 20 28 21 65 |0);..} w|hile (!e|
|000012e0| 72 72 6e 6f 20 26 26 20 | 70 62 2d 3e 63 73 50 61 |rrno && |pb->csPa|
|000012f0| 72 61 6d 2e 73 74 61 74 | 75 73 2e 61 6d 74 55 6e |ram.stat|us.amtUn|
|00001300| 61 63 6b 65 64 44 61 74 | 61 20 3e 20 30 29 3b 0d |ackedDat|a > 0);.|
|00001310| 0d 09 70 62 09 09 09 09 | 09 09 09 09 09 09 09 09 |..pb....|........|
|00001320| 3d 20 47 65 74 50 42 28 | 29 3b 0d 09 70 62 2d 3e |= GetPB(|);..pb->|
|00001330| 69 6f 43 6f 6d 70 6c 65 | 74 69 6f 6e 09 09 09 09 |ioComple|tion....|
|00001340| 09 09 09 3d 20 6e 69 6c | 3b 0d 09 70 62 2d 3e 63 |...= nil|;..pb->c|
|00001350| 73 43 6f 64 65 20 09 09 | 09 09 09 09 09 09 09 3d |sCode ..|.......=|
|00001360| 20 54 43 50 43 6c 6f 73 | 65 3b 0d 09 70 62 2d 3e | TCPClos|e;..pb->|
|00001370| 63 73 50 61 72 61 6d 2e | 63 6c 6f 73 65 2e 76 61 |csParam.|close.va|
|00001380| 6c 69 64 69 74 79 46 6c | 61 67 73 20 09 09 3d 20 |lidityFl|ags ..= |
|00001390| 74 69 6d 65 6f 75 74 56 | 61 6c 75 65 20 7c 20 74 |timeoutV|alue | t|
|000013a0| 69 6d 65 6f 75 74 41 63 | 74 69 6f 6e 3b 0d 09 70 |imeoutAc|tion;..p|
|000013b0| 62 2d 3e 63 73 50 61 72 | 61 6d 2e 63 6c 6f 73 65 |b->csPar|am.close|
|000013c0| 2e 75 6c 70 54 69 6d 65 | 6f 75 74 56 61 6c 75 65 |.ulpTime|outValue|
|000013d0| 20 09 3d 20 36 30 20 2f | 2a 20 73 65 63 6f 6e 64 | .= 60 /|* second|
|000013e0| 73 20 2a 2f 3b 0d 09 70 | 62 2d 3e 63 73 50 61 72 |s */;..p|b->csPar|
|000013f0| 61 6d 2e 63 6c 6f 73 65 | 2e 75 6c 70 54 69 6d 65 |am.close|.ulpTime|
|00001400| 6f 75 74 41 63 74 69 6f | 6e 20 09 3d 20 31 20 2f |outActio|n .= 1 /|
|00001410| 2a 20 31 3a 61 62 6f 72 | 74 20 30 3a 72 65 70 6f |* 1:abor|t 0:repo|
|00001420| 72 74 20 2a 2f 3b 0d 0d | 09 73 77 69 74 63 68 20 |rt */;..|.switch |
|00001430| 28 50 42 43 6f 6e 74 72 | 6f 6c 41 73 79 6e 63 28 |(PBContr|olAsync(|
|00001440| 50 61 72 6d 42 6c 6b 50 | 74 72 28 70 62 29 29 29 |ParmBlkP|tr(pb)))|
|00001450| 0d 09 7b 0d 09 09 63 61 | 73 65 20 6e 6f 45 72 72 |..{...ca|se noErr|
|00001460| 3a 0d 09 09 63 61 73 65 | 20 63 6f 6e 6e 65 63 74 |:...case| connect|
|00001470| 69 6f 6e 43 6c 6f 73 69 | 6e 67 3a 0d 09 09 09 62 |ionClosi|ng:....b|
|00001480| 72 65 61 6b 3b 0d 09 09 | 63 61 73 65 20 63 6f 6e |reak;...|case con|
|00001490| 6e 65 63 74 69 6f 6e 44 | 6f 65 73 6e 74 45 78 69 |nectionD|oesntExi|
|000014a0| 73 74 3a 0d 09 09 63 61 | 73 65 20 63 6f 6e 6e 65 |st:...ca|se conne|
|000014b0| 63 74 69 6f 6e 54 65 72 | 6d 69 6e 61 74 65 64 3a |ctionTer|minated:|
|000014c0| 0d 09 09 09 62 72 65 61 | 6b 3b 0d 09 09 63 61 73 |....brea|k;...cas|
|000014d0| 65 20 69 6e 76 61 6c 69 | 64 53 74 72 65 61 6d 50 |e invali|dStreamP|
|000014e0| 74 72 3a 0d 09 09 64 65 | 66 61 75 6c 74 3a 0d 09 |tr:...de|fault:..|
|000014f0| 09 09 72 65 74 75 72 6e | 3b 0d 09 7d 0d 0d 09 7b |..return|;..}...{|
|00001500| 0d 09 09 72 64 73 45 6e | 74 72 79 09 72 64 73 61 |...rdsEn|try.rdsa|
|00001510| 72 72 61 79 5b 54 43 50 | 5f 4d 41 58 5f 57 44 53 |rray[TCP|_MAX_WDS|
|00001520| 2b 31 5d 3b 0d 09 09 69 | 6e 74 09 09 70 61 73 73 |+1];...i|nt..pass|
|00001530| 63 6f 75 6e 74 3b 0d 09 | 09 63 6f 6e 73 74 20 69 |count;..|.const i|
|00001540| 6e 74 20 6d 61 78 70 61 | 73 73 20 3d 34 3b 0d 0d |nt maxpa|ss =4;..|
|00001550| 09 09 70 62 09 09 09 09 | 09 3d 09 47 65 74 50 42 |..pb....|.=.GetPB|
|00001560| 28 29 3b 0d 0d 09 09 66 | 6f 72 20 28 70 61 73 73 |();....f|or (pass|
|00001570| 63 6f 75 6e 74 3d 30 3b | 20 70 61 73 73 63 6f 75 |count=0;| passcou|
|00001580| 6e 74 3c 6d 61 78 70 61 | 73 73 3b 20 70 61 73 73 |nt<maxpa|ss; pass|
|00001590| 63 6f 75 6e 74 2b 2b 29 | 20 7b 0d 09 09 09 70 62 |count++)| {....pb|
|000015a0| 2d 3e 63 73 43 6f 64 65 | 20 09 09 09 09 09 09 09 |->csCode| .......|
|000015b0| 09 09 09 09 3d 20 54 43 | 50 4e 6f 43 6f 70 79 52 |....= TC|PNoCopyR|
|000015c0| 63 76 3b 0d 09 09 09 70 | 62 2d 3e 63 73 50 61 72 |cv;....p|b->csPar|
|000015d0| 61 6d 2e 72 65 63 65 69 | 76 65 2e 63 6f 6d 6d 61 |am.recei|ve.comma|
|000015e0| 6e 64 54 69 6d 65 6f 75 | 74 56 61 6c 75 65 09 3d |ndTimeou|tValue.=|
|000015f0| 20 31 3b 20 2f 2a 20 73 | 65 63 6f 6e 64 73 2c 20 | 1; /* s|econds, |
|00001600| 30 20 3d 20 62 6c 6f 63 | 6b 69 6e 67 20 2a 2f 0d |0 = bloc|king */.|
|00001610| 09 09 09 70 62 2d 3e 63 | 73 50 61 72 61 6d 2e 72 |...pb->c|sParam.r|
|00001620| 65 63 65 69 76 65 2e 72 | 64 73 50 74 72 20 09 09 |eceive.r|dsPtr ..|
|00001630| 09 09 09 3d 20 28 50 74 | 72 29 72 64 73 61 72 72 |...= (Pt|r)rdsarr|
|00001640| 61 79 3b 0d 09 09 09 70 | 62 2d 3e 63 73 50 61 72 |ay;....p|b->csPar|
|00001650| 61 6d 2e 72 65 63 65 69 | 76 65 2e 72 64 73 4c 65 |am.recei|ve.rdsLe|
|00001660| 6e 67 74 68 20 09 09 09 | 09 3d 20 54 43 50 5f 4d |ngth ...|.= TCP_M|
|00001670| 41 58 5f 57 44 53 3b 0d | 0d 09 09 09 69 66 20 28 |AX_WDS;.|....if (|
|00001680| 50 42 43 6f 6e 74 72 6f | 6c 53 79 6e 63 28 50 61 |PBContro|lSync(Pa|
|00001690| 72 6d 42 6c 6b 50 74 72 | 28 70 62 29 29 29 0d 09 |rmBlkPtr|(pb)))..|
|000016a0| 09 09 09 62 72 65 61 6b | 3b 0d 0d 09 09 09 70 62 |...break|;.....pb|
|000016b0| 2d 3e 63 73 43 6f 64 65 | 20 09 09 09 09 09 09 09 |->csCode| .......|
|000016c0| 09 09 09 09 3d 20 54 43 | 50 52 63 76 42 66 72 52 |....= TC|PRcvBfrR|
|000016d0| 65 74 75 72 6e 3b 0d 09 | 09 09 70 62 2d 3e 63 73 |eturn;..|..pb->cs|
|000016e0| 50 61 72 61 6d 2e 72 65 | 63 65 69 76 65 2e 72 64 |Param.re|ceive.rd|
|000016f0| 73 50 74 72 20 09 09 09 | 09 09 3d 20 28 50 74 72 |sPtr ...|..= (Ptr|
|00001700| 29 72 64 73 61 72 72 61 | 79 3b 0d 0d 09 09 09 50 |)rdsarra|y;.....P|
|00001710| 42 43 6f 6e 74 72 6f 6c | 53 79 6e 63 28 50 61 72 |BControl|Sync(Par|
|00001720| 6d 42 6c 6b 50 74 72 28 | 70 62 29 29 3b 0d 0d 09 |mBlkPtr(|pb));...|
|00001730| 09 09 53 41 46 45 53 50 | 49 4e 28 66 61 6c 73 65 |..SAFESP|IN(false|
|00001740| 2c 20 53 50 5f 4d 49 53 | 43 2c 20 30 29 3b 0d 09 |, SP_MIS|C, 0);..|
|00001750| 09 09 0d 09 09 09 69 66 | 20 28 65 72 72 6e 6f 29 |......if| (errno)|
|00001760| 0d 09 09 09 09 62 72 65 | 61 6b 3b 0d 09 09 7d 0d |.....bre|ak;...}.|
|00001770| 0d 09 09 69 66 20 28 70 | 61 73 73 63 6f 75 6e 74 |...if (p|asscount|
|00001780| 20 3d 3d 20 6d 61 78 70 | 61 73 73 29 20 7b 09 09 | == maxp|ass) {..|
|00001790| 2f 2a 20 72 65 6d 6f 74 | 65 20 73 69 64 65 20 69 |/* remot|e side i|
|000017a0| 73 6e 27 74 20 62 65 69 | 6e 67 20 6e 69 63 65 20 |sn't bei|ng nice |
|000017b0| 2a 2f 0d 09 09 09 2f 2a | 20 74 68 65 6e 20 74 72 |*/..../*| then tr|
|000017c0| 79 20 61 67 61 69 6e 20 | 2a 2f 0d 0d 09 09 09 50 |y again |*/.....P|
|000017d0| 42 43 6f 6e 74 72 6f 6c | 53 79 6e 63 28 50 61 72 |BControl|Sync(Par|
|000017e0| 6d 42 6c 6b 50 74 72 28 | 70 62 29 29 3b 0d 0d 09 |mBlkPtr(|pb));...|
|000017f0| 09 09 66 6f 72 20 28 70 | 61 73 73 63 6f 75 6e 74 |..for (p|asscount|
|00001800| 3d 30 3b 20 70 61 73 73 | 63 6f 75 6e 74 3c 6d 61 |=0; pass|count<ma|
|00001810| 78 70 61 73 73 3b 20 70 | 61 73 73 63 6f 75 6e 74 |xpass; p|asscount|
|00001820| 2b 2b 29 20 7b 0d 09 09 | 09 09 70 62 2d 3e 63 73 |++) {...|..pb->cs|
|00001830| 43 6f 64 65 20 09 09 09 | 09 09 09 09 09 09 09 09 |Code ...|........|
|00001840| 3d 20 54 43 50 4e 6f 43 | 6f 70 79 52 63 76 3b 0d |= TCPNoC|opyRcv;.|
|00001850| 09 09 09 09 70 62 2d 3e | 63 73 50 61 72 61 6d 2e |....pb->|csParam.|
|00001860| 72 65 63 65 69 76 65 2e | 63 6f 6d 6d 61 6e 64 54 |receive.|commandT|
|00001870| 69 6d 65 6f 75 74 56 61 | 6c 75 65 09 3d 20 31 3b |imeoutVa|lue.= 1;|
|00001880| 20 2f 2a 20 73 65 63 6f | 6e 64 73 2c 20 30 20 3d | /* seco|nds, 0 =|
|00001890| 20 62 6c 6f 63 6b 69 6e | 67 20 2a 2f 0d 09 09 09 | blockin|g */....|
|000018a0| 09 70 62 2d 3e 63 73 50 | 61 72 61 6d 2e 72 65 63 |.pb->csP|aram.rec|
|000018b0| 65 69 76 65 2e 72 64 73 | 50 74 72 20 09 09 09 09 |eive.rds|Ptr ....|
|000018c0| 09 3d 20 28 50 74 72 29 | 72 64 73 61 72 72 61 79 |.= (Ptr)|rdsarray|
|000018d0| 3b 0d 09 09 09 09 70 62 | 2d 3e 63 73 50 61 72 61 |;.....pb|->csPara|
|000018e0| 6d 2e 72 65 63 65 69 76 | 65 2e 72 64 73 4c 65 6e |m.receiv|e.rdsLen|
|000018f0| 67 74 68 20 09 09 09 09 | 3d 20 54 43 50 5f 4d 41 |gth ....|= TCP_MA|
|00001900| 58 5f 57 44 53 3b 0d 0d | 09 09 09 09 69 66 20 28 |X_WDS;..|....if (|
|00001910| 50 42 43 6f 6e 74 72 6f | 6c 53 79 6e 63 28 50 61 |PBContro|lSync(Pa|
|00001920| 72 6d 42 6c 6b 50 74 72 | 28 70 62 29 29 29 0d 09 |rmBlkPtr|(pb)))..|
|00001930| 09 09 09 09 62 72 65 61 | 6b 3b 0d 0d 09 09 09 09 |....brea|k;......|
|00001940| 70 62 2d 3e 63 73 43 6f | 64 65 20 09 09 09 09 09 |pb->csCo|de .....|
|00001950| 09 09 09 09 09 09 3d 20 | 54 43 50 52 63 76 42 66 |......= |TCPRcvBf|
|00001960| 72 52 65 74 75 72 6e 3b | 0d 09 09 09 09 70 62 2d |rReturn;|.....pb-|
|00001970| 3e 63 73 50 61 72 61 6d | 2e 72 65 63 65 69 76 65 |>csParam|.receive|
|00001980| 2e 72 64 73 50 74 72 20 | 09 09 09 09 09 3d 20 28 |.rdsPtr |.....= (|
|00001990| 50 74 72 29 72 64 73 61 | 72 72 61 79 3b 0d 0d 09 |Ptr)rdsa|rray;...|
|000019a0| 09 09 09 50 42 43 6f 6e | 74 72 6f 6c 53 79 6e 63 |...PBCon|trolSync|
|000019b0| 28 50 61 72 6d 42 6c 6b | 50 74 72 28 70 62 29 29 |(ParmBlk|Ptr(pb))|
|000019c0| 3b 0d 0d 09 09 09 09 53 | 41 46 45 53 50 49 4e 28 |;......S|AFESPIN(|
|000019d0| 66 61 6c 73 65 2c 20 53 | 50 5f 4d 49 53 43 2c 20 |false, S|P_MISC, |
|000019e0| 30 29 3b 0d 09 09 09 09 | 0d 09 09 09 09 69 66 20 |0);.....|.....if |
|000019f0| 28 65 72 72 6e 6f 29 0d | 09 09 09 09 09 62 72 65 |(errno).|.....bre|
|00001a00| 61 6b 3b 0d 09 09 09 7d | 0d 09 09 7d 0d 09 7d 0d |ak;....}|...}..}.|
|00001a10| 0d 09 2f 2a 20 64 65 73 | 74 72 6f 79 20 74 68 65 |../* des|troy the|
|00001a20| 20 73 74 72 65 61 6d 20 | 2a 2f 0d 09 70 62 2d 3e | stream |*/..pb->|
|00001a30| 63 73 43 6f 64 65 20 09 | 3d 20 54 43 50 52 65 6c |csCode .|= TCPRel|
|00001a40| 65 61 73 65 3b 0d 0d 09 | 69 66 20 28 50 42 43 6f |ease;...|if (PBCo|
|00001a50| 6e 74 72 6f 6c 53 79 6e | 63 28 50 61 72 6d 42 6c |ntrolSyn|c(ParmBl|
|00001a60| 6b 50 74 72 28 70 62 29 | 29 29 0d 09 09 72 65 74 |kPtr(pb)|))...ret|
|00001a70| 75 72 6e 3b 0d 0d 09 44 | 69 73 70 6f 73 50 74 72 |urn;...D|isposPtr|
|00001a80| 28 70 62 2d 3e 63 73 50 | 61 72 61 6d 2e 63 72 65 |(pb->csP|aram.cre|
|00001a90| 61 74 65 2e 72 63 76 42 | 75 66 66 29 3b 20 2f 2a |ate.rcvB|uff); /*|
|00001aa0| 20 74 68 65 72 65 20 69 | 73 20 6e 6f 20 72 65 6c | there i|s no rel|
|00001ab0| 65 61 73 65 20 70 62 20 | 2a 2f 0d 09 0d 09 64 65 |ease pb |*/....de|
|00001ac0| 6c 65 74 65 20 73 65 6c | 66 3b 0d 7d 0d 0d 54 43 |lete sel|f;.}..TC|
|00001ad0| 50 69 6f 70 62 20 2a 20 | 54 43 50 53 6f 63 6b 65 |Piopb * |TCPSocke|
|00001ae0| 74 3a 3a 47 65 74 50 42 | 28 29 0d 7b 0d 09 41 6e |t::GetPB|().{..An|
|00001af0| 6e 6f 74 61 74 65 64 50 | 42 20 2a 09 70 62 09 09 |notatedP|B *.pb..|
|00001b00| 3d 09 49 4e 45 54 53 6f | 63 6b 65 74 73 2e 47 65 |=.INETSo|ckets.Ge|
|00001b10| 74 50 42 28 29 3b 0d 09 | 70 62 2d 3e 54 43 50 28 |tPB();..|pb->TCP(|
|00001b20| 29 2d 3e 69 6f 43 52 65 | 66 4e 75 6d 20 3d 09 49 |)->ioCRe|fNum =.I|
|00001b30| 4e 45 54 53 6f 63 6b 65 | 74 73 2e 44 72 69 76 65 |NETSocke|ts.Drive|
|00001b40| 72 28 29 3b 0d 09 70 62 | 2d 3e 54 43 50 28 29 2d |r();..pb|->TCP()-|
|00001b50| 3e 74 63 70 53 74 72 65 | 61 6d 09 3d 09 73 74 72 |>tcpStre|am.=.str|
|00001b60| 65 61 6d 3b 0d 0d 09 70 | 62 2d 3e 53 65 74 4f 77 |eam;...p|b->SetOw|
|00001b70| 6e 65 72 28 74 68 69 73 | 29 3b 0d 0d 09 72 65 74 |ner(this|);...ret|
|00001b80| 75 72 6e 20 70 62 2d 3e | 54 43 50 28 29 3b 0d 7d |urn pb->|TCP();.}|
|00001b90| 0d 0d 75 5f 6c 6f 6e 67 | 20 54 43 50 53 6f 63 6b |..u_long| TCPSock|
|00001ba0| 65 74 3a 3a 41 76 61 69 | 6c 61 62 6c 65 28 29 0d |et::Avai|lable().|
|00001bb0| 7b 0d 09 54 43 50 69 6f | 70 62 20 2a 20 70 62 3b |{..TCPio|pb * pb;|
|00001bc0| 0d 0d 09 70 62 09 09 09 | 09 3d 20 47 65 74 50 42 |...pb...|.= GetPB|
|00001bd0| 28 29 3b 0d 09 70 62 2d | 3e 63 73 43 6f 64 65 20 |();..pb-|>csCode |
|00001be0| 09 3d 20 54 43 50 53 74 | 61 74 75 73 3b 0d 0d 09 |.= TCPSt|atus;...|
|00001bf0| 50 42 43 6f 6e 74 72 6f | 6c 53 79 6e 63 28 50 61 |PBContro|lSync(Pa|
|00001c00| 72 6d 42 6c 6b 50 74 72 | 28 70 62 29 29 3b 0d 0d |rmBlkPtr|(pb));..|
|00001c10| 09 72 65 74 75 72 6e 20 | 70 62 2d 3e 63 73 50 61 |.return |pb->csPa|
|00001c20| 72 61 6d 2e 73 74 61 74 | 75 73 2e 61 6d 74 55 6e |ram.stat|us.amtUn|
|00001c30| 72 65 61 64 44 61 74 61 | 3b 0d 7d 0d 0d 2f 2a 0d |readData|;.}../*.|
|00001c40| 20 2a 09 63 6f 6e 6e 65 | 63 74 20 2d 20 69 6e 69 | *.conne|ct - ini|
|00001c50| 74 69 61 74 65 20 61 20 | 63 6f 6e 6e 65 63 74 69 |tiate a |connecti|
|00001c60| 6f 6e 20 6f 6e 20 61 20 | 4d 61 63 54 43 50 20 73 |on on a |MacTCP s|
|00001c70| 6f 63 6b 65 74 0d 20 2a | 0d 20 2a 09 09 54 68 69 |ocket. *|. *..Thi|
|00001c80| 73 20 63 61 6c 6c 20 61 | 74 74 65 6d 70 74 73 20 |s call a|ttempts |
|00001c90| 74 6f 20 6d 61 6b 65 20 | 61 0d 20 2a 09 09 63 6f |to make |a. *..co|
|00001ca0| 6e 6e 65 63 74 69 6f 6e | 20 74 6f 20 61 6e 6f 74 |nnection| to anot|
|00001cb0| 68 65 72 20 73 6f 63 6b | 65 74 2e 20 54 68 65 20 |her sock|et. The |
|00001cc0| 6f 74 68 65 72 20 73 6f | 63 6b 65 74 20 69 73 20 |other so|cket is |
|00001cd0| 73 70 65 63 69 66 69 65 | 64 0d 20 2a 09 09 62 79 |specifie|d. *..by|
|00001ce0| 20 61 6e 20 69 6e 74 65 | 72 6e 65 74 20 61 64 64 | an inte|rnet add|
|00001cf0| 72 65 73 73 20 61 6e 64 | 20 70 6f 72 74 2e 0d 20 |ress and| port.. |
|00001d00| 2a 0d 20 2a 09 09 54 43 | 50 20 73 6f 63 6b 65 74 |*. *..TC|P socket|
|00001d10| 73 20 6d 61 79 20 73 75 | 63 63 65 73 73 66 75 6c |s may su|ccessful|
|00001d20| 6c 79 20 63 6f 6e 6e 65 | 63 74 28 29 20 6f 6e 6c |ly conne|ct() onl|
|00001d30| 79 20 6f 6e 63 65 3b 0d | 20 2a 0d 20 2a 09 09 49 |y once;.| *. *..I|
|00001d40| 66 20 74 68 65 20 63 6f | 6e 6e 65 63 74 69 6f 6e |f the co|nnection|
|00001d50| 20 6f 72 20 62 69 6e 64 | 69 6e 67 20 73 75 63 63 | or bind|ing succ|
|00001d60| 65 65 64 73 2c 20 74 68 | 65 6e 20 30 20 69 73 20 |eeds, th|en 0 is |
|00001d70| 72 65 74 75 72 6e 65 64 | 2e 0d 20 2a 09 09 4f 74 |returned|.. *..Ot|
|00001d80| 68 65 72 77 69 73 65 20 | 61 20 2d 31 20 69 73 20 |herwise |a -1 is |
|00001d90| 72 65 74 75 72 6e 65 64 | 2c 20 61 6e 64 20 61 20 |returned|, and a |
|00001da0| 6d 6f 72 65 20 73 70 65 | 63 69 66 69 63 20 65 72 |more spe|cific er|
|00001db0| 72 6f 72 20 63 6f 64 65 | 0d 20 2a 09 09 69 73 20 |ror code|. *..is |
|00001dc0| 73 74 6f 72 65 64 20 69 | 6e 20 65 72 72 6e 6f 2e |stored i|n errno.|
|00001dd0| 0d 20 2a 0d 20 2a 09 09 | 45 41 46 4e 4f 53 55 50 |. *. *..|EAFNOSUP|
|00001de0| 50 4f 52 54 20 20 20 20 | 20 20 20 20 54 68 65 20 |PORT | The |
|00001df0| 61 64 64 72 65 73 73 20 | 66 61 6d 69 6c 79 20 69 |address |family i|
|00001e00| 6e 20 61 64 64 72 20 69 | 73 20 6e 6f 74 20 41 46 |n addr i|s not AF|
|00001e10| 5f 49 4e 45 54 2e 0d 20 | 2a 0d 20 2a 09 09 45 48 |_INET.. |*. *..EH|
|00001e20| 4f 53 54 55 4e 52 45 41 | 43 48 20 20 20 20 20 20 |OSTUNREA|CH |
|00001e30| 20 20 54 68 65 20 54 43 | 50 20 63 6f 6e 6e 65 63 | The TC|P connec|
|00001e40| 74 69 6f 6e 20 63 61 6d | 65 20 75 70 20 68 61 6c |tion cam|e up hal|
|00001e50| 66 2d 77 61 79 20 61 6e | 64 0d 20 2a 20 20 20 20 |f-way an|d. * |
|00001e60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001e70| 20 20 20 20 20 20 74 68 | 65 6e 20 66 61 69 6c 65 | th|en faile|
|00001e80| 64 2e 0d 20 2a 2f 0d 0d | 69 6e 74 20 54 43 50 53 |d.. */..|int TCPS|
|00001e90| 6f 63 6b 65 74 3a 3a 63 | 6f 6e 6e 65 63 74 28 76 |ocket::c|onnect(v|
|00001ea0| 6f 69 64 20 2a 20 61 64 | 64 72 65 73 73 2c 20 69 |oid * ad|dress, i|
|00001eb0| 6e 74 20 61 64 64 72 6c | 65 6e 29 0d 7b 0d 09 4f |nt addrl|en).{..O|
|00001ec0| 53 45 72 72 09 09 09 09 | 09 09 65 72 72 3b 0d 09 |SErr....|..err;..|
|00001ed0| 73 74 72 75 63 74 20 73 | 6f 63 6b 61 64 64 72 5f |struct s|ockaddr_|
|00001ee0| 69 6e 20 2a 09 61 64 64 | 72 09 3d 09 28 73 74 72 |in *.add|r.=.(str|
|00001ef0| 75 63 74 20 73 6f 63 6b | 61 64 64 72 5f 69 6e 20 |uct sock|addr_in |
|00001f00| 2a 29 20 61 64 64 72 65 | 73 73 3b 0d 09 54 43 50 |*) addre|ss;..TCP|
|00001f10| 69 6f 70 62 09 2a 09 09 | 09 09 70 62 3b 0d 0d 09 |iopb.*..|..pb;...|
|00001f20| 69 66 20 28 61 64 64 72 | 6c 65 6e 20 21 3d 20 73 |if (addr|len != s|
|00001f30| 69 7a 65 6f 66 28 73 74 | 72 75 63 74 20 73 6f 63 |izeof(st|ruct soc|
|00001f40| 6b 61 64 64 72 5f 69 6e | 29 29 0d 09 09 72 65 74 |kaddr_in|))...ret|
|00001f50| 75 72 6e 20 47 55 53 49 | 5f 65 72 72 6f 72 28 45 |urn GUSI|_error(E|
|00001f60| 49 4e 56 41 4c 29 3b 0d | 0d 09 69 66 20 28 61 64 |INVAL);.|..if (ad|
|00001f70| 64 72 2d 3e 73 69 6e 5f | 66 61 6d 69 6c 79 20 21 |dr->sin_|family !|
|00001f80| 3d 20 41 46 5f 49 4e 45 | 54 29 0d 09 09 72 65 74 |= AF_INE|T)...ret|
|00001f90| 75 72 6e 20 47 55 53 49 | 5f 65 72 72 6f 72 28 45 |urn GUSI|_error(E|
|00001fa0| 41 46 4e 4f 53 55 50 50 | 4f 52 54 29 3b 0d 0d 09 |AFNOSUPP|ORT);...|
|00001fb0| 2f 2a 20 4d 61 6b 65 20 | 73 75 72 65 20 74 68 69 |/* Make |sure thi|
|00001fc0| 73 20 73 6f 63 6b 65 74 | 20 63 61 6e 20 63 6f 6e |s socket| can con|
|00001fd0| 6e 65 63 74 2e 20 2a 2f | 0d 09 69 66 20 28 73 73 |nect. */|..if (ss|
|00001fe0| 74 61 74 65 20 3d 3d 20 | 53 4f 43 4b 5f 53 54 41 |tate == |SOCK_STA|
|00001ff0| 54 45 5f 43 4f 4e 4e 45 | 43 54 49 4e 47 29 0d 09 |TE_CONNE|CTING)..|
|00002000| 09 72 65 74 75 72 6e 20 | 47 55 53 49 5f 65 72 72 |.return |GUSI_err|
|00002010| 6f 72 28 45 41 4c 52 45 | 41 44 59 29 3b 0d 09 69 |or(EALRE|ADY);..i|
|00002020| 66 20 28 73 73 74 61 74 | 65 20 21 3d 20 53 4f 43 |f (sstat|e != SOC|
|00002030| 4b 5f 53 54 41 54 45 5f | 55 4e 43 4f 4e 4e 45 43 |K_STATE_|UNCONNEC|
|00002040| 54 45 44 29 0d 09 09 72 | 65 74 75 72 6e 20 47 55 |TED)...r|eturn GU|
|00002050| 53 49 5f 65 72 72 6f 72 | 28 45 49 53 43 4f 4e 4e |SI_error|(EISCONN|
|00002060| 29 3b 0d 0d 09 73 73 74 | 61 74 65 20 3d 20 53 4f |);...sst|ate = SO|
|00002070| 43 4b 5f 53 54 41 54 45 | 5f 43 4f 4e 4e 45 43 54 |CK_STATE|_CONNECT|
|00002080| 49 4e 47 3b 0d 0d 09 70 | 62 09 09 09 09 09 09 09 |ING;...p|b.......|
|00002090| 09 09 09 09 09 09 3d 20 | 47 65 74 50 42 28 29 3b |......= |GetPB();|
|000020a0| 0d 09 70 62 2d 3e 69 6f | 43 6f 6d 70 6c 65 74 69 |..pb->io|Completi|
|000020b0| 6f 6e 09 09 09 09 09 09 | 09 09 3d 20 54 43 50 49 |on......|..= TCPI|
|000020c0| 4f 43 6f 6d 70 6c 65 74 | 69 6f 6e 50 72 6f 63 28 |OComplet|ionProc(|
|000020d0| 74 63 70 5f 63 6f 6e 6e | 65 63 74 5f 64 6f 6e 65 |tcp_conn|ect_done|
|000020e0| 29 3b 0d 09 70 62 2d 3e | 63 73 43 6f 64 65 20 09 |);..pb->|csCode .|
|000020f0| 09 09 09 09 09 09 09 09 | 09 3d 20 54 43 50 41 63 |........|.= TCPAc|
|00002100| 74 69 76 65 4f 70 65 6e | 3b 0d 09 70 62 2d 3e 63 |tiveOpen|;..pb->c|
|00002110| 73 50 61 72 61 6d 2e 6f | 70 65 6e 2e 76 61 6c 69 |sParam.o|pen.vali|
|00002120| 64 69 74 79 46 6c 61 67 | 73 20 09 09 09 3d 20 74 |dityFlag|s ...= t|
|00002130| 69 6d 65 6f 75 74 56 61 | 6c 75 65 20 7c 20 74 69 |imeoutVa|lue | ti|
|00002140| 6d 65 6f 75 74 41 63 74 | 69 6f 6e 3b 0d 09 70 62 |meoutAct|ion;..pb|
|00002150| 2d 3e 63 73 50 61 72 61 | 6d 2e 6f 70 65 6e 2e 75 |->csPara|m.open.u|
|00002160| 6c 70 54 69 6d 65 6f 75 | 74 56 61 6c 75 65 20 09 |lpTimeou|tValue .|
|00002170| 09 3d 20 36 30 20 2f 2a | 20 73 65 63 6f 6e 64 73 |.= 60 /*| seconds|
|00002180| 20 2a 2f 3b 0d 09 70 62 | 2d 3e 63 73 50 61 72 61 | */;..pb|->csPara|
|00002190| 6d 2e 6f 70 65 6e 2e 75 | 6c 70 54 69 6d 65 6f 75 |m.open.u|lpTimeou|
|000021a0| 74 41 63 74 69 6f 6e 20 | 09 09 3d 20 31 20 2f 2a |tAction |..= 1 /*|
|000021b0| 20 31 3a 61 62 6f 72 74 | 20 30 3a 72 65 70 6f 72 | 1:abort| 0:repor|
|000021c0| 74 20 2a 2f 3b 0d 09 70 | 62 2d 3e 63 73 50 61 72 |t */;..p|b->csPar|
|000021d0| 61 6d 2e 6f 70 65 6e 2e | 63 6f 6d 6d 61 6e 64 54 |am.open.|commandT|
|000021e0| 69 6d 65 6f 75 74 56 61 | 6c 75 65 20 09 3d 20 30 |imeoutVa|lue .= 0|
|000021f0| 3b 0d 09 70 62 2d 3e 63 | 73 50 61 72 61 6d 2e 6f |;..pb->c|sParam.o|
|00002200| 70 65 6e 2e 72 65 6d 6f | 74 65 48 6f 73 74 20 09 |pen.remo|teHost .|
|00002210| 09 09 09 3d 20 61 64 64 | 72 2d 3e 73 69 6e 5f 61 |...= add|r->sin_a|
|00002220| 64 64 72 2e 73 5f 61 64 | 64 72 3b 0d 09 70 62 2d |ddr.s_ad|dr;..pb-|
|00002230| 3e 63 73 50 61 72 61 6d | 2e 6f 70 65 6e 2e 72 65 |>csParam|.open.re|
|00002240| 6d 6f 74 65 50 6f 72 74 | 20 09 09 09 09 3d 20 61 |motePort| ....= a|
|00002250| 64 64 72 2d 3e 73 69 6e | 5f 70 6f 72 74 3b 0d 09 |ddr->sin|_port;..|
|00002260| 70 62 2d 3e 63 73 50 61 | 72 61 6d 2e 6f 70 65 6e |pb->csPa|ram.open|
|00002270| 2e 6c 6f 63 61 6c 48 6f | 73 74 20 09 09 09 09 3d |.localHo|st ....=|
|00002280| 20 30 3b 0d 09 70 62 2d | 3e 63 73 50 61 72 61 6d | 0;..pb-|>csParam|
|00002290| 2e 6f 70 65 6e 2e 6c 6f | 63 61 6c 50 6f 72 74 20 |.open.lo|calPort |
|000022a0| 09 09 09 09 3d 20 73 61 | 2e 73 69 6e 5f 70 6f 72 |....= sa|.sin_por|
|000022b0| 74 3b 0d 09 70 62 2d 3e | 63 73 50 61 72 61 6d 2e |t;..pb->|csParam.|
|000022c0| 6f 70 65 6e 2e 64 6f 6e | 74 46 72 61 67 20 09 09 |open.don|tFrag ..|
|000022d0| 09 09 09 3d 20 30 3b 0d | 09 70 62 2d 3e 63 73 50 |...= 0;.|.pb->csP|
|000022e0| 61 72 61 6d 2e 6f 70 65 | 6e 2e 74 69 6d 65 54 6f |aram.ope|n.timeTo|
|000022f0| 4c 69 76 65 20 09 09 09 | 09 3d 20 30 3b 0d 09 70 |Live ...|.= 0;..p|
|00002300| 62 2d 3e 63 73 50 61 72 | 61 6d 2e 6f 70 65 6e 2e |b->csPar|am.open.|
|00002310| 73 65 63 75 72 69 74 79 | 20 09 09 09 09 09 3d 20 |security| .....= |
|00002320| 30 3b 0d 09 70 62 2d 3e | 63 73 50 61 72 61 6d 2e |0;..pb->|csParam.|
|00002330| 6f 70 65 6e 2e 6f 70 74 | 69 6f 6e 43 6e 74 20 09 |open.opt|ionCnt .|
|00002340| 09 09 09 3d 20 30 3b 0d | 0d 09 69 66 20 28 65 72 |...= 0;.|..if (er|
|00002350| 72 20 3d 20 50 42 43 6f | 6e 74 72 6f 6c 41 73 79 |r = PBCo|ntrolAsy|
|00002360| 6e 63 28 50 61 72 6d 42 | 6c 6b 50 74 72 28 70 62 |nc(ParmB|lkPtr(pb|
|00002370| 29 29 29 0d 09 7b 0d 09 | 09 73 73 74 61 74 65 20 |)))..{..|.sstate |
|00002380| 3d 20 53 4f 43 4b 5f 53 | 54 41 54 45 5f 55 4e 43 |= SOCK_S|TATE_UNC|
|00002390| 4f 4e 4e 45 43 54 45 44 | 3b 0d 09 09 72 65 74 75 |ONNECTED|;...retu|
|000023a0| 72 6e 20 54 43 50 5f 65 | 72 72 6f 72 28 65 72 72 |rn TCP_e|rror(err|
|000023b0| 29 3b 0d 09 7d 0d 0d 09 | 69 66 20 28 6e 6f 6e 62 |);..}...|if (nonb|
|000023c0| 6c 6f 63 6b 69 6e 67 29 | 0d 09 09 72 65 74 75 72 |locking)|...retur|
|000023d0| 6e 20 47 55 53 49 5f 65 | 72 72 6f 72 28 45 49 4e |n GUSI_e|rror(EIN|
|000023e0| 50 52 4f 47 52 45 53 53 | 29 3b 0d 0d 09 2f 2a 20 |PROGRESS|);.../* |
|000023f0| 73 79 6e 63 20 63 6f 6e | 6e 65 63 74 20 2d 20 73 |sync con|nect - s|
|00002400| 70 69 6e 20 74 69 6c 6c | 20 54 43 50 41 63 74 69 |pin till| TCPActi|
|00002410| 76 65 4f 70 65 6e 20 63 | 6f 6d 70 6c 65 74 65 73 |veOpen c|ompletes|
|00002420| 20 2a 2f 0d 0d 09 53 41 | 46 45 53 50 49 4e 28 70 | */...SA|FESPIN(p|
|00002430| 62 2d 3e 69 6f 52 65 73 | 75 6c 74 3d 3d 69 6e 50 |b->ioRes|ult==inP|
|00002440| 72 6f 67 72 65 73 73 2c | 20 53 50 5f 4d 49 53 43 |rogress,| SP_MISC|
|00002450| 2c 20 30 29 3b 0d 0d 09 | 69 66 20 28 65 72 72 6e |, 0);...|if (errn|
|00002460| 6f 20 7c 7c ca 70 62 2d | 3e 69 6f 52 65 73 75 6c |o ||.pb-|>ioResul|
|00002470| 74 29 20 7b 0d 09 09 73 | 73 74 61 74 65 20 3d 20 |t) {...s|state = |
|00002480| 53 4f 43 4b 5f 53 54 41 | 54 45 5f 55 4e 43 4f 4e |SOCK_STA|TE_UNCON|
|00002490| 4e 45 43 54 45 44 3b 0d | 09 09 0d 09 09 69 66 20 |NECTED;.|.....if |
|000024a0| 28 65 72 72 6e 6f 29 0d | 09 09 09 72 65 74 75 72 |(errno).|...retur|
|000024b0| 6e 20 2d 31 3b 0d 09 09 | 65 6c 73 65 0d 09 09 09 |n -1;...|else....|
|000024c0| 72 65 74 75 72 6e 20 54 | 43 50 5f 65 72 72 6f 72 |return T|CP_error|
|000024d0| 28 70 62 2d 3e 69 6f 52 | 65 73 75 6c 74 29 3b 0d |(pb->ioR|esult);.|
|000024e0| 09 7d 20 65 6c 73 65 0d | 09 09 72 65 74 75 72 6e |.} else.|..return|
|000024f0| 20 30 3b 0d 7d 0d 0d 69 | 6e 74 20 54 43 50 53 6f | 0;.}..i|nt TCPSo|
|00002500| 63 6b 65 74 3a 3a 6c 69 | 73 74 65 6e 28 69 6e 74 |cket::li|sten(int|
|00002510| 29 0d 7b 0d 09 4f 53 45 | 72 72 09 09 09 65 72 72 |).{..OSE|rr...err|
|00002520| 3b 0d 09 54 43 50 69 6f | 70 62 20 2a 09 70 62 3b |;..TCPio|pb *.pb;|
|00002530| 0d 0d 09 69 66 20 28 73 | 73 74 61 74 65 20 21 3d |...if (s|state !=|
|00002540| 20 53 4f 43 4b 5f 53 54 | 41 54 45 5f 55 4e 43 4f | SOCK_ST|ATE_UNCO|
|00002550| 4e 4e 45 43 54 45 44 29 | 0d 09 09 72 65 74 75 72 |NNECTED)|...retur|
|00002560| 6e 20 47 55 53 49 5f 65 | 72 72 6f 72 28 45 49 53 |n GUSI_e|rror(EIS|
|00002570| 43 4f 4e 4e 29 3b 0d 0d | 09 73 73 74 61 74 65 20 |CONN);..|.sstate |
|00002580| 09 09 09 09 09 09 09 09 | 09 09 09 3d 20 53 4f 43 |........|...= SOC|
|00002590| 4b 5f 53 54 41 54 45 5f | 4c 49 53 54 45 4e 49 4e |K_STATE_|LISTENIN|
|000025a0| 47 3b 0d 09 70 62 09 09 | 09 09 09 09 09 09 09 09 |G;..pb..|........|
|000025b0| 09 09 09 3d 20 47 65 74 | 50 42 28 29 3b 0d 09 70 |...= Get|PB();..p|
|000025c0| 62 2d 3e 69 6f 43 52 65 | 66 4e 75 6d 20 09 09 09 |b->ioCRe|fNum ...|
|000025d0| 09 09 09 09 09 09 3d 20 | 49 4e 45 54 53 6f 63 6b |......= |INETSock|
|000025e0| 65 74 73 2e 44 72 69 76 | 65 72 28 29 3b 0d 09 70 |ets.Driv|er();..p|
|000025f0| 62 2d 3e 69 6f 43 6f 6d | 70 6c 65 74 69 6f 6e 09 |b->ioCom|pletion.|
|00002600| 09 09 09 09 09 09 09 3d | 20 54 43 50 49 4f 43 6f |.......=| TCPIOCo|
|00002610| 6d 70 6c 65 74 69 6f 6e | 50 72 6f 63 28 74 63 70 |mpletion|Proc(tcp|
|00002620| 5f 6c 69 73 74 65 6e 5f | 64 6f 6e 65 29 3b 0d 09 |_listen_|done);..|
|00002630| 70 62 2d 3e 63 73 43 6f | 64 65 20 09 09 09 09 09 |pb->csCo|de .....|
|00002640| 09 09 09 09 09 3d 20 54 | 43 50 50 61 73 73 69 76 |.....= T|CPPassiv|
|00002650| 65 4f 70 65 6e 3b 0d 09 | 70 62 2d 3e 63 73 50 61 |eOpen;..|pb->csPa|
|00002660| 72 61 6d 2e 6f 70 65 6e | 2e 76 61 6c 69 64 69 74 |ram.open|.validit|
|00002670| 79 46 6c 61 67 73 20 09 | 09 09 3d 20 74 69 6d 65 |yFlags .|..= time|
|00002680| 6f 75 74 56 61 6c 75 65 | 20 7c 20 74 69 6d 65 6f |outValue| | timeo|
|00002690| 75 74 41 63 74 69 6f 6e | 3b 0d 09 70 62 2d 3e 63 |utAction|;..pb->c|
|000026a0| 73 50 61 72 61 6d 2e 6f | 70 65 6e 2e 75 6c 70 54 |sParam.o|pen.ulpT|
|000026b0| 69 6d 65 6f 75 74 56 61 | 6c 75 65 20 09 09 3d 20 |imeoutVa|lue ..= |
|000026c0| 32 35 35 20 2f 2a 20 73 | 65 63 6f 6e 64 73 20 2a |255 /* s|econds *|
|000026d0| 2f 3b 0d 09 70 62 2d 3e | 63 73 50 61 72 61 6d 2e |/;..pb->|csParam.|
|000026e0| 6f 70 65 6e 2e 75 6c 70 | 54 69 6d 65 6f 75 74 41 |open.ulp|TimeoutA|
|000026f0| 63 74 69 6f 6e 20 09 09 | 3d 20 30 20 2f 2a 20 31 |ction ..|= 0 /* 1|
|00002700| 3a 61 62 6f 72 74 20 30 | 3a 72 65 70 6f 72 74 20 |:abort 0|:report |
|00002710| 2a 2f 3b 0d 09 70 62 2d | 3e 63 73 50 61 72 61 6d |*/;..pb-|>csParam|
|00002720| 2e 6f 70 65 6e 2e 63 6f | 6d 6d 61 6e 64 54 69 6d |.open.co|mmandTim|
|00002730| 65 6f 75 74 56 61 6c 75 | 65 20 09 3d 20 30 20 2f |eoutValu|e .= 0 /|
|00002740| 2a 20 69 6e 66 69 6e 69 | 74 79 20 2a 2f 3b 0d 09 |* infini|ty */;..|
|00002750| 70 62 2d 3e 63 73 50 61 | 72 61 6d 2e 6f 70 65 6e |pb->csPa|ram.open|
|00002760| 2e 72 65 6d 6f 74 65 48 | 6f 73 74 20 09 09 09 09 |.remoteH|ost ....|
|00002770| 3d 20 30 3b 0d 09 70 62 | 2d 3e 63 73 50 61 72 61 |= 0;..pb|->csPara|
|00002780| 6d 2e 6f 70 65 6e 2e 72 | 65 6d 6f 74 65 50 6f 72 |m.open.r|emotePor|
|00002790| 74 20 09 09 09 09 3d 20 | 30 3b 0d 09 70 62 2d 3e |t ....= |0;..pb->|
|000027a0| 63 73 50 61 72 61 6d 2e | 6f 70 65 6e 2e 6c 6f 63 |csParam.|open.loc|
|000027b0| 61 6c 48 6f 73 74 20 09 | 09 09 09 3d 20 30 3b 0d |alHost .|...= 0;.|
|000027c0| 09 70 62 2d 3e 63 73 50 | 61 72 61 6d 2e 6f 70 65 |.pb->csP|aram.ope|
|000027d0| 6e 2e 6c 6f 63 61 6c 50 | 6f 72 74 20 09 09 09 09 |n.localP|ort ....|
|000027e0| 3d 20 73 61 2e 73 69 6e | 5f 70 6f 72 74 3b 0d 09 |= sa.sin|_port;..|
|000027f0| 70 62 2d 3e 63 73 50 61 | 72 61 6d 2e 6f 70 65 6e |pb->csPa|ram.open|
|00002800| 2e 64 6f 6e 74 46 72 61 | 67 20 09 09 09 09 09 3d |.dontFra|g .....=|
|00002810| 20 30 3b 0d 09 70 62 2d | 3e 63 73 50 61 72 61 6d | 0;..pb-|>csParam|
|00002820| 2e 6f 70 65 6e 2e 74 69 | 6d 65 54 6f 4c 69 76 65 |.open.ti|meToLive|
|00002830| 20 09 09 09 09 3d 20 30 | 3b 0d 09 70 62 2d 3e 63 | ....= 0|;..pb->c|
|00002840| 73 50 61 72 61 6d 2e 6f | 70 65 6e 2e 73 65 63 75 |sParam.o|pen.secu|
|00002850| 72 69 74 79 20 09 09 09 | 09 09 3d 20 30 3b 0d 09 |rity ...|..= 0;..|
|00002860| 70 62 2d 3e 63 73 50 61 | 72 61 6d 2e 6f 70 65 6e |pb->csPa|ram.open|
|00002870| 2e 6f 70 74 69 6f 6e 43 | 6e 74 20 09 09 09 09 3d |.optionC|nt ....=|
|00002880| 20 30 3b 0d 0d 09 69 66 | 20 28 65 72 72 20 3d 20 | 0;...if| (err = |
|00002890| 50 42 43 6f 6e 74 72 6f | 6c 41 73 79 6e 63 28 50 |PBContro|lAsync(P|
|000028a0| 61 72 6d 42 6c 6b 50 74 | 72 28 70 62 29 29 29 20 |armBlkPt|r(pb))) |
|000028b0| 7b 0d 09 09 73 73 74 61 | 74 65 20 3d 20 53 4f 43 |{...ssta|te = SOC|
|000028c0| 4b 5f 53 54 41 54 45 5f | 55 4e 43 4f 4e 4e 45 43 |K_STATE_|UNCONNEC|
|000028d0| 54 45 44 3b 0d 09 09 0d | 09 09 72 65 74 75 72 6e |TED;....|..return|
|000028e0| 20 54 43 50 5f 65 72 72 | 6f 72 28 65 72 72 29 3b | TCP_err|or(err);|
|000028f0| 0d 09 7d 0d 09 0d 09 53 | 41 46 45 53 50 49 4e 28 |..}....S|AFESPIN(|
|00002900| 21 70 62 2d 3e 63 73 50 | 61 72 61 6d 2e 6f 70 65 |!pb->csP|aram.ope|
|00002910| 6e 2e 6c 6f 63 61 6c 50 | 6f 72 74 2c 20 53 50 5f |n.localP|ort, SP_|
|00002920| 4d 49 53 43 2c 20 30 29 | 3b 0d 09 09 0d 09 69 66 |MISC, 0)|;.....if|
|00002930| 20 28 65 72 72 6e 6f 29 | 20 7b 0d 09 09 73 73 74 | (errno)| {...sst|
|00002940| 61 74 65 20 3d 20 53 4f | 43 4b 5f 53 54 41 54 45 |ate = SO|CK_STATE|
|00002950| 5f 55 4e 43 4f 4e 4e 45 | 43 54 45 44 3b 0d 09 09 |_UNCONNE|CTED;...|
|00002960| 0d 09 09 72 65 74 75 72 | 6e 20 2d 31 3b 0d 09 7d |...retur|n -1;..}|
|00002970| 0d 0d 09 73 61 2e 73 69 | 6e 5f 61 64 64 72 2e 73 |...sa.si|n_addr.s|
|00002980| 5f 61 64 64 72 20 09 3d | 20 70 62 2d 3e 63 73 50 |_addr .=| pb->csP|
|00002990| 61 72 61 6d 2e 6f 70 65 | 6e 2e 6c 6f 63 61 6c 48 |aram.ope|n.localH|
|000029a0| 6f 73 74 3b 0d 09 73 61 | 2e 73 69 6e 5f 70 6f 72 |ost;..sa|.sin_por|
|000029b0| 74 20 09 09 09 3d 20 70 | 62 2d 3e 63 73 50 61 72 |t ...= p|b->csPar|
|000029c0| 61 6d 2e 6f 70 65 6e 2e | 6c 6f 63 61 6c 50 6f 72 |am.open.|localPor|
|000029d0| 74 3b 0d 0d 09 72 65 74 | 75 72 6e 20 30 3b 0d 7d |t;...ret|urn 0;.}|
|000029e0| 0d 0d 53 6f 63 6b 65 74 | 20 2a 20 54 43 50 53 6f |..Socket| * TCPSo|
|000029f0| 63 6b 65 74 3a 3a 61 63 | 63 65 70 74 28 76 6f 69 |cket::ac|cept(voi|
|00002a00| 64 20 2a 66 72 6f 6d 2c | 20 69 6e 74 20 2a 66 72 |d *from,| int *fr|
|00002a10| 6f 6d 6c 65 6e 29 0d 7b | 0d 09 54 43 50 53 6f 63 |omlen).{|..TCPSoc|
|00002a20| 6b 65 74 20 2a 09 09 73 | 6f 63 6b 3b 0d 09 54 43 |ket *..s|ock;..TC|
|00002a30| 50 69 6f 70 62 20 2a 09 | 09 70 62 3b 0d 0d 09 69 |Piopb *.|.pb;...i|
|00002a40| 66 20 28 73 73 74 61 74 | 65 20 3d 3d 20 53 4f 43 |f (sstat|e == SOC|
|00002a50| 4b 5f 53 54 41 54 45 5f | 55 4e 43 4f 4e 4e 45 43 |K_STATE_|UNCONNEC|
|00002a60| 54 45 44 29 0d 09 09 69 | 66 20 28 61 73 79 6e 63 |TED)...i|f (async|
|00002a70| 65 72 72 29 20 7b 0d 09 | 09 09 54 43 50 5f 65 72 |err) {..|..TCP_er|
|00002a80| 72 6f 72 28 61 73 79 6e | 63 65 72 72 29 3b 0d 09 |ror(asyn|cerr);..|
|00002a90| 09 09 61 73 79 6e 63 65 | 72 72 20 3d 20 30 3b 0d |..asynce|rr = 0;.|
|00002aa0| 0d 09 09 09 72 65 74 75 | 72 6e 20 6e 69 6c 3b 0d |....retu|rn nil;.|
|00002ab0| 09 09 7d 20 65 6c 73 65 | 0d 09 09 09 72 65 74 75 |..} else|....retu|
|00002ac0| 72 6e 20 28 53 6f 63 6b | 65 74 20 2a 29 20 47 55 |rn (Sock|et *) GU|
|00002ad0| 53 49 5f 65 72 72 6f 72 | 5f 6e 69 6c 28 45 4e 4f |SI_error|_nil(ENO|
|00002ae0| 54 43 4f 4e 4e 29 3b 0d | 0d 09 69 66 20 28 73 73 |TCONN);.|..if (ss|
|00002af0| 74 61 74 65 20 21 3d 20 | 53 4f 43 4b 5f 53 54 41 |tate != |SOCK_STA|
|00002b00| 54 45 5f 4c 49 53 54 45 | 4e 49 4e 47 20 26 26 20 |TE_LISTE|NING && |
|00002b10| 73 73 74 61 74 65 20 21 | 3d 20 53 4f 43 4b 5f 53 |sstate !|= SOCK_S|
|00002b20| 54 41 54 45 5f 4c 49 53 | 5f 43 4f 4e 29 0d 09 09 |TATE_LIS|_CON)...|
|00002b30| 72 65 74 75 72 6e 20 28 | 53 6f 63 6b 65 74 20 2a |return (|Socket *|
|00002b40| 29 20 47 55 53 49 5f 65 | 72 72 6f 72 5f 6e 69 6c |) GUSI_e|rror_nil|
|00002b50| 28 45 4e 4f 54 43 4f 4e | 4e 29 3b 0d 0d 09 69 66 |(ENOTCON|N);...if|
|00002b60| 20 28 73 73 74 61 74 65 | 20 3d 3d 20 53 4f 43 4b | (sstate| == SOCK|
|00002b70| 5f 53 54 41 54 45 5f 4c | 49 53 54 45 4e 49 4e 47 |_STATE_L|ISTENING|
|00002b80| 29 20 7b 0d 09 09 69 66 | 20 28 6e 6f 6e 62 6c 6f |) {...if| (nonblo|
|00002b90| 63 6b 69 6e 67 29 0d 09 | 09 09 72 65 74 75 72 6e |cking)..|..return|
|00002ba0| 20 28 53 6f 63 6b 65 74 | 20 2a 29 20 47 55 53 49 | (Socket| *) GUSI|
|00002bb0| 5f 65 72 72 6f 72 5f 6e | 69 6c 28 45 57 4f 55 4c |_error_n|il(EWOUL|
|00002bc0| 44 42 4c 4f 43 4b 29 3b | 0d 0d 09 09 2f 2a 09 53 |DBLOCK);|..../*.S|
|00002bd0| 70 69 6e 20 74 69 6c 6c | 20 73 6f 63 6b 5f 74 63 |pin till| sock_tc|
|00002be0| 70 5f 6c 69 73 74 65 6e | 5f 64 6f 6e 65 20 72 75 |p_listen|_done ru|
|00002bf0| 6e 73 2e 20 2a 2f 0d 09 | 09 53 50 49 4e 50 28 73 |ns. */..|.SPINP(s|
|00002c00| 73 74 61 74 65 20 3d 3d | 20 53 4f 43 4b 5f 53 54 |state ==| SOCK_ST|
|00002c10| 41 54 45 5f 4c 49 53 54 | 45 4e 49 4e 47 2c 20 53 |ATE_LIST|ENING, S|
|00002c20| 50 5f 4d 49 53 43 2c 20 | 30 29 3b 0d 0d 09 09 2f |P_MISC, |0);..../|
|00002c30| 2a 20 67 6f 74 20 6e 6f | 74 69 66 69 63 61 74 69 |* got no|tificati|
|00002c40| 6f 6e 20 2d 20 77 61 73 | 20 69 74 20 73 75 63 63 |on - was| it succ|
|00002c50| 65 73 73 3f 20 2a 2f 0d | 09 09 69 66 20 28 73 73 |ess? */.|..if (ss|
|00002c60| 74 61 74 65 20 21 3d 20 | 53 4f 43 4b 5f 53 54 41 |tate != |SOCK_STA|
|00002c70| 54 45 5f 4c 49 53 5f 43 | 4f 4e 29 20 7b 0d 09 09 |TE_LIS_C|ON) {...|
|00002c80| 09 28 76 6f 69 64 29 20 | 54 43 50 5f 65 72 72 6f |.(void) |TCP_erro|
|00002c90| 72 28 61 73 79 6e 63 65 | 72 72 29 3b 0d 09 09 09 |r(asynce|rr);....|
|00002ca0| 61 73 79 6e 63 65 72 72 | 20 3d 20 30 3b 0d 09 09 |asyncerr| = 0;...|
|00002cb0| 09 72 65 74 75 72 6e 20 | 6e 69 6c 3b 0d 09 09 7d |.return |nil;...}|
|00002cc0| 0d 09 7d 0d 0d 09 2f 2a | 0d 09 20 2a 20 48 61 76 |..}.../*|.. * Hav|
|00002cd0| 65 20 63 6f 6e 6e 65 63 | 74 69 6f 6e 2e 20 20 44 |e connec|tion. D|
|00002ce0| 75 70 6c 69 63 61 74 65 | 20 74 68 69 73 20 73 6f |uplicate| this so|
|00002cf0| 63 6b 65 74 2e 20 20 54 | 68 65 20 63 6c 69 65 6e |cket. T|he clien|
|00002d00| 74 20 67 65 74 73 20 74 | 68 65 20 63 6f 6e 6e 65 |t gets t|he conne|
|00002d10| 63 74 69 6f 6e 0d 09 20 | 2a 20 6f 6e 20 74 68 65 |ction.. |* on the|
|00002d20| 20 6e 65 77 20 73 6f 63 | 6b 65 74 20 61 6e 64 20 | new soc|ket and |
|00002d30| 49 20 63 72 65 61 74 65 | 20 61 20 6e 65 77 20 73 |I create| a new s|
|00002d40| 74 72 65 61 6d 20 6f 6e | 20 74 68 65 20 6f 6c 64 |tream on| the old|
|00002d50| 20 73 6f 63 6b 65 74 20 | 61 6e 64 20 70 75 74 20 | socket |and put |
|00002d60| 69 74 0d 09 20 2a 20 69 | 6e 20 6c 69 73 74 65 6e |it.. * i|n listen|
|00002d70| 20 73 74 61 74 65 2e 0d | 09 20 2a 2f 0d 09 73 73 | state..|. */..ss|
|00002d80| 74 61 74 65 20 09 3d 20 | 53 4f 43 4b 5f 53 54 41 |tate .= |SOCK_STA|
|00002d90| 54 45 5f 43 4f 4e 4e 45 | 43 54 45 44 3b 0d 09 73 |TE_CONNE|CTED;..s|
|00002da0| 6f 63 6b 09 09 3d 20 6e | 65 77 20 54 43 50 53 6f |ock..= n|ew TCPSo|
|00002db0| 63 6b 65 74 28 74 68 69 | 73 29 3b 0d 0d 09 69 66 |cket(thi|s);...if|
|00002dc0| 20 28 21 73 6f 63 6b 29 | 0d 09 7b 0d 09 09 2f 2a | (!sock)|..{.../*|
|00002dd0| 09 41 62 6f 72 74 20 74 | 68 65 20 69 6e 63 6f 6d |.Abort t|he incom|
|00002de0| 69 6e 67 20 63 6f 6e 6e | 65 63 74 69 6f 6e 2e 20 |ing conn|ection. |
|00002df0| 2a 2f 0d 09 09 70 62 20 | 09 09 09 09 3d 20 47 65 |*/...pb |....= Ge|
|00002e00| 74 50 42 28 29 3b 0d 09 | 09 70 62 2d 3e 63 73 43 |tPB();..|.pb->csC|
|00002e10| 6f 64 65 20 09 09 3d 20 | 54 43 50 41 62 6f 72 74 |ode ..= |TCPAbort|
|00002e20| 3b 0d 0d 09 09 50 42 43 | 6f 6e 74 72 6f 6c 53 79 |;....PBC|ontrolSy|
|00002e30| 6e 63 28 50 61 72 6d 42 | 6c 6b 50 74 72 28 70 62 |nc(ParmB|lkPtr(pb|
|00002e40| 29 29 3b 0d 0d 09 09 73 | 73 74 61 74 65 20 3d 20 |));....s|state = |
|00002e50| 53 4f 43 4b 5f 53 54 41 | 54 45 5f 55 4e 43 4f 4e |SOCK_STA|TE_UNCON|
|00002e60| 4e 45 43 54 45 44 3b 0d | 0d 09 09 2f 2a 20 74 72 |NECTED;.|.../* tr|
|00002e70| 79 20 61 6e 64 20 70 75 | 74 20 74 68 65 20 73 6f |y and pu|t the so|
|00002e80| 63 6b 65 74 20 62 61 63 | 6b 20 69 6e 20 6c 69 73 |cket bac|k in lis|
|00002e90| 74 65 6e 20 6d 6f 64 65 | 20 2a 2f 0d 09 09 69 66 |ten mode| */...if|
|00002ea0| 20 28 6c 69 73 74 65 6e | 28 35 29 20 3c 20 30 29 | (listen|(5) < 0)|
|00002eb0| 0d 09 09 7b 0d 09 09 09 | 73 73 74 61 74 65 20 3d |...{....|sstate =|
|00002ec0| 20 53 4f 43 4b 5f 53 54 | 41 54 45 5f 55 4e 43 4f | SOCK_ST|ATE_UNCO|
|00002ed0| 4e 4e 45 43 54 45 44 3b | 0d 09 09 09 72 65 74 75 |NNECTED;|....retu|
|00002ee0| 72 6e 20 6e 69 6c 3b 09 | 09 2f 2a 20 65 72 72 6e |rn nil;.|./* errn|
|00002ef0| 6f 20 61 6c 72 65 61 64 | 79 20 73 65 74 20 2a 2f |o alread|y set */|
|00002f00| 0d 09 09 7d 0d 09 09 72 | 65 74 75 72 6e 20 28 53 |...}...r|eturn (S|
|00002f10| 6f 63 6b 65 74 20 2a 29 | 20 47 55 53 49 5f 65 72 |ocket *)| GUSI_er|
|00002f20| 72 6f 72 5f 6e 69 6c 28 | 45 4e 4f 4d 45 4d 29 3b |ror_nil(|ENOMEM);|
|00002f30| 0d 09 7d 0d 0d 09 2f 2a | 20 43 72 65 61 74 65 20 |..}.../*| Create |
|00002f40| 61 20 6e 65 77 20 4d 61 | 63 54 43 50 20 73 74 72 |a new Ma|cTCP str|
|00002f50| 65 61 6d 20 6f 6e 20 74 | 68 65 20 6f 6c 64 20 73 |eam on t|he old s|
|00002f60| 6f 63 6b 65 74 20 61 6e | 64 20 70 75 74 20 69 74 |ocket an|d put it|
|00002f70| 20 69 6e 74 6f 20 2a 2f | 0d 09 2f 2a 20 6c 69 73 | into */|../* lis|
|00002f80| 74 65 6e 20 73 74 61 74 | 65 20 74 6f 20 61 63 63 |ten stat|e to acc|
|00002f90| 65 70 74 20 6d 6f 72 65 | 20 63 6f 6e 6e 65 63 74 |ept more| connect|
|00002fa0| 69 6f 6e 73 2e 20 2a 2f | 0d 09 73 73 74 61 74 65 |ions. */|..sstate|
|00002fb0| 20 3d 20 53 4f 43 4b 5f | 53 54 41 54 45 5f 55 4e | = SOCK_|STATE_UN|
|00002fc0| 43 4f 4e 4e 45 43 54 45 | 44 3b 0d 0d 09 70 62 09 |CONNECTE|D;...pb.|
|00002fd0| 09 09 09 09 09 09 09 09 | 09 09 3d 20 47 65 74 50 |........|..= GetP|
|00002fe0| 42 28 29 3b 0d 09 70 62 | 2d 3e 63 73 43 6f 64 65 |B();..pb|->csCode|
|00002ff0| 20 09 09 09 09 09 09 09 | 09 3d 20 54 43 50 43 72 | .......|.= TCPCr|
|00003000| 65 61 74 65 3b 0d 09 70 | 62 2d 3e 63 73 50 61 72 |eate;..p|b->csPar|
|00003010| 61 6d 2e 63 72 65 61 74 | 65 2e 72 63 76 42 75 66 |am.creat|e.rcvBuf|
|00003020| 66 20 09 09 3d 20 28 63 | 68 61 72 20 2a 29 4e 65 |f ..= (c|har *)Ne|
|00003030| 77 50 74 72 28 53 54 52 | 45 41 4d 5f 42 55 46 46 |wPtr(STR|EAM_BUFF|
|00003040| 45 52 5f 53 49 5a 45 29 | 3b 0d 09 70 62 2d 3e 63 |ER_SIZE)|;..pb->c|
|00003050| 73 50 61 72 61 6d 2e 63 | 72 65 61 74 65 2e 72 63 |sParam.c|reate.rc|
|00003060| 76 42 75 66 66 4c 65 6e | 20 09 3d 20 53 54 52 45 |vBuffLen| .= STRE|
|00003070| 41 4d 5f 42 55 46 46 45 | 52 5f 53 49 5a 45 3b 0d |AM_BUFFE|R_SIZE;.|
|00003080| 09 70 62 2d 3e 63 73 50 | 61 72 61 6d 2e 63 72 65 |.pb->csP|aram.cre|
|00003090| 61 74 65 2e 6e 6f 74 69 | 66 79 50 72 6f 63 20 09 |ate.noti|fyProc .|
|000030a0| 3d 20 74 63 70 5f 6e 6f | 74 69 66 79 3b 0d 09 70 |= tcp_no|tify;..p|
|000030b0| 62 2d 3e 63 73 50 61 72 | 61 6d 2e 63 72 65 61 74 |b->csPar|am.creat|
|000030c0| 65 2e 75 73 65 72 44 61 | 74 61 50 74 72 09 3d 20 |e.userDa|taPtr.= |
|000030d0| 50 74 72 28 73 65 6c 66 | 29 3b 0d 0d 09 73 77 69 |Ptr(self|);...swi|
|000030e0| 74 63 68 28 50 42 43 6f | 6e 74 72 6f 6c 53 79 6e |tch(PBCo|ntrolSyn|
|000030f0| 63 28 50 61 72 6d 42 6c | 6b 50 74 72 28 70 62 29 |c(ParmBl|kPtr(pb)|
|00003100| 29 29 0d 09 7b 0d 09 09 | 63 61 73 65 20 6e 6f 45 |))..{...|case noE|
|00003110| 72 72 3a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |rr: | |
|00003120| 20 20 20 20 09 62 72 65 | 61 6b 3b 0d 09 09 63 61 | .bre|ak;...ca|
|00003130| 73 65 20 69 6e 76 61 6c | 69 64 4c 65 6e 67 74 68 |se inval|idLength|
|00003140| 3a 20 20 20 20 20 20 20 | 20 20 09 72 65 74 75 72 |: | .retur|
|00003150| 6e 20 28 53 6f 63 6b 65 | 74 20 2a 29 20 47 55 53 |n (Socke|t *) GUS|
|00003160| 49 5f 65 72 72 6f 72 5f | 6e 69 6c 28 45 4e 4f 42 |I_error_|nil(ENOB|
|00003170| 55 46 53 29 3b 0d 09 09 | 63 61 73 65 20 69 6e 76 |UFS);...|case inv|
|00003180| 61 6c 69 64 42 75 66 50 | 74 72 3a 20 20 20 20 20 |alidBufP|tr: |
|00003190| 20 20 20 20 09 72 65 74 | 75 72 6e 20 28 53 6f 63 | .ret|urn (Soc|
|000031a0| 6b 65 74 20 2a 29 20 47 | 55 53 49 5f 65 72 72 6f |ket *) G|USI_erro|
|000031b0| 72 5f 6e 69 6c 28 45 4e | 4f 42 55 46 53 29 3b 0d |r_nil(EN|OBUFS);.|
|000031c0| 09 09 63 61 73 65 20 69 | 6e 73 75 66 66 69 63 69 |..case i|nsuffici|
|000031d0| 65 6e 74 52 65 73 6f 75 | 72 63 65 73 3a 20 09 72 |entResou|rces: .r|
|000031e0| 65 74 75 72 6e 20 28 53 | 6f 63 6b 65 74 20 2a 29 |eturn (S|ocket *)|
|000031f0| 20 47 55 53 49 5f 65 72 | 72 6f 72 5f 6e 69 6c 28 | GUSI_er|ror_nil(|
|00003200| 45 4d 46 49 4c 45 29 3b | 0d 09 09 64 65 66 61 75 |EMFILE);|...defau|
|00003210| 6c 74 3a 20 09 09 09 09 | 09 09 09 72 65 74 75 72 |lt: ....|...retur|
|00003220| 6e 20 28 53 6f 63 6b 65 | 74 20 2a 29 20 47 55 53 |n (Socke|t *) GUS|
|00003230| 49 5f 65 72 72 6f 72 5f | 6e 69 6c 28 45 4e 45 54 |I_error_|nil(ENET|
|00003240| 44 4f 57 4e 29 3b 0d 09 | 7d 0d 0d 09 70 65 65 72 |DOWN);..|}...peer|
|00003250| 2e 73 69 6e 5f 66 61 6d | 69 6c 79 20 09 09 3d 20 |.sin_fam|ily ..= |
|00003260| 41 46 5f 49 4e 45 54 3b | 0d 09 70 65 65 72 2e 73 |AF_INET;|..peer.s|
|00003270| 69 6e 5f 61 64 64 72 2e | 73 5f 61 64 64 72 20 3d |in_addr.|s_addr =|
|00003280| 20 30 3b 0d 09 70 65 65 | 72 2e 73 69 6e 5f 70 6f | 0;..pee|r.sin_po|
|00003290| 72 74 20 09 09 09 3d 20 | 30 3b 0d 0d 09 62 7a 65 |rt ...= |0;...bze|
|000032a0| 72 6f 28 26 70 65 65 72 | 2e 73 69 6e 5f 7a 65 72 |ro(&peer|.sin_zer|
|000032b0| 6f 5b 30 5d 2c 20 38 29 | 3b 0d 0d 09 61 73 79 6e |o[0], 8)|;...asyn|
|000032c0| 63 65 72 72 20 09 09 09 | 09 3d 20 30 3b 0d 09 73 |cerr ...|.= 0;..s|
|000032d0| 74 72 65 61 6d 20 09 09 | 09 09 09 3d 20 70 62 2d |tream ..|...= pb-|
|000032e0| 3e 74 63 70 53 74 72 65 | 61 6d 3b 0d 0d 09 69 66 |>tcpStre|am;...if|
|000032f0| 20 28 6c 69 73 74 65 6e | 28 35 29 20 3c 20 30 29 | (listen|(5) < 0)|
|00003300| 20 7b 0d 09 09 2f 2a 20 | 6e 6f 74 68 69 6e 67 20 | {.../* |nothing |
|00003310| 74 6f 20 6c 69 73 74 65 | 6e 20 6f 6e 20 2a 2f 0d |to liste|n on */.|
|00003320| 09 09 73 73 74 61 74 65 | 20 3d 20 53 4f 43 4b 5f |..sstate| = SOCK_|
|00003330| 53 54 41 54 45 5f 55 4e | 43 4f 4e 4e 45 43 54 45 |STATE_UN|CONNECTE|
|00003340| 44 3b 0d 0d 09 09 2f 2a | 20 6b 69 6c 6c 20 74 68 |D;..../*| kill th|
|00003350| 65 20 69 6e 63 6f 6d 69 | 6e 67 20 63 6f 6e 6e 65 |e incomi|ng conne|
|00003360| 63 74 69 6f 6e 20 2a 2f | 0d 09 09 70 62 09 09 09 |ction */|...pb...|
|00003370| 09 09 3d 20 73 6f 63 6b | 2d 3e 47 65 74 50 42 28 |..= sock|->GetPB(|
|00003380| 29 3b 0d 09 09 70 62 2d | 3e 63 73 43 6f 64 65 09 |);...pb-|>csCode.|
|00003390| 09 3d 20 54 43 50 52 65 | 6c 65 61 73 65 3b 0d 0d |.= TCPRe|lease;..|
|000033a0| 09 09 69 66 20 28 21 50 | 42 43 6f 6e 74 72 6f 6c |..if (!P|BControl|
|000033b0| 53 79 6e 63 28 50 61 72 | 6d 42 6c 6b 50 74 72 28 |Sync(Par|mBlkPtr(|
|000033c0| 70 62 29 29 29 0d 09 09 | 09 44 69 73 70 6f 73 50 |pb)))...|.DisposP|
|000033d0| 74 72 28 70 62 2d 3e 63 | 73 50 61 72 61 6d 2e 63 |tr(pb->c|sParam.c|
|000033e0| 72 65 61 74 65 2e 72 63 | 76 42 75 66 66 29 3b 20 |reate.rc|vBuff); |
|000033f0| 2f 2a 20 74 68 65 72 65 | 20 69 73 20 6e 6f 20 72 |/* there| is no r|
|00003400| 65 6c 65 61 73 65 20 70 | 62 20 2a 2f 0d 0d 09 09 |elease p|b */....|
|00003410| 72 65 74 75 72 6e 20 6e | 69 6c 3b 20 2f 2a 20 65 |return n|il; /* e|
|00003420| 72 72 6e 6f 20 73 65 74 | 20 2a 2f 0d 09 7d 0d 0d |rrno set| */..}..|
|00003430| 09 2f 2a 20 72 65 74 75 | 72 6e 20 61 64 64 72 65 |./* retu|rn addre|
|00003440| 73 73 20 6f 66 20 70 61 | 72 74 6e 65 72 20 2a 2f |ss of pa|rtner */|
|00003450| 0d 09 6d 65 6d 63 70 79 | 28 66 72 6f 6d 2c 20 26 |..memcpy|(from, &|
|00003460| 70 65 65 72 2c 20 6d 69 | 6e 28 2a 66 72 6f 6d 6c |peer, mi|n(*froml|
|00003470| 65 6e 2c 20 73 69 7a 65 | 6f 66 28 73 74 72 75 63 |en, size|of(struc|
|00003480| 74 20 73 6f 63 6b 61 64 | 64 72 5f 69 6e 29 29 29 |t sockad|dr_in)))|
|00003490| 3b 0d 0d 09 72 65 74 75 | 72 6e 20 73 6f 63 6b 3b |;...retu|rn sock;|
|000034a0| 0d 7d 0d 0d 2f 2a 0d 20 | 2a 09 54 43 50 53 6f 63 |.}../*. |*.TCPSoc|
|000034b0| 6b 65 74 3a 3a 72 65 63 | 76 66 72 6f 6d 28 73 2c |ket::rec|vfrom(s,|
|000034c0| 20 62 75 66 66 65 72 2c | 20 62 75 66 6c 65 6e 2c | buffer,| buflen,|
|000034d0| 20 66 6c 61 67 73 2c 20 | 66 72 6f 6d 2c 20 66 72 | flags, |from, fr|
|000034e0| 6f 6d 6c 65 6e 29 0d 20 | 2a 0d 20 2a 09 09 72 65 |omlen). |*. *..re|
|000034f0| 63 76 66 72 6f 6d 28 29 | 20 61 74 74 65 6d 70 74 |cvfrom()| attempt|
|00003500| 73 20 74 6f 20 72 65 63 | 65 69 76 65 20 61 20 6d |s to rec|eive a m|
|00003510| 65 73 73 61 67 65 20 28 | 69 65 20 61 20 64 61 74 |essage (|ie a dat|
|00003520| 61 67 72 61 6d 29 0d 20 | 2a 09 09 6f 6e 20 74 68 |agram). |*..on th|
|00003530| 65 20 73 6f 63 6b 65 74 | 20 73 2e 0d 20 2a 0d 20 |e socket| s.. *. |
|00003540| 2a 09 09 66 72 6f 6d 20 | 72 65 74 75 72 6e 73 20 |*..from |returns |
|00003550| 74 68 65 20 61 64 64 72 | 65 73 73 20 6f 66 20 74 |the addr|ess of t|
|00003560| 68 65 20 73 6f 63 6b 65 | 74 20 77 68 69 63 68 20 |he socke|t which |
|00003570| 73 65 6e 74 20 74 68 65 | 20 6d 65 73 73 61 67 65 |sent the| message|
|00003580| 2e 0d 20 2a 09 09 66 72 | 6f 6d 6c 65 6e 20 69 73 |.. *..fr|omlen is|
|00003590| 20 74 68 65 20 75 73 75 | 61 6c 20 76 61 6c 75 65 | the usu|al value|
|000035a0| 2d 72 65 73 75 6c 74 20 | 6c 65 6e 67 74 68 20 70 |-result |length p|
|000035b0| 61 72 61 6d 65 74 65 72 | 2e 0d 20 2a 0d 20 2a 09 |arameter|.. *. *.|
|000035c0| 09 54 79 70 69 63 61 6c | 6c 79 2c 20 72 65 61 64 |.Typical|ly, read|
|000035d0| 28 29 20 69 73 20 75 73 | 65 64 20 77 69 74 68 20 |() is us|ed with |
|000035e0| 61 20 54 43 50 20 73 74 | 72 65 61 6d 20 61 6e 64 |a TCP st|ream and|
|000035f0| 20 72 65 63 76 28 29 20 | 77 69 74 68 0d 20 2a 09 | recv() |with. *.|
|00003600| 09 55 44 50 20 77 68 65 | 72 65 20 74 68 65 20 69 |.UDP whe|re the i|
|00003610| 64 65 61 20 6f 66 20 61 | 20 6d 65 73 73 61 67 65 |dea of a| message|
|00003620| 20 6d 61 6b 65 73 20 6d | 6f 72 65 20 73 65 6e 73 | makes m|ore sens|
|00003630| 65 2e 20 42 75 74 20 69 | 6e 20 66 61 63 74 2c 0d |e. But i|n fact,.|
|00003640| 20 2a 09 09 72 65 61 64 | 28 29 20 61 6e 64 20 72 | *..read|() and r|
|00003650| 65 63 76 28 29 20 61 72 | 65 20 65 71 75 69 76 61 |ecv() ar|e equiva|
|00003660| 6c 65 6e 74 2e 0d 20 2a | 0d 20 2a 09 09 52 65 67 |lent.. *|. *..Reg|
|00003670| 61 72 64 6c 65 73 73 20 | 6f 66 20 6e 6f 6e 2d 62 |ardless |of non-b|
|00003680| 6c 6f 63 6b 69 6e 67 20 | 73 74 61 74 75 73 2c 20 |locking |status, |
|00003690| 69 66 20 6c 65 73 73 20 | 64 61 74 61 20 69 73 20 |if less |data is |
|000036a0| 61 76 61 69 6c 61 62 6c | 65 0d 20 2a 09 09 74 68 |availabl|e. *..th|
|000036b0| 61 6e 20 68 61 73 20 62 | 65 65 6e 20 72 65 71 75 |an has b|een requ|
|000036c0| 65 73 74 65 64 2c 20 6f | 6e 6c 79 20 74 68 61 74 |ested, o|nly that|
|000036d0| 20 6d 75 63 68 20 64 61 | 74 61 20 69 73 20 72 65 | much da|ta is re|
|000036e0| 74 75 72 6e 65 64 2e 0d | 20 2a 0d 20 2a 09 09 49 |turned..| *. *..I|
|000036f0| 66 20 74 68 65 20 73 6f | 63 6b 65 74 20 69 73 20 |f the so|cket is |
|00003700| 6d 61 72 6b 65 64 20 66 | 6f 72 20 6e 6f 6e 2d 62 |marked f|or non-b|
|00003710| 6c 6f 63 6b 69 6e 67 20 | 49 2f 4f 2c 20 61 6e 64 |locking |I/O, and|
|00003720| 20 74 68 65 20 73 6f 63 | 6b 65 74 0d 20 2a 09 09 | the soc|ket. *..|
|00003730| 69 73 20 65 6d 70 74 79 | 2c 20 74 68 65 20 6f 70 |is empty|, the op|
|00003740| 65 72 61 74 69 6f 6e 20 | 77 69 6c 6c 20 66 61 69 |eration |will fai|
|00003750| 6c 20 77 69 74 68 20 74 | 68 65 20 65 72 72 6f 72 |l with t|he error|
|00003760| 20 45 57 4f 55 4c 44 42 | 4c 4f 43 4b 2e 0d 20 2a | EWOULDB|LOCK.. *|
|00003770| 09 09 4f 74 68 65 72 77 | 69 73 65 2c 20 74 68 65 |..Otherw|ise, the|
|00003780| 20 6f 70 65 72 61 74 69 | 6f 6e 20 77 69 6c 6c 20 | operati|on will |
|00003790| 62 6c 6f 63 6b 20 75 6e | 74 69 6c 20 64 61 74 61 |block un|til data|
|000037a0| 20 69 73 20 61 76 61 69 | 6c 61 62 6c 65 0d 20 2a | is avai|lable. *|
|000037b0| 09 09 6f 72 20 61 6e 20 | 65 72 72 6f 72 20 6f 63 |..or an |error oc|
|000037c0| 63 75 72 73 2e 0d 20 2a | 0d 20 2a 09 09 41 20 72 |curs.. *|. *..A r|
|000037d0| 65 74 75 72 6e 20 76 61 | 6c 75 65 20 6f 66 20 7a |eturn va|lue of z|
|000037e0| 65 72 6f 20 69 6e 64 69 | 63 61 74 65 73 20 74 68 |ero indi|cates th|
|000037f0| 61 74 20 74 68 65 20 73 | 74 72 65 61 6d 20 68 61 |at the s|tream ha|
|00003800| 73 20 62 65 65 6e 0d 20 | 2a 09 09 63 6c 6f 73 65 |s been. |*..close|
|00003810| 64 20 61 6e 64 20 61 6c | 6c 20 64 61 74 61 20 68 |d and al|l data h|
|00003820| 61 73 20 61 6c 72 65 61 | 64 79 20 62 65 65 6e 20 |as alrea|dy been |
|00003830| 72 65 61 64 2e 20 69 65 | 2e 20 65 6e 64 2d 6f 66 |read. ie|. end-of|
|00003840| 2d 66 69 6c 65 2e 0d 20 | 2a 0d 20 2a 09 09 46 6c |-file.. |*. *..Fl|
|00003850| 61 67 73 20 69 73 20 69 | 67 6e 6f 72 65 64 2e 0d |ags is i|gnored..|
|00003860| 20 2a 0d 20 2a 09 09 49 | 66 20 73 75 63 63 65 73 | *. *..I|f succes|
|00003870| 73 66 75 6c 2c 20 74 68 | 65 20 6e 75 6d 62 65 72 |sful, th|e number|
|00003880| 20 6f 66 20 62 79 74 65 | 73 20 61 63 74 75 61 6c | of byte|s actual|
|00003890| 6c 79 20 72 65 63 65 69 | 76 65 64 20 69 73 0d 20 |ly recei|ved is. |
|000038a0| 2a 09 09 72 65 74 75 72 | 6e 65 64 2e 20 4f 74 68 |*..retur|ned. Oth|
|000038b0| 65 72 77 69 73 65 2c 20 | 61 20 2d 31 20 69 73 20 |erwise, |a -1 is |
|000038c0| 72 65 74 75 72 6e 65 64 | 20 61 6e 64 20 74 68 65 |returned| and the|
|000038d0| 20 67 6c 6f 62 61 6c 20 | 76 61 72 69 61 62 6c 65 | global |variable|
|000038e0| 0d 20 2a 09 09 65 72 72 | 6e 6f 20 69 73 20 73 65 |. *..err|no is se|
|000038f0| 74 20 74 6f 20 69 6e 64 | 69 63 61 74 65 20 74 68 |t to ind|icate th|
|00003900| 65 20 65 72 72 6f 72 2e | 0d 20 2a 0d 20 2a 09 09 |e error.|. *. *..|
|00003910| 45 53 48 55 54 44 4f 57 | 4e 20 20 20 20 54 68 65 |ESHUTDOW|N The|
|00003920| 20 73 6f 63 6b 65 74 20 | 68 61 73 20 62 65 65 6e | socket |has been|
|00003930| 20 73 68 75 74 64 6f 77 | 6e 20 66 6f 72 20 72 65 | shutdow|n for re|
|00003940| 63 65 69 76 65 20 6f 70 | 65 72 61 74 69 6f 6e 73 |ceive op|erations|
|00003950| 2e 0d 20 2a 2f 0d 0d 69 | 6e 74 20 54 43 50 53 6f |.. */..i|nt TCPSo|
|00003960| 63 6b 65 74 3a 3a 72 65 | 63 76 66 72 6f 6d 28 76 |cket::re|cvfrom(v|
|00003970| 6f 69 64 20 2a 20 62 75 | 66 66 65 72 2c 20 69 6e |oid * bu|ffer, in|
|00003980| 74 20 62 75 66 6c 65 6e | 2c 20 69 6e 74 2c 20 76 |t buflen|, int, v|
|00003990| 6f 69 64 20 2a 20 66 72 | 6f 6d 2c 20 69 6e 74 20 |oid * fr|om, int |
|000039a0| 2a 29 0d 7b 0d 09 54 43 | 50 69 6f 70 62 09 2a 09 |*).{..TC|Piopb.*.|
|000039b0| 70 62 3b 0d 09 75 5f 6c | 6f 6e 67 09 09 64 61 74 |pb;..u_l|ong..dat|
|000039c0| 61 61 76 61 69 6c 3b 0d | 0d 09 69 66 20 28 66 72 |aavail;.|..if (fr|
|000039d0| 6f 6d 29 0d 09 09 72 65 | 74 75 72 6e 20 47 55 53 |om)...re|turn GUS|
|000039e0| 49 5f 65 72 72 6f 72 28 | 45 4f 50 4e 4f 54 53 55 |I_error(|EOPNOTSU|
|000039f0| 50 50 29 3b 0d 09 69 66 | 20 28 73 74 61 74 75 73 |PP);..if| (status|
|00003a00| 20 26 20 53 4f 43 4b 5f | 53 54 41 54 55 53 5f 4e | & SOCK_|STATUS_N|
|00003a10| 4f 52 45 41 44 29 0d 09 | 09 72 65 74 75 72 6e 20 |OREAD)..|.return |
|00003a20| 47 55 53 49 5f 65 72 72 | 6f 72 28 45 53 48 55 54 |GUSI_err|or(ESHUT|
|00003a30| 44 4f 57 4e 29 3b 0d 0d | 09 2f 2a 20 73 6f 63 6b |DOWN);..|./* sock|
|00003a40| 65 74 20 68 61 73 6e 27 | 74 20 66 69 6e 69 73 68 |et hasn'|t finish|
|00003a50| 65 64 20 63 6f 6e 6e 65 | 63 74 69 6e 67 20 79 65 |ed conne|cting ye|
|00003a60| 74 20 2a 2f 0d 09 69 66 | 20 28 73 73 74 61 74 65 |t */..if| (sstate|
|00003a70| 20 3d 3d 20 53 4f 43 4b | 5f 53 54 41 54 45 5f 43 | == SOCK|_STATE_C|
|00003a80| 4f 4e 4e 45 43 54 49 4e | 47 29 0d 09 7b 0d 09 09 |ONNECTIN|G)..{...|
|00003a90| 69 66 20 28 6e 6f 6e 62 | 6c 6f 63 6b 69 6e 67 29 |if (nonb|locking)|
|00003aa0| 0d 09 09 09 72 65 74 75 | 72 6e 20 47 55 53 49 5f |....retu|rn GUSI_|
|00003ab0| 65 72 72 6f 72 28 45 57 | 4f 55 4c 44 42 4c 4f 43 |error(EW|OULDBLOC|
|00003ac0| 4b 29 3b 0d 0d 09 09 2f | 2a 20 61 73 79 6e 63 20 |K);..../|* async |
|00003ad0| 63 6f 6e 6e 65 63 74 20 | 61 6e 64 20 73 79 6e 63 |connect |and sync|
|00003ae0| 20 72 65 63 76 3f 20 2a | 2f 0d 0d 09 09 53 50 49 | recv? *|/....SPI|
|00003af0| 4e 28 73 73 74 61 74 65 | 20 3d 3d 20 53 4f 43 4b |N(sstate| == SOCK|
|00003b00| 5f 53 54 41 54 45 5f 43 | 4f 4e 4e 45 43 54 49 4e |_STATE_C|ONNECTIN|
|00003b10| 47 2c 53 50 5f 4d 49 53 | 43 2c 30 29 3b 0d 09 7d |G,SP_MIS|C,0);..}|
|00003b20| 0d 0d 09 2f 2a 20 73 6f | 63 6b 65 74 20 69 73 20 |.../* so|cket is |
|00003b30| 6e 6f 74 20 63 6f 6e 6e | 65 63 74 65 64 20 2a 2f |not conn|ected */|
|00003b40| 0d 09 69 66 20 28 21 28 | 73 73 74 61 74 65 20 3d |..if (!(|sstate =|
|00003b50| 3d 20 53 4f 43 4b 5f 53 | 54 41 54 45 5f 43 4f 4e |= SOCK_S|TATE_CON|
|00003b60| 4e 45 43 54 45 44 29 29 | 0d 09 7b 0d 09 09 2f 2a |NECTED))|..{.../*|
|00003b70| 20 73 65 65 20 69 66 20 | 74 68 65 20 63 6f 6e 6e | see if |the conn|
|00003b80| 65 63 74 20 64 69 65 64 | 20 28 70 72 65 74 74 79 |ect died| (pretty|
|00003b90| 20 70 6f 6f 72 20 74 65 | 73 74 29 20 2a 2f 0d 09 | poor te|st) */..|
|00003ba0| 09 69 66 20 28 73 73 74 | 61 74 65 20 3d 3d 20 53 |.if (sst|ate == S|
|00003bb0| 4f 43 4b 5f 53 54 41 54 | 45 5f 55 4e 43 4f 4e 4e |OCK_STAT|E_UNCONN|
|00003bc0| 45 43 54 45 44 20 26 26 | 20 61 73 79 6e 63 65 72 |ECTED &&| asyncer|
|00003bd0| 72 20 21 3d 20 30 20 26 | 26 20 61 73 79 6e 63 65 |r != 0 &|& asynce|
|00003be0| 72 72 20 21 3d 20 31 29 | 0d 09 09 7b 0d 09 09 09 |rr != 1)|...{....|
|00003bf0| 28 76 6f 69 64 29 20 54 | 43 50 5f 65 72 72 6f 72 |(void) T|CP_error|
|00003c00| 28 61 73 79 6e 63 65 72 | 72 29 3b 0d 09 09 09 61 |(asyncer|r);....a|
|00003c10| 73 79 6e 63 65 72 72 20 | 3d 20 30 3b 0d 09 09 09 |syncerr |= 0;....|
|00003c20| 72 65 74 75 72 6e 20 2d | 31 3b 0d 09 09 7d 0d 0d |return -|1;...}..|
|00003c30| 09 09 2f 2a 20 49 20 67 | 75 65 73 73 20 68 65 20 |../* I g|uess he |
|00003c40| 6a 75 73 74 20 66 6f 72 | 67 6f 74 20 2a 2f 0d 09 |just for|got */..|
|00003c50| 09 72 65 74 75 72 6e 20 | 47 55 53 49 5f 65 72 72 |.return |GUSI_err|
|00003c60| 6f 72 28 45 4e 4f 54 43 | 4f 4e 4e 29 3b 0d 09 7d |or(ENOTC|ONN);..}|
|00003c70| 0d 0d 09 64 61 74 61 61 | 76 61 69 6c 20 3d 20 41 |...dataa|vail = A|
|00003c80| 76 61 69 6c 61 62 6c 65 | 28 29 3b 0d 0d 09 69 66 |vailable|();...if|
|00003c90| 20 28 6e 6f 6e 62 6c 6f | 63 6b 69 6e 67 20 26 26 | (nonblo|cking &&|
|00003ca0| 20 21 64 61 74 61 61 76 | 61 69 6c 29 0d 09 09 72 | !dataav|ail)...r|
|00003cb0| 65 74 75 72 6e 20 47 55 | 53 49 5f 65 72 72 6f 72 |eturn GU|SI_error|
|00003cc0| 28 45 57 4f 55 4c 44 42 | 4c 4f 43 4b 29 3b 0d 0d |(EWOULDB|LOCK);..|
|00003cd0| 09 72 65 63 76 42 75 66 | 09 3d 20 28 63 68 61 72 |.recvBuf|.= (char|
|00003ce0| 20 2a 29 20 62 75 66 66 | 65 72 3b 0d 09 72 65 63 | *) buff|er;..rec|
|00003cf0| 76 64 09 09 3d 20 30 3b | 0d 09 61 73 79 6e 63 65 |vd..= 0;|..asynce|
|00003d00| 72 72 09 3d 20 69 6e 50 | 72 6f 67 72 65 73 73 3b |rr.= inP|rogress;|
|00003d10| 0d 0d 09 70 62 20 09 09 | 09 09 09 09 09 09 09 09 |...pb ..|........|
|00003d20| 09 09 09 3d 20 47 65 74 | 50 42 28 29 3b 0d 09 70 |...= Get|PB();..p|
|00003d30| 62 2d 3e 69 6f 43 6f 6d | 70 6c 65 74 69 6f 6e 09 |b->ioCom|pletion.|
|00003d40| 09 09 09 09 09 09 09 09 | 3d 20 54 43 50 49 4f 43 |........|= TCPIOC|
|00003d50| 6f 6d 70 6c 65 74 69 6f | 6e 50 72 6f 63 28 74 63 |ompletio|nProc(tc|
|00003d60| 70 5f 72 65 63 76 5f 64 | 6f 6e 65 29 3b 0d 09 70 |p_recv_d|one);..p|
|00003d70| 62 2d 3e 63 73 43 6f 64 | 65 20 09 09 09 09 09 09 |b->csCod|e ......|
|00003d80| 09 09 09 09 09 3d 20 54 | 43 50 52 63 76 3b 0d 09 |.....= T|CPRcv;..|
|00003d90| 70 62 2d 3e 63 73 50 61 | 72 61 6d 2e 72 65 63 65 |pb->csPa|ram.rece|
|00003da0| 69 76 65 2e 63 6f 6d 6d | 61 6e 64 54 69 6d 65 6f |ive.comm|andTimeo|
|00003db0| 75 74 56 61 6c 75 65 20 | 09 3d 20 30 3b 20 2f 2a |utValue |.= 0; /*|
|00003dc0| 20 73 65 63 6f 6e 64 73 | 2c 20 30 20 3d 20 62 6c | seconds|, 0 = bl|
|00003dd0| 6f 63 6b 69 6e 67 20 2a | 2f 0d 09 70 62 2d 3e 63 |ocking *|/..pb->c|
|00003de0| 73 50 61 72 61 6d 2e 72 | 65 63 65 69 76 65 2e 72 |sParam.r|eceive.r|
|00003df0| 63 76 42 75 66 66 20 09 | 09 09 09 09 3d 20 72 65 |cvBuff .|....= re|
|00003e00| 63 76 42 75 66 3b 0d 09 | 70 62 2d 3e 63 73 50 61 |cvBuf;..|pb->csPa|
|00003e10| 72 61 6d 2e 72 65 63 65 | 69 76 65 2e 72 63 76 42 |ram.rece|ive.rcvB|
|00003e20| 75 66 66 4c 65 6e 20 09 | 09 09 09 3d 20 6d 69 6e |uffLen .|...= min|
|00003e30| 28 62 75 66 6c 65 6e 2c | 54 43 50 5f 4d 41 58 5f |(buflen,|TCP_MAX_|
|00003e40| 4d 53 47 29 3b 0d 0d 09 | 50 42 43 6f 6e 74 72 6f |MSG);...|PBContro|
|00003e50| 6c 41 73 79 6e 63 28 50 | 61 72 6d 42 6c 6b 50 74 |lAsync(P|armBlkPt|
|00003e60| 72 28 70 62 29 29 3b 0d | 0d 09 2f 2a 20 54 68 69 |r(pb));.|../* Thi|
|00003e70| 73 20 69 73 20 70 6f 74 | 65 6e 74 69 61 6c 6c 79 |s is pot|entially|
|00003e80| 20 64 61 6e 67 65 72 6f | 75 73 2c 20 61 73 20 74 | dangero|us, as t|
|00003e90| 68 65 72 65 20 64 6f 65 | 73 6e 27 74 20 73 65 65 |here doe|sn't see|
|00003ea0| 6d 20 74 6f 20 62 65 20 | 61 20 77 61 79 20 74 6f |m to be |a way to|
|00003eb0| 0d 09 09 73 74 6f 70 20 | 74 68 65 20 72 65 63 65 |...stop |the rece|
|00003ec0| 69 76 65 0d 09 2a 2f 0d | 09 53 50 49 4e 28 70 62 |ive..*/.|.SPIN(pb|
|00003ed0| 2d 3e 69 6f 52 65 73 75 | 6c 74 3d 3d 69 6e 50 72 |->ioResu|lt==inPr|
|00003ee0| 6f 67 72 65 73 73 20 26 | 26 20 21 72 65 63 76 64 |ogress &|& !recvd|
|00003ef0| 2c 20 53 50 5f 53 54 52 | 45 41 4d 5f 52 45 41 44 |, SP_STR|EAM_READ|
|00003f00| 2c 20 62 75 66 6c 65 6e | 29 3b 0d 0d 09 69 66 20 |, buflen|);...if |
|00003f10| 28 70 62 2d 3e 69 6f 52 | 65 73 75 6c 74 20 3d 3d |(pb->ioR|esult ==|
|00003f20| 20 63 6f 6d 6d 61 6e 64 | 54 69 6d 65 6f 75 74 29 | command|Timeout)|
|00003f30| 0d 09 09 70 62 2d 3e 69 | 6f 52 65 73 75 6c 74 20 |...pb->i|oResult |
|00003f40| 3d 20 6e 6f 45 72 72 3b | 0d 0d 09 73 77 69 74 63 |= noErr;|...switc|
|00003f50| 68 28 70 62 2d 3e 69 6f | 52 65 73 75 6c 74 29 0d |h(pb->io|Result).|
|00003f60| 09 7b 0d 09 09 63 61 73 | 65 20 6e 6f 45 72 72 3a |.{...cas|e noErr:|
|00003f70| 0d 09 09 09 61 73 79 6e | 63 65 72 72 20 3d 20 6e |....asyn|cerr = n|
|00003f80| 6f 45 72 72 3b 0d 0d 09 | 09 09 72 65 74 75 72 6e |oErr;...|..return|
|00003f90| 20 72 65 63 76 64 3b 0d | 0d 09 09 63 61 73 65 20 | recvd;.|...case |
|00003fa0| 63 6f 6e 6e 65 63 74 69 | 6f 6e 43 6c 6f 73 69 6e |connecti|onClosin|
|00003fb0| 67 3a 0d 09 09 09 72 65 | 74 75 72 6e 20 72 65 63 |g:....re|turn rec|
|00003fc0| 76 64 3b 0d 0d 09 09 63 | 61 73 65 20 63 6f 6e 6e |vd;....c|ase conn|
|00003fd0| 65 63 74 69 6f 6e 54 65 | 72 6d 69 6e 61 74 65 64 |ectionTe|rminated|
|00003fe0| 3a 0d 09 09 09 2f 2a 20 | 54 68 65 20 63 6f 6e 6e |:..../* |The conn|
|00003ff0| 65 63 74 69 6f 6e 20 69 | 73 20 61 62 6f 72 74 65 |ection i|s aborte|
|00004000| 64 2e 20 2a 2f 0d 09 09 | 09 73 73 74 61 74 65 20 |d. */...|.sstate |
|00004010| 3d 20 53 4f 43 4b 5f 53 | 54 41 54 45 5f 55 4e 43 |= SOCK_S|TATE_UNC|
|00004020| 4f 4e 4e 45 43 54 45 44 | 3b 0d 0d 09 09 09 72 65 |ONNECTED|;.....re|
|00004030| 74 75 72 6e 20 47 55 53 | 49 5f 65 72 72 6f 72 28 |turn GUS|I_error(|
|00004040| 45 4e 4f 54 43 4f 4e 4e | 29 3b 0d 0d 09 09 63 61 |ENOTCONN|);....ca|
|00004050| 73 65 20 63 6f 6d 6d 61 | 6e 64 54 69 6d 65 6f 75 |se comma|ndTimeou|
|00004060| 74 3a 20 2f 2a 20 74 68 | 69 73 20 6f 6e 65 20 73 |t: /* th|is one s|
|00004070| 68 6f 75 6c 64 20 62 65 | 20 63 61 75 67 68 74 20 |hould be| caught |
|00004080| 62 79 20 73 6f 63 6b 5f | 74 63 70 5f 72 65 63 76 |by sock_|tcp_recv|
|00004090| 5f 64 6f 6e 65 20 2a 2f | 0d 09 09 63 61 73 65 20 |_done */|...case |
|000040a0| 63 6f 6e 6e 65 63 74 69 | 6f 6e 44 6f 65 73 6e 74 |connecti|onDoesnt|
|000040b0| 45 78 69 73 74 3a 0d 09 | 09 63 61 73 65 20 69 6e |Exist:..|.case in|
|000040c0| 76 61 6c 69 64 53 74 72 | 65 61 6d 50 74 72 3a 0d |validStr|eamPtr:.|
|000040d0| 09 09 63 61 73 65 20 69 | 6e 76 61 6c 69 64 4c 65 |..case i|nvalidLe|
|000040e0| 6e 67 74 68 3a 0d 09 09 | 63 61 73 65 20 69 6e 76 |ngth:...|case inv|
|000040f0| 61 6c 69 64 42 75 66 50 | 74 72 3a 0d 09 09 64 65 |alidBufP|tr:...de|
|00004100| 66 61 75 6c 74 3a 0d 09 | 09 09 72 65 74 75 72 6e |fault:..|..return|
|00004110| 20 54 43 50 5f 65 72 72 | 6f 72 28 70 62 2d 3e 69 | TCP_err|or(pb->i|
|00004120| 6f 52 65 73 75 6c 74 29 | 3b 0d 09 7d 0d 7d 0d 0d |oResult)|;..}.}..|
|00004130| 2f 2a 0d 20 2a 09 54 43 | 50 53 6f 63 6b 65 74 3a |/*. *.TC|PSocket:|
|00004140| 3a 73 65 6e 64 74 6f 28 | 73 2c 20 62 75 66 66 65 |:sendto(|s, buffe|
|00004150| 72 2c 20 62 75 66 6c 65 | 6e 2c 20 66 6c 61 67 73 |r, bufle|n, flags|
|00004160| 2c 20 74 6f 2c 20 74 6f | 6c 65 6e 29 0d 20 2a 0d |, to, to|len). *.|
|00004170| 20 2a 09 09 73 65 6e 64 | 74 6f 28 29 20 69 73 20 | *..send|to() is |
|00004180| 75 73 65 64 20 74 6f 20 | 74 72 61 6e 73 6d 69 74 |used to |transmit|
|00004190| 20 61 20 6d 65 73 73 61 | 67 65 20 74 6f 20 61 6e | a messa|ge to an|
|000041a0| 6f 74 68 65 72 0d 20 2a | 09 09 73 6f 63 6b 65 74 |other. *|..socket|
|000041b0| 20 6f 6e 20 74 68 65 20 | 73 6f 63 6b 65 74 20 73 | on the |socket s|
|000041c0| 2e 0d 20 2a 0d 20 2a 09 | 09 54 79 70 69 63 61 6c |.. *. *.|.Typical|
|000041d0| 6c 79 2c 20 77 72 69 74 | 65 28 29 20 69 73 20 75 |ly, writ|e() is u|
|000041e0| 73 65 64 20 77 69 74 68 | 20 61 20 54 43 50 20 73 |sed with| a TCP s|
|000041f0| 74 72 65 61 6d 20 61 6e | 64 20 73 65 6e 64 28 29 |tream an|d send()|
|00004200| 20 77 69 74 68 0d 20 2a | 09 09 55 44 50 20 77 68 | with. *|..UDP wh|
|00004210| 65 72 65 20 74 68 65 20 | 69 64 65 61 20 6f 66 20 |ere the |idea of |
|00004220| 61 20 6d 65 73 73 61 67 | 65 20 6d 61 6b 65 73 20 |a messag|e makes |
|00004230| 6d 6f 72 65 20 73 65 6e | 73 65 2e 20 42 75 74 20 |more sen|se. But |
|00004240| 69 6e 20 66 61 63 74 2c | 0d 20 2a 09 09 77 72 69 |in fact,|. *..wri|
|00004250| 74 65 28 29 20 61 6e 64 | 20 73 65 6e 64 28 29 20 |te() and| send() |
|00004260| 61 72 65 20 65 71 75 69 | 76 61 6c 65 6e 74 2e 0d |are equi|valent..|
|00004270| 20 2a 0d 20 2a 09 09 57 | 72 69 74 65 28 29 20 61 | *. *..W|rite() a|
|00004280| 6e 64 20 73 65 6e 64 28 | 29 20 6f 70 65 72 61 74 |nd send(|) operat|
|00004290| 69 6f 6e 73 20 61 72 65 | 20 6e 6f 74 20 63 6f 6e |ions are| not con|
|000042a0| 73 69 64 65 72 65 64 20 | 63 6f 6d 70 6c 65 74 65 |sidered |complete|
|000042b0| 0d 20 2a 09 09 75 6e 74 | 69 6c 20 61 6c 6c 20 64 |. *..unt|il all d|
|000042c0| 61 74 61 20 68 61 73 20 | 62 65 65 6e 20 73 65 6e |ata has |been sen|
|000042d0| 74 20 61 6e 64 20 61 63 | 6b 6e 6f 77 6c 65 64 67 |t and ac|knowledg|
|000042e0| 65 64 2e 0d 20 2a 0d 20 | 2a 09 09 49 66 20 61 20 |ed.. *. |*..If a |
|000042f0| 73 6f 63 6b 65 74 20 69 | 73 20 6d 61 72 6b 65 64 |socket i|s marked|
|00004300| 20 66 6f 72 20 6e 6f 6e | 2d 62 6c 6f 63 6b 69 6e | for non|-blockin|
|00004310| 67 20 49 2f 4f 2c 20 74 | 68 65 20 6f 70 65 72 61 |g I/O, t|he opera|
|00004320| 74 69 6f 6e 0d 20 2a 09 | 09 77 69 6c 6c 20 72 65 |tion. *.|.will re|
|00004330| 74 75 72 6e 20 61 6e 20 | 27 65 72 72 6f 72 27 20 |turn an |'error' |
|00004340| 6f 66 20 45 49 4e 50 52 | 4f 47 52 45 53 53 2e 0d |of EINPR|OGRESS..|
|00004350| 20 2a 0d 20 2a 09 09 49 | 66 20 74 68 65 20 73 6f | *. *..I|f the so|
|00004360| 63 6b 65 74 20 69 73 20 | 6e 6f 74 20 6d 61 72 6b |cket is |not mark|
|00004370| 65 64 20 66 6f 72 20 6e | 6f 6e 2d 62 6c 6f 63 6b |ed for n|on-block|
|00004380| 69 6e 67 20 49 2f 4f 2c | 20 74 68 65 20 77 72 69 |ing I/O,| the wri|
|00004390| 74 65 20 77 69 6c 6c 0d | 20 2a 09 09 62 6c 6f 63 |te will.| *..bloc|
|000043a0| 6b 20 75 6e 74 69 6c 20 | 73 70 61 63 65 20 62 65 |k until |space be|
|000043b0| 63 6f 6d 65 73 20 61 76 | 61 69 6c 61 62 6c 65 2e |comes av|ailable.|
|000043c0| 0d 20 2a 0d 20 2a 09 09 | 77 72 69 74 65 28 29 20 |. *. *..|write() |
|000043d0| 61 6e 64 20 73 65 6e 64 | 28 29 20 6d 61 79 20 62 |and send|() may b|
|000043e0| 65 20 75 73 65 64 20 6f | 6e 6c 79 20 77 68 65 6e |e used o|nly when|
|000043f0| 20 74 68 65 20 73 6f 63 | 6b 65 74 20 69 73 20 69 | the soc|ket is i|
|00004400| 6e 20 61 20 63 6f 6e 6e | 65 63 74 65 64 0d 20 2a |n a conn|ected. *|
|00004410| 09 09 73 74 61 74 65 2c | 20 73 65 6e 64 74 6f 28 |..state,| sendto(|
|00004420| 29 20 6d 61 79 20 62 65 | 20 75 73 65 64 20 61 74 |) may be| used at|
|00004430| 20 61 6e 79 20 74 69 6d | 65 2e 0d 20 2a 0d 20 2a | any tim|e.. *. *|
|00004440| 09 09 46 6c 61 67 73 20 | 69 73 20 69 67 6e 6f 72 |..Flags |is ignor|
|00004450| 65 64 2e 0d 20 2a 0d 20 | 2a 09 09 54 68 65 73 65 |ed.. *. |*..These|
|00004460| 20 63 61 6c 6c 73 20 72 | 65 74 75 72 6e 20 74 68 | calls r|eturn th|
|00004470| 65 20 6e 75 6d 62 65 72 | 20 6f 66 20 62 79 74 65 |e number| of byte|
|00004480| 73 20 73 65 6e 74 2c 20 | 6f 72 20 2d 31 20 69 66 |s sent, |or -1 if|
|00004490| 20 61 6e 20 65 72 72 6f | 72 0d 20 2a 09 09 6f 63 | an erro|r. *..oc|
|000044a0| 63 75 72 72 65 64 2e 0d | 20 2a 0d 20 2a 09 09 45 |curred..| *. *..E|
|000044b0| 49 4e 56 41 4c 20 20 20 | 20 20 20 20 20 20 20 09 |INVAL | .|
|000044c0| 54 68 65 20 73 75 6d 20 | 6f 66 20 74 68 65 20 69 |The sum |of the i|
|000044d0| 6f 76 5f 6c 65 6e 20 76 | 61 6c 75 65 73 20 69 6e |ov_len v|alues in|
|000044e0| 20 74 68 65 20 69 6f 76 | 20 61 72 72 61 79 20 77 | the iov| array w|
|000044f0| 61 73 0d 20 2a 09 09 09 | 09 09 09 09 09 67 72 65 |as. *...|.....gre|
|00004500| 61 74 65 72 20 74 68 61 | 6e 20 36 35 35 33 35 20 |ater tha|n 65535 |
|00004510| 28 54 43 50 29 20 6f 72 | 20 36 35 35 30 37 20 28 |(TCP) or| 65507 (|
|00004520| 55 44 50 29 20 6f 72 20 | 74 68 65 72 65 0d 20 2a |UDP) or |there. *|
|00004530| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004540| 20 20 20 20 20 20 77 65 | 72 65 20 74 6f 6f 20 6d | we|re too m|
|00004550| 61 6e 79 20 65 6e 74 72 | 69 65 73 20 69 6e 20 74 |any entr|ies in t|
|00004560| 68 65 20 61 72 72 61 79 | 20 28 31 36 20 66 6f 72 |he array| (16 for|
|00004570| 20 54 43 50 20 6f 72 0d | 20 2a 20 20 20 20 20 20 | TCP or.| * |
|00004580| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004590| 36 20 66 6f 72 20 55 44 | 50 29 2e 0d 20 2a 0d 20 |6 for UD|P).. *. |
|000045a0| 2a 09 09 45 53 48 55 54 | 44 4f 57 4e 20 20 20 20 |*..ESHUT|DOWN |
|000045b0| 20 20 20 20 54 68 65 20 | 73 6f 63 6b 65 74 20 68 | The |socket h|
|000045c0| 61 73 20 62 65 65 6e 20 | 73 68 75 74 64 6f 77 6e |as been |shutdown|
|000045d0| 20 66 6f 72 20 73 65 6e | 64 20 6f 70 65 72 61 74 | for sen|d operat|
|000045e0| 69 6f 6e 73 2e 0d 20 2a | 0d 20 2a 09 09 45 4d 53 |ions.. *|. *..EMS|
|000045f0| 47 53 49 5a 45 20 20 20 | 20 20 20 20 20 20 54 68 |GSIZE | Th|
|00004600| 65 20 6d 65 73 73 61 67 | 65 20 69 73 20 74 6f 6f |e messag|e is too|
|00004610| 20 62 69 67 20 74 6f 20 | 73 65 6e 64 20 69 6e 20 | big to |send in |
|00004620| 6f 6e 65 20 64 61 74 61 | 67 72 61 6d 2e 20 28 55 |one data|gram. (U|
|00004630| 44 50 29 0d 20 2a 0d 20 | 2a 09 09 45 4e 4f 42 55 |DP). *. |*..ENOBU|
|00004640| 46 53 20 20 20 20 20 20 | 20 20 20 20 54 68 65 20 |FS | The |
|00004650| 74 72 61 6e 73 6d 69 74 | 20 71 75 65 75 65 20 69 |transmit| queue i|
|00004660| 73 20 66 75 6c 6c 2e 20 | 28 55 44 50 29 0d 20 2a |s full. |(UDP). *|
|00004670| 2f 0d 0d 69 6e 74 20 54 | 43 50 53 6f 63 6b 65 74 |/..int T|CPSocket|
|00004680| 3a 3a 73 65 6e 64 74 6f | 28 76 6f 69 64 20 2a 20 |::sendto|(void * |
|00004690| 62 75 66 66 65 72 2c 20 | 69 6e 74 20 63 6f 75 6e |buffer, |int coun|
|000046a0| 74 2c 20 69 6e 74 20 66 | 6c 61 67 73 2c 20 76 6f |t, int f|lags, vo|
|000046b0| 69 64 20 2a 20 74 6f 2c | 20 69 6e 74 29 0d 7b 0d |id * to,| int).{.|
|000046c0| 09 69 6e 74 09 09 09 62 | 79 74 65 73 2c 74 6f 77 |.int...b|ytes,tow|
|000046d0| 72 69 74 65 3b 0d 09 6d | 69 6e 69 77 64 73 20 2a |rite;..m|iniwds *|
|000046e0| 09 74 68 69 73 77 64 73 | 3b 0d 09 73 68 6f 72 74 |.thiswds|;..short|
|000046f0| 09 09 09 77 64 73 6e 75 | 6d 3b 0d 09 54 43 50 69 |...wdsnu|m;..TCPi|
|00004700| 6f 70 62 20 2a 09 70 62 | 3b 0d 09 6d 69 6e 69 77 |opb *.pb|;..miniw|
|00004710| 64 73 09 09 77 64 73 61 | 72 72 61 79 5b 54 43 50 |ds..wdsa|rray[TCP|
|00004720| 5f 4d 41 58 5f 57 44 53 | 5d 3b 0d 0d 09 69 66 20 |_MAX_WDS|];...if |
|00004730| 28 73 74 61 74 75 73 20 | 26 20 53 4f 43 4b 5f 53 |(status |& SOCK_S|
|00004740| 54 41 54 55 53 5f 4e 4f | 57 52 49 54 45 29 0d 09 |TATUS_NO|WRITE)..|
|00004750| 09 72 65 74 75 72 6e 20 | 47 55 53 49 5f 65 72 72 |.return |GUSI_err|
|00004760| 6f 72 28 45 53 48 55 54 | 44 4f 57 4e 29 3b 0d 0d |or(ESHUT|DOWN);..|
|00004770| 09 69 66 20 28 74 6f 20 | 21 3d 20 4e 55 4c 4c 29 |.if (to |!= NULL)|
|00004780| 20 2f 2a 20 73 65 6e 64 | 74 6f 20 2a 2f 0d 09 09 | /* send|to */...|
|00004790| 72 65 74 75 72 6e 20 47 | 55 53 49 5f 65 72 72 6f |return G|USI_erro|
|000047a0| 72 28 45 4f 50 4e 4f 54 | 53 55 50 50 29 3b 0d 09 |r(EOPNOT|SUPP);..|
|000047b0| 69 66 20 28 73 73 74 61 | 74 65 20 21 3d 20 53 4f |if (ssta|te != SO|
|000047c0| 43 4b 5f 53 54 41 54 45 | 5f 43 4f 4e 4e 45 43 54 |CK_STATE|_CONNECT|
|000047d0| 45 44 29 0d 09 09 72 65 | 74 75 72 6e 20 47 55 53 |ED)...re|turn GUS|
|000047e0| 49 5f 65 72 72 6f 72 28 | 45 4e 4f 54 43 4f 4e 4e |I_error(|ENOTCONN|
|000047f0| 29 3b 0d 0d 09 2f 2a 20 | 73 6f 63 6b 65 74 20 68 |);.../* |socket h|
|00004800| 61 73 6e 27 74 20 66 69 | 6e 69 73 68 65 64 20 63 |asn't fi|nished c|
|00004810| 6f 6e 6e 65 63 74 69 6e | 67 20 79 65 74 20 2a 2f |onnectin|g yet */|
|00004820| 0d 09 69 66 20 28 73 73 | 74 61 74 65 20 3d 3d 20 |..if (ss|tate == |
|00004830| 53 4f 43 4b 5f 53 54 41 | 54 45 5f 43 4f 4e 4e 45 |SOCK_STA|TE_CONNE|
|00004840| 43 54 49 4e 47 29 20 7b | 0d 09 09 69 66 20 28 6e |CTING) {|...if (n|
|00004850| 6f 6e 62 6c 6f 63 6b 69 | 6e 67 29 0d 09 09 09 72 |onblocki|ng)....r|
|00004860| 65 74 75 72 6e 20 47 55 | 53 49 5f 65 72 72 6f 72 |eturn GU|SI_error|
|00004870| 28 45 41 4c 52 45 41 44 | 59 29 3b 0d 0d 09 09 2f |(EALREAD|Y);..../|
|00004880| 2a 20 61 73 79 6e 63 20 | 63 6f 6e 6e 65 63 74 20 |* async |connect |
|00004890| 61 6e 64 20 73 79 6e 63 | 20 73 65 6e 64 3f 20 2a |and sync| send? *|
|000048a0| 2f 0d 09 09 53 50 49 4e | 28 73 73 74 61 74 65 20 |/...SPIN|(sstate |
|000048b0| 3d 3d 20 53 4f 43 4b 5f | 53 54 41 54 45 5f 43 4f |== SOCK_|STATE_CO|
|000048c0| 4e 4e 45 43 54 49 4e 47 | 2c 20 53 50 5f 4d 49 53 |NNECTING|, SP_MIS|
|000048d0| 43 2c 20 30 29 3b 0d 09 | 7d 0d 0d 09 2f 2a 20 73 |C, 0);..|}.../* s|
|000048e0| 6f 63 6b 65 74 20 69 73 | 20 6e 6f 74 20 63 6f 6e |ocket is| not con|
|000048f0| 6e 65 63 74 65 64 20 2a | 2f 0d 09 69 66 20 28 21 |nected *|/..if (!|
|00004900| 28 73 73 74 61 74 65 20 | 3d 3d 20 53 4f 43 4b 5f |(sstate |== SOCK_|
|00004910| 53 54 41 54 45 5f 43 4f | 4e 4e 45 43 54 45 44 29 |STATE_CO|NNECTED)|
|00004920| 29 20 7b 0d 09 09 2f 2a | 20 73 65 65 20 69 66 20 |) {.../*| see if |
|00004930| 61 20 70 72 65 76 69 6f | 75 73 20 6f 70 65 72 61 |a previo|us opera|
|00004940| 74 69 6f 6e 20 66 61 69 | 6c 65 64 20 2a 2f 0d 09 |tion fai|led */..|
|00004950| 09 69 66 20 28 73 73 74 | 61 74 65 20 3d 3d 20 53 |.if (sst|ate == S|
|00004960| 4f 43 4b 5f 53 54 41 54 | 45 5f 55 4e 43 4f 4e 4e |OCK_STAT|E_UNCONN|
|00004970| 45 43 54 45 44 20 26 26 | 20 61 73 79 6e 63 65 72 |ECTED &&| asyncer|
|00004980| 72 20 21 3d 20 30 29 20 | 7b 0d 09 09 09 28 76 6f |r != 0) |{....(vo|
|00004990| 69 64 29 20 54 43 50 5f | 65 72 72 6f 72 28 61 73 |id) TCP_|error(as|
|000049a0| 79 6e 63 65 72 72 29 3b | 0d 09 09 09 61 73 79 6e |yncerr);|....asyn|
|000049b0| 63 65 72 72 20 3d 20 30 | 3b 0d 09 09 09 72 65 74 |cerr = 0|;....ret|
|000049c0| 75 72 6e 20 2d 31 3b 0d | 09 09 7d 0d 0d 09 09 2f |urn -1;.|..}..../|
|000049d0| 2a 20 49 20 67 75 65 73 | 73 20 68 65 20 6a 75 73 |* I gues|s he jus|
|000049e0| 74 20 66 6f 72 67 6f 74 | 20 2a 2f 0d 09 09 72 65 |t forgot| */...re|
|000049f0| 74 75 72 6e 20 47 55 53 | 49 5f 65 72 72 6f 72 28 |turn GUS|I_error(|
|00004a00| 45 4e 4f 54 43 4f 4e 4e | 29 3b 0d 09 7d 0d 0d 09 |ENOTCONN|);..}...|
|00004a10| 70 62 09 09 09 09 09 3d | 20 47 65 74 50 42 28 29 |pb.....=| GetPB()|
|00004a20| 3b 0d 09 70 62 2d 3e 63 | 73 43 6f 64 65 20 09 09 |;..pb->c|sCode ..|
|00004a30| 3d 20 54 43 50 53 74 61 | 74 75 73 3b 0d 0d 09 69 |= TCPSta|tus;...i|
|00004a40| 66 20 28 50 42 43 6f 6e | 74 72 6f 6c 53 79 6e 63 |f (PBCon|trolSync|
|00004a50| 28 50 61 72 6d 42 6c 6b | 50 74 72 28 70 62 29 29 |(ParmBlk|Ptr(pb))|
|00004a60| 29 0d 09 09 62 79 74 65 | 73 20 3d 20 30 3b 0d 09 |)...byte|s = 0;..|
|00004a70| 65 6c 73 65 20 7b 0d 09 | 09 62 79 74 65 73 20 3d |else {..|.bytes =|
|00004a80| 20 70 62 2d 3e 63 73 50 | 61 72 61 6d 2e 73 74 61 | pb->csP|aram.sta|
|00004a90| 74 75 73 2e 73 65 6e 64 | 57 69 6e 64 6f 77 20 2d |tus.send|Window -|
|00004aa0| 20 70 62 2d 3e 63 73 50 | 61 72 61 6d 2e 73 74 61 | pb->csP|aram.sta|
|00004ab0| 74 75 73 2e 61 6d 74 55 | 6e 61 63 6b 65 64 44 61 |tus.amtU|nackedDa|
|00004ac0| 74 61 3b 0d 0d 09 09 69 | 66 20 28 62 79 74 65 73 |ta;....i|f (bytes|
|00004ad0| 20 3c 20 30 29 0d 09 09 | 09 62 79 74 65 73 20 3d | < 0)...|.bytes =|
|00004ae0| 20 30 3b 0d 09 7d 0d 0d | 09 69 66 20 28 62 79 74 | 0;..}..|.if (byt|
|00004af0| 65 73 20 3c 20 63 6f 75 | 6e 74 20 26 26 20 6e 6f |es < cou|nt && no|
|00004b00| 6e 62 6c 6f 63 6b 69 6e | 67 29 0d 09 09 72 65 74 |nblockin|g)...ret|
|00004b10| 75 72 6e 20 47 55 53 49 | 5f 65 72 72 6f 72 28 45 |urn GUSI|_error(E|
|00004b20| 57 4f 55 4c 44 42 4c 4f | 43 4b 29 3b 0d 0d 09 62 |WOULDBLO|CK);...b|
|00004b30| 79 74 65 73 09 3d 09 63 | 6f 75 6e 74 3b 09 09 09 |ytes.=.c|ount;...|
|00004b40| 09 09 09 09 09 09 09 09 | 09 2f 2a 20 73 61 76 65 |........|./* save|
|00004b50| 20 63 6f 75 6e 74 20 62 | 65 66 6f 72 65 20 77 65 | count b|efore we|
|00004b60| 20 6e 75 6b 65 20 69 74 | 20 2a 2f 0d 09 6d 65 6d | nuke it| */..mem|
|00004b70| 73 65 74 28 77 64 73 61 | 72 72 61 79 2c 20 30 2c |set(wdsa|rray, 0,|
|00004b80| 20 54 43 50 5f 4d 41 58 | 5f 57 44 53 2a 73 69 7a | TCP_MAX|_WDS*siz|
|00004b90| 65 6f 66 28 6d 69 6e 69 | 77 64 73 29 29 3b 09 2f |eof(mini|wds));./|
|00004ba0| 2a 20 63 6c 65 61 72 20 | 75 70 20 74 65 72 6d 69 |* clear |up termi|
|00004bb0| 6e 75 73 20 61 6e 64 20 | 6d 61 72 6b 20 65 6d 70 |nus and |mark emp|
|00004bc0| 74 79 20 2a 2f 0d 09 74 | 68 69 73 77 64 73 20 3d |ty */..t|hiswds =|
|00004bd0| 20 77 64 73 61 72 72 61 | 79 3b 0d 09 77 64 73 6e | wdsarra|y;..wdsn|
|00004be0| 75 6d 20 3d 20 30 3b 0d | 0d 09 77 68 69 6c 65 20 |um = 0;.|..while |
|00004bf0| 28 63 6f 75 6e 74 20 3e | 20 30 29 20 7b 0d 09 09 |(count >| 0) {...|
|00004c00| 2f 2a 20 6d 61 6b 65 20 | 73 75 72 65 20 74 68 65 |/* make |sure the|
|00004c10| 20 74 68 69 6e 67 20 74 | 68 61 74 20 6a 75 73 74 | thing t|hat just|
|00004c20| 20 66 69 6e 69 73 68 65 | 64 20 77 6f 72 6b 65 64 | finishe|d worked|
|00004c30| 20 6f 6b 20 2a 2f 0d 09 | 09 69 66 20 28 61 73 79 | ok */..|.if (asy|
|00004c40| 6e 63 65 72 72 29 20 7b | 0d 09 09 09 28 76 6f 69 |ncerr) {|....(voi|
|00004c50| 64 29 20 47 55 53 49 5f | 65 72 72 6f 72 28 61 73 |d) GUSI_|error(as|
|00004c60| 79 6e 63 65 72 72 29 3b | 0d 09 09 09 61 73 79 6e |yncerr);|....asyn|
|00004c70| 63 65 72 72 20 3d 20 30 | 3b 0d 09 09 09 72 65 74 |cerr = 0|;....ret|
|00004c80| 75 72 6e 20 2d 31 3b 0d | 09 09 7d 0d 0d 09 09 74 |urn -1;.|..}....t|
|00004c90| 6f 77 72 69 74 65 3d 6d | 69 6e 28 63 6f 75 6e 74 |owrite=m|in(count|
|00004ca0| 2c 54 43 50 5f 4d 41 58 | 5f 4d 53 47 29 3b 0d 0d |,TCP_MAX|_MSG);..|
|00004cb0| 09 09 2f 2a 20 66 69 6e | 64 20 61 20 63 6c 65 61 |../* fin|d a clea|
|00004cc0| 6e 20 77 64 73 20 2a 2f | 0d 0d 09 09 77 68 69 6c |n wds */|....whil|
|00004cd0| 65 20 28 74 68 69 73 77 | 64 73 2d 3e 6c 65 6e 67 |e (thisw|ds->leng|
|00004ce0| 74 68 20 21 3d 20 30 29 | 20 7b 0d 09 09 09 77 64 |th != 0)| {....wd|
|00004cf0| 73 6e 75 6d 20 3d 20 28 | 73 68 6f 72 74 29 28 28 |snum = (|short)((|
|00004d00| 77 64 73 6e 75 6d 2b 31 | 29 25 54 43 50 5f 4d 41 |wdsnum+1|)%TCP_MA|
|00004d10| 58 5f 57 44 53 29 3b 20 | 2f 2a 20 67 65 6e 65 72 |X_WDS); |/* gener|
|00004d20| 61 74 65 73 20 63 6f 6d | 70 69 6c 65 72 20 77 61 |ates com|piler wa|
|00004d30| 72 6e 69 6e 67 20 77 2f | 6f 20 73 68 6f 72 74 20 |rning w/|o short |
|00004d40| 2d 20 77 68 79 3f 20 2a | 2f 0d 09 09 09 69 66 20 |- why? *|/....if |
|00004d50| 28 77 64 73 6e 75 6d 29 | 0d 09 09 09 09 74 68 69 |(wdsnum)|.....thi|
|00004d60| 73 77 64 73 2b 2b 3b 0d | 09 09 09 65 6c 73 65 0d |swds++;.|...else.|
|00004d70| 09 09 09 09 74 68 69 73 | 77 64 73 20 3d 20 77 64 |....this|wds = wd|
|00004d80| 73 61 72 72 61 79 3b 0d | 09 09 09 53 50 49 4e 28 |sarray;.|...SPIN(|
|00004d90| 66 61 6c 73 65 2c 20 53 | 50 5f 53 54 52 45 41 4d |false, S|P_STREAM|
|00004da0| 5f 57 52 49 54 45 2c 20 | 63 6f 75 6e 74 29 3b 09 |_WRITE, |count);.|
|00004db0| 2f 2a 20 73 70 69 6e 20 | 6f 6e 63 65 20 2a 2f 0d |/* spin |once */.|
|00004dc0| 09 09 7d 0d 0d 09 09 2f | 2a 20 66 69 6e 64 20 61 |..}..../|* find a|
|00004dd0| 20 63 6c 65 61 6e 20 70 | 62 20 2a 2f 0d 0d 09 09 | clean p|b */....|
|00004de0| 74 68 69 73 77 64 73 2d | 3e 6c 65 6e 67 74 68 09 |thiswds-|>length.|
|00004df0| 09 09 09 09 09 09 3d 20 | 28 73 68 6f 72 74 29 74 |......= |(short)t|
|00004e00| 6f 77 72 69 74 65 3b 0d | 09 09 74 68 69 73 77 64 |owrite;.|..thiswd|
|00004e10| 73 2d 3e 70 74 72 09 09 | 09 09 09 09 09 09 3d 20 |s->ptr..|......= |
|00004e20| 28 63 68 61 72 20 2a 29 | 20 62 75 66 66 65 72 3b |(char *)| buffer;|
|00004e30| 0d 09 09 70 62 09 09 09 | 09 09 09 09 09 09 09 09 |...pb...|........|
|00004e40| 09 3d 20 47 65 74 50 42 | 28 29 3b 0d 09 09 70 62 |.= GetPB|();...pb|
|00004e50| 2d 3e 69 6f 43 6f 6d 70 | 6c 65 74 69 6f 6e 09 09 |->ioComp|letion..|
|00004e60| 09 09 09 09 09 3d 20 54 | 43 50 49 4f 43 6f 6d 70 |.....= T|CPIOComp|
|00004e70| 6c 65 74 69 6f 6e 50 72 | 6f 63 28 74 63 70 5f 73 |letionPr|oc(tcp_s|
|00004e80| 65 6e 64 5f 64 6f 6e 65 | 29 3b 0d 09 09 70 62 2d |end_done|);...pb-|
|00004e90| 3e 63 73 43 6f 64 65 20 | 09 09 09 09 09 09 09 09 |>csCode |........|
|00004ea0| 09 3d 20 54 43 50 53 65 | 6e 64 3b 0d 09 09 70 62 |.= TCPSe|nd;...pb|
|00004eb0| 2d 3e 63 73 50 61 72 61 | 6d 2e 73 65 6e 64 2e 76 |->csPara|m.send.v|
|00004ec0| 61 6c 69 64 69 74 79 46 | 6c 61 67 73 20 09 09 3d |alidityF|lags ..=|
|00004ed0| 20 74 69 6d 65 6f 75 74 | 56 61 6c 75 65 20 7c 20 | timeout|Value | |
|00004ee0| 74 69 6d 65 6f 75 74 41 | 63 74 69 6f 6e 3b 0d 09 |timeoutA|ction;..|
|00004ef0| 09 70 62 2d 3e 63 73 50 | 61 72 61 6d 2e 73 65 6e |.pb->csP|aram.sen|
|00004f00| 64 2e 75 6c 70 54 69 6d | 65 6f 75 74 56 61 6c 75 |d.ulpTim|eoutValu|
|00004f10| 65 20 09 3d 20 36 30 20 | 2f 2a 20 73 65 63 6f 6e |e .= 60 |/* secon|
|00004f20| 64 73 20 2a 2f 3b 0d 09 | 09 70 62 2d 3e 63 73 50 |ds */;..|.pb->csP|
|00004f30| 61 72 61 6d 2e 73 65 6e | 64 2e 75 6c 70 54 69 6d |aram.sen|d.ulpTim|
|00004f40| 65 6f 75 74 41 63 74 69 | 6f 6e 20 09 3d 20 31 20 |eoutActi|on .= 1 |
|00004f50| 2f 2a 20 30 3a 61 62 6f | 72 74 20 31 3a 72 65 70 |/* 0:abo|rt 1:rep|
|00004f60| 6f 72 74 20 2a 2f 3b 0d | 09 09 70 62 2d 3e 63 73 |ort */;.|..pb->cs|
|00004f70| 50 61 72 61 6d 2e 73 65 | 6e 64 2e 70 75 73 68 46 |Param.se|nd.pushF|
|00004f80| 6c 61 67 20 09 09 09 09 | 3d 20 63 6f 75 6e 74 20 |lag ....|= count |
|00004f90| 3c 3d 20 54 43 50 5f 4d | 41 58 5f 4d 53 47 3b 0d |<= TCP_M|AX_MSG;.|
|00004fa0| 09 09 70 62 2d 3e 63 73 | 50 61 72 61 6d 2e 73 65 |..pb->cs|Param.se|
|00004fb0| 6e 64 2e 75 72 67 65 6e | 74 46 6c 61 67 20 09 09 |nd.urgen|tFlag ..|
|00004fc0| 09 3d 20 66 6c 61 67 73 | 20 26 20 4d 53 47 5f 4f |.= flags| & MSG_O|
|00004fd0| 4f 42 3b 0d 09 09 70 62 | 2d 3e 63 73 50 61 72 61 |OB;...pb|->csPara|
|00004fe0| 6d 2e 73 65 6e 64 2e 77 | 64 73 50 74 72 20 09 09 |m.send.w|dsPtr ..|
|00004ff0| 09 09 3d 20 28 50 74 72 | 29 74 68 69 73 77 64 73 |..= (Ptr|)thiswds|
|00005000| 3b 0d 09 09 70 62 2d 3e | 63 73 50 61 72 61 6d 2e |;...pb->|csParam.|
|00005010| 73 65 6e 64 2e 73 65 6e | 64 46 72 65 65 20 09 09 |send.sen|dFree ..|
|00005020| 09 09 3d 20 30 3b 0d 09 | 09 70 62 2d 3e 63 73 50 |..= 0;..|.pb->csP|
|00005030| 61 72 61 6d 2e 73 65 6e | 64 2e 73 65 6e 64 4c 65 |aram.sen|d.sendLe|
|00005040| 6e 67 74 68 20 09 09 09 | 3d 20 30 3b 0d 0d 09 09 |ngth ...|= 0;....|
|00005050| 50 42 43 6f 6e 74 72 6f | 6c 41 73 79 6e 63 28 50 |PBContro|lAsync(P|
|00005060| 61 72 6d 42 6c 6b 50 74 | 72 28 70 62 29 29 3b 0d |armBlkPt|r(pb));.|
|00005070| 0d 09 09 53 50 49 4e 28 | 66 61 6c 73 65 2c 20 53 |...SPIN(|false, S|
|00005080| 50 5f 53 54 52 45 41 4d | 5f 57 52 49 54 45 2c 20 |P_STREAM|_WRITE, |
|00005090| 63 6f 75 6e 74 29 3b 0d | 09 09 63 6f 75 6e 74 20 |count);.|..count |
|000050a0| 09 2d 3d 20 74 6f 77 72 | 69 74 65 3b 0d 09 09 62 |.-= towr|ite;...b|
|000050b0| 75 66 66 65 72 09 3d 20 | 28 63 68 61 72 20 2a 29 |uffer.= |(char *)|
|000050c0| 20 62 75 66 66 65 72 20 | 2b 20 74 6f 77 72 69 74 | buffer |+ towrit|
|000050d0| 65 3b 0d 09 7d 0d 0d 09 | 53 50 49 4e 28 70 62 2d |e;..}...|SPIN(pb-|
|000050e0| 3e 69 6f 52 65 73 75 6c | 74 20 3d 3d 20 69 6e 50 |>ioResul|t == inP|
|000050f0| 72 6f 67 72 65 73 73 2c | 20 53 50 5f 53 54 52 45 |rogress,| SP_STRE|
|00005100| 41 4d 5f 57 52 49 54 45 | 2c 20 30 29 3b 0d 0d 09 |AM_WRITE|, 0);...|
|00005110| 69 66 20 28 21 70 62 2d | 3e 69 6f 52 65 73 75 6c |if (!pb-|>ioResul|
|00005120| 74 29 0d 09 09 72 65 74 | 75 72 6e 28 62 79 74 65 |t)...ret|urn(byte|
|00005130| 73 29 3b 0d 09 65 6c 73 | 65 0d 09 09 72 65 74 75 |s);..els|e...retu|
|00005140| 72 6e 20 54 43 50 5f 65 | 72 72 6f 72 28 70 62 2d |rn TCP_e|rror(pb-|
|00005150| 3e 69 6f 52 65 73 75 6c | 74 29 3b 0d 7d 0d 0d 69 |>ioResul|t);.}..i|
|00005160| 6e 74 20 54 43 50 53 6f | 63 6b 65 74 3a 3a 73 65 |nt TCPSo|cket::se|
|00005170| 6c 65 63 74 28 42 6f 6f | 6c 65 61 6e 20 2a 20 63 |lect(Boo|lean * c|
|00005180| 61 6e 52 65 61 64 2c 20 | 42 6f 6f 6c 65 61 6e 20 |anRead, |Boolean |
|00005190| 2a 20 63 61 6e 57 72 69 | 74 65 2c 20 42 6f 6f 6c |* canWri|te, Bool|
|000051a0| 65 61 6e 20 2a 20 65 78 | 63 65 70 74 69 6f 6e 29 |ean * ex|ception)|
|000051b0| 0d 7b 0d 09 69 6e 74 09 | 09 67 6f 6f 64 69 65 73 |.{..int.|.goodies|
|000051c0| 20 09 3d 20 09 30 3b 0d | 09 42 6f 6f 6c 65 61 6e | .= .0;.|.Boolean|
|000051d0| 09 65 72 72 6f 72 09 09 | 3d 09 66 61 6c 73 65 3b |.error..|=.false;|
|000051e0| 0d 0d 09 69 66 20 28 63 | 61 6e 52 65 61 64 29 20 |...if (c|anRead) |
|000051f0| 7b 0d 09 09 73 77 69 74 | 63 68 20 28 73 73 74 61 |{...swit|ch (ssta|
|00005200| 74 65 29 20 7b 0d 09 09 | 63 61 73 65 20 53 4f 43 |te) {...|case SOC|
|00005210| 4b 5f 53 54 41 54 45 5f | 4c 49 53 5f 43 4f 4e 3a |K_STATE_|LIS_CON:|
|00005220| 0d 09 09 09 2a 63 61 6e | 52 65 61 64 09 3d 20 74 |....*can|Read.= t|
|00005230| 72 75 65 3b 0d 09 09 09 | 62 72 65 61 6b 3b 0d 0d |rue;....|break;..|
|00005240| 09 09 63 61 73 65 20 53 | 4f 43 4b 5f 53 54 41 54 |..case S|OCK_STAT|
|00005250| 45 5f 43 4f 4e 4e 45 43 | 54 45 44 3a 0d 09 09 09 |E_CONNEC|TED:....|
|00005260| 2a 63 61 6e 52 65 61 64 | 20 3d 20 41 76 61 69 6c |*canRead| = Avail|
|00005270| 61 62 6c 65 28 29 20 3e | 20 30 3b 0d 09 09 09 62 |able() >| 0;....b|
|00005280| 72 65 61 6b 3b 0d 0d 09 | 09 63 61 73 65 20 53 4f |reak;...|.case SO|
|00005290| 43 4b 5f 53 54 41 54 45 | 5f 55 4e 43 4f 4e 4e 45 |CK_STATE|_UNCONNE|
|000052a0| 43 54 45 44 3a 0d 09 09 | 63 61 73 65 20 53 4f 43 |CTED:...|case SOC|
|000052b0| 4b 5f 53 54 41 54 45 5f | 43 4c 4f 53 49 4e 47 3a |K_STATE_|CLOSING:|
|000052c0| 0d 09 09 09 2a 63 61 6e | 52 65 61 64 09 3d 20 74 |....*can|Read.= t|
|000052d0| 72 75 65 3b 0d 09 09 09 | 62 72 65 61 6b 3b 0d 0d |rue;....|break;..|
|000052e0| 09 09 64 65 66 61 75 6c | 74 3a 0d 09 09 09 2a 63 |..defaul|t:....*c|
|000052f0| 61 6e 52 65 61 64 09 3d | 20 66 61 6c 73 65 3b 0d |anRead.=| false;.|
|00005300| 09 09 7d 0d 0d 09 09 69 | 66 20 28 2a 63 61 6e 52 |..}....i|f (*canR|
|00005310| 65 61 64 29 0d 09 09 09 | 2b 2b 67 6f 6f 64 69 65 |ead)....|++goodie|
|00005320| 73 3b 0d 09 7d 0d 0d 09 | 69 66 20 28 63 61 6e 57 |s;..}...|if (canW|
|00005330| 72 69 74 65 29 0d 09 09 | 69 66 20 28 2a 63 61 6e |rite)...|if (*can|
|00005340| 57 72 69 74 65 20 3d 20 | 28 73 73 74 61 74 65 20 |Write = |(sstate |
|00005350| 3d 3d 20 53 4f 43 4b 5f | 53 54 41 54 45 5f 43 4f |== SOCK_|STATE_CO|
|00005360| 4e 4e 45 43 54 45 44 29 | 29 0d 09 09 09 2b 2b 67 |NNECTED)|)....++g|
|00005370| 6f 6f 64 69 65 73 3b 0d | 0d 09 69 66 20 28 65 78 |oodies;.|..if (ex|
|00005380| 63 65 70 74 69 6f 6e 29 | 0d 09 09 69 66 20 28 2a |ception)|...if (*|
|00005390| 65 78 63 65 70 74 69 6f | 6e 20 3d 20 65 72 72 6f |exceptio|n = erro|
|000053a0| 72 29 0d 09 09 09 2b 2b | 67 6f 6f 64 69 65 73 3b |r)....++|goodies;|
|000053b0| 0d 0d 09 72 65 74 75 72 | 6e 20 67 6f 6f 64 69 65 |...retur|n goodie|
|000053c0| 73 3b 0d 7d 0d 00 00 00 | 00 00 00 00 00 00 00 00 |s;.}....|........|
|000053d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000053e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000053f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005400| 00 00 01 00 00 00 01 fc | 00 00 00 fc 00 00 00 68 |........|.......h|
|00005410| 09 09 09 53 6f 63 6b 65 | 74 50 74 72 20 73 70 3b |...Socke|tPtr sp;|
|00005420| 0d 09 0d 09 09 09 73 70 | 20 3d 20 73 6f 63 6b 65 |......sp| = socke|
|00005430| 0a 47 55 53 49 54 43 50 | 2e 63 70 00 02 00 00 00 |.GUSITCP|.cp.....|
|00005440| 54 45 58 54 4d 50 53 20 | 00 00 03 74 01 40 00 00 |TEXTMPS |...t.@..|
|00005450| 00 00 54 45 58 54 4d 50 | 53 20 00 00 03 74 01 40 |..TEXTMP|S ...t.@|
|00005460| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005470| 00 00 a6 b4 47 73 00 00 | 53 45 00 00 02 64 66 61 |....Gs..|SE...dfa|
|00005480| 6c 73 65 3b 0d 09 09 09 | 0d 09 09 09 72 65 74 75 |lse;....|....retu|
|00005490| 72 6e 28 30 29 3b 0d 09 | 09 7d 0d 09 09 0d 09 09 |rn(0);..|.}......|
|000054a0| 2f 2a 20 5b 4d 4e 5d 20 | 54 68 65 79 20 66 6f 72 |/* [MN] |They for|
|000054b0| 67 6f 74 20 74 68 69 73 | 20 6f 6e 65 3a 20 2a 2f |got this| one: */|
|000054c0| 0d 09 09 0d 09 09 64 65 | 66 61 75 6c 74 3a 0d 09 |......de|fault:..|
|000054d0| 09 09 72 65 74 75 72 6e | 20 47 55 53 49 5f 65 72 |..return| GUSI_er|
|000054e0| 72 6f 72 28 45 4f 50 4e | 4f 54 53 55 50 50 29 3b |ror(EOPN|OTSUPP);|
|000054f0| 0d 09 7d 0d 7d 0d 0d 2f | 2a 0d 20 2a 09 64 75 70 |..}.}../|*. *.dup|
|00005500| 00 00 00 70 a9 28 9d ed | 3f e5 32 30 00 04 00 06 |...p.(..|?.20....|
|00005510| 00 00 00 00 00 00 a7 7f | 11 3e a7 7f 11 3e a6 71 |........|.>...>.q|
|00005520| 49 ef 00 00 bf be 00 01 | 00 21 00 05 05 47 55 53 |I.......|.!...GUS|
|00005530| 49 ba 00 05 6e 65 65 72 | 69 00 01 34 00 0a 47 55 |I...neer|i..4..GU|
|00005540| 53 49 54 43 50 2e 63 70 | 00 00 00 00 26 42 65 20 |SITCP.cp|....&Be |
|00005550| 6d 6f 72 65 20 63 61 72 | 65 66 75 6c 20 61 62 6f |more car|eful abo|
|00005560| 75 74 20 75 73 65 72 20 | 69 6e 74 65 72 72 75 70 |ut user |interrup|
|00005570| 74 73 2e 00 00 00 00 48 | 00 09 4d 6f 6e 61 63 6f |ts.....H|..Monaco|
|00005580| 00 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.*******|********|
|00005590| 2a 2a 0d 50 72 6f 6a 65 | 63 74 00 06 00 03 00 3c |**.Proje|ct.....<|
|000055a0| 00 24 01 dd 02 3d 00 3c | 00 24 01 dd 02 3d a7 84 |.$...=.<|.$...=..|
|000055b0| e0 d8 00 00 3e 88 00 00 | 3e 88 00 00 4f 54 01 00 |....>...|>...OT..|
|000055c0| 00 00 00 16 00 01 00 00 | 02 32 00 00 02 5b 0b 4c |........|.2...[.L|
|000055d0| 61 73 74 43 68 61 6e 67 | 65 00 00 00 00 1e 00 3c |astChang|e......<|
|000055e0| 00 24 01 dd 02 3d 00 3c | 00 24 01 dd 02 3d 00 00 |.$...=.<|.$...=..|
|000055f0| 4f 54 00 00 00 00 00 00 | 00 00 00 00 00 00 01 00 |OT......|........|
|00005600| 00 00 01 fc 00 00 00 fc | 00 00 00 68 01 8e e2 a0 |........|...h....|
|00005610| 07 b8 00 00 00 1c 00 5e | 00 01 4d 50 53 52 00 02 |.......^|..MPSR..|
|00005620| 00 12 63 6b 69 64 00 00 | 00 36 03 ed ff ff 00 00 |..ckid..|.6......|
|00005630| 00 74 00 00 00 00 03 ef | ff ff 00 00 00 c0 00 00 |.t......|........|
|00005640| 00 00 03 f0 ff ff 00 00 | 00 da 01 95 15 ac 00 80 |........|........|
|00005650| 00 00 00 00 00 00 00 00 | 00 00 09 50 72 6f 6a 65 |........|...Proje|
|00005660| 63 74 6f 72 00 00 00 00 | 00 00 00 00 00 00 00 00 |ctor....|........|
|00005670| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+