...

Source file src/net/tcpsockopt_dragonfly.go

     1	// Copyright 2009 The Go Authors. All rights reserved.
     2	// Use of this source code is governed by a BSD-style
     3	// license that can be found in the LICENSE file.
     4	
     5	package net
     6	
     7	import (
     8		"runtime"
     9		"syscall"
    10		"time"
    11	)
    12	
    13	func setKeepAlivePeriod(fd *netFD, d time.Duration) error {
    14		// The kernel expects milliseconds so round to next highest
    15		// millisecond.
    16		d += (time.Millisecond - time.Nanosecond)
    17		msecs := int(d / time.Millisecond)
    18		if err := fd.pfd.SetsockoptInt(syscall.IPPROTO_TCP, syscall.TCP_KEEPINTVL, msecs); err != nil {
    19			return wrapSyscallError("setsockopt", err)
    20		}
    21		err := fd.pfd.SetsockoptInt(syscall.IPPROTO_TCP, syscall.TCP_KEEPIDLE, msecs)
    22		runtime.KeepAlive(fd)
    23		return wrapSyscallError("setsockopt", err)
    24	}
    25	

View as plain text