@@ -28,9 +28,10 @@ export const net = {
28
28
const socket = {
29
29
error,
30
30
success,
31
- readyState : 'closed ' ,
31
+ readyState : 'open ' ,
32
32
connect : ( port , hostname ) => {
33
33
socket . raw = null
34
+ socket . readyState = 'connecting'
34
35
typeof port === 'string'
35
36
? Deno . connect ( { transport : 'unix' , path : socket . path = port } ) . then ( success , error )
36
37
: Deno . connect ( { transport : 'tcp' , port : socket . port = port , hostname : socket . hostname = hostname || 'localhost' } ) . then ( success , error ) // eslint-disable-line
@@ -72,15 +73,21 @@ export const net = {
72
73
return false
73
74
} ,
74
75
destroy : ( ) => close ( true ) ,
75
- end : close
76
+ end : ( x ) => {
77
+ x && socket . write ( x )
78
+ close ( )
79
+ }
76
80
}
77
81
78
82
return socket
79
83
80
84
async function success ( raw ) {
85
+ if ( socket . readyState !== 'connecting' )
86
+ return raw . close ( )
87
+
81
88
const encrypted = socket . encrypted
82
- socket . readyState = 'open'
83
89
socket . raw = raw
90
+ socket . readyState = 'open'
84
91
socket . encrypted
85
92
? call ( socket . events . secureConnect )
86
93
: call ( socket . events . connect )
@@ -115,10 +122,10 @@ export const net = {
115
122
}
116
123
117
124
function closed ( ) {
118
- socket . break = socket . encrypted = false
119
- if ( socket . readyState !== 'open' )
125
+ if ( socket . readyState === 'closed' )
120
126
return
121
127
128
+ socket . break = socket . encrypted = false
122
129
call ( socket . events . close )
123
130
socket . readyState = 'closed'
124
131
}
@@ -139,6 +146,7 @@ export const net = {
139
146
export const tls = {
140
147
connect ( { socket, ...options } ) {
141
148
socket . encrypted = true
149
+ socket . readyState = 'connecting'
142
150
Deno . startTls ( socket . raw , { hostname : socket . hostname , ...options } )
143
151
. then ( socket . success , socket . error )
144
152
socket . raw = null
0 commit comments