go-monero
go-monero copied to clipboard
tcp read and write timeouts
levin-related: when reading from the tcp sockets that get created for each host, we should enforce some deadlines in order to make sure the opposite of a slow-loris is taking place by a tweaked server
https://github.com/cirocosta/drwho/blob/1779a15e1f6df68fe918ec72ebc05a851e38ea23/pkg/who/whois.go#L222-L237
elapsed := time.Since(start)
_ = conn.SetWriteDeadline(time.Now().Add(c.timeout - elapsed))
if _, err = conn.Write(query); err != nil {
return nil, fmt.Errorf("write query '%s' to server '%s': %w",
string(query), server, err)
}
elapsed = time.Since(start)
_ = conn.SetReadDeadline(time.Now().Add(c.timeout - elapsed))
buffer, err := ioutil.ReadAll(conn)
if err != nil {
return nil, fmt.Errorf("read response for query '%s' "+
"on server '%s': %w", string(query), server, err)
}
#19