forked from cyfdecyf/cow
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproxy_windows.go
More file actions
40 lines (35 loc) · 730 Bytes
/
proxy_windows.go
File metadata and controls
40 lines (35 loc) · 730 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package main
import (
"net"
"strings"
"os"
"syscall"
)
func isErrConnReset(err error) bool {
if ne, ok := err.(*net.OpError); ok {
if se, seok := ne.Err.(*os.SyscallError); seok {
return se.Err == syscall.WSAECONNRESET || se.Err == syscall.ECONNRESET
}
}
return false
}
func isDNSError(err error) bool {
errMsg := err.Error()
return strings.Contains(errMsg, "No such host") ||
strings.Contains(errMsg, "GetAddrInfoW") ||
strings.Contains(errMsg, "dial tcp")
}
func isErrOpWrite(err error) bool {
ne, ok := err.(*net.OpError)
if !ok {
return false
}
return ne.Op == "WSASend"
}
func isErrOpRead(err error) bool {
ne, ok := err.(*net.OpError)
if !ok {
return false
}
return ne.Op == "WSARecv"
}