Hi!
On Tue, Apr 10, 2018 at 07:58:29AM -0700, [email protected] wrote:
> I'm trying to understand what is going on under the hood here.
SO_LINGER (see socket(7)) delay happens. Add this after Accept():
conn, err := listener.Accept()
if err == nil {
err = conn.(*net.TCPConn).SetLinger(0)
}
> I would expect a net.Conn after being closed from the far side, to issue an
> error if the near side then tries to write to it. On my local machine an
> error is returned on the second write, on the go playground all writes
> succeed.
Playground doesn't support TCP, and there is write buffering which
postpone returning related error.
https://play.golang.org/p/JTAetL9no2y
This example correctly output error in playground:
0
2009/11/10 23:00:00 set tcp 0.0.0.0:2->127.0.0.1:3: Protocol not available
and correctly works outside of playground:
0
1
2
3
4
write tcp 127.0.0.1:38900->127.0.0.1:33199: write: connection reset by peer
(on very slow system it may output few more numbers because time.Sleep is
not really suitable for synchronization).
--
WBR, Alex.
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.