go-monero icon indicating copy to clipboard operation
go-monero copied to clipboard

tcp read and write timeouts

Open cirocosta opened this issue 4 years ago • 2 comments

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

cirocosta avatar Apr 18 '21 12:04 cirocosta

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)
	}

cirocosta avatar Jul 28 '21 11:07 cirocosta

#19

cirocosta avatar Aug 03 '21 22:08 cirocosta