From 4e0f63940cccfabea084a7608e8ba9c55b8ed952 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 13 Feb 2017 11:08:21 -0800 Subject: [PATCH] net: use internal/poll for DragonFly setKeepAlivePeriod Fixes DragonFly build. Change-Id: Id6b439cd4023ea8e3ed7cd9b70eec553c9eee4be Reviewed-on: https://go-review.googlesource.com/36916 Run-TryBot: Ian Lance Taylor Reviewed-by: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- src/net/tcpsockopt_dragonfly.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/net/tcpsockopt_dragonfly.go b/src/net/tcpsockopt_dragonfly.go index 7cc716bad1..2b018f2bb2 100644 --- a/src/net/tcpsockopt_dragonfly.go +++ b/src/net/tcpsockopt_dragonfly.go @@ -5,22 +5,20 @@ package net import ( - "os" + "runtime" "syscall" "time" ) func setKeepAlivePeriod(fd *netFD, d time.Duration) error { - if err := fd.incref(); err != nil { - return err - } - defer fd.decref() // The kernel expects milliseconds so round to next highest // millisecond. d += (time.Millisecond - time.Nanosecond) msecs := int(d / time.Millisecond) - if err := syscall.SetsockoptInt(fd.sysfd, syscall.IPPROTO_TCP, syscall.TCP_KEEPINTVL, msecs); err != nil { - return os.NewSyscallError("setsockopt", err) + if err := fd.pfd.SetsockoptInt(syscall.IPPROTO_TCP, syscall.TCP_KEEPINTVL, msecs); err != nil { + return wrapSyscallError("setsockopt", err) } - return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, syscall.IPPROTO_TCP, syscall.TCP_KEEPIDLE, msecs)) + err := fd.pfd.SetsockoptInt(syscall.IPPROTO_TCP, syscall.TCP_KEEPIDLE, msecs) + runtime.KeepAlive(fd) + return wrapSyscallError("setsockopt", err) } -- 2.50.0