...

Source file src/pkg/net/tcpsockopt_unix.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	// +build aix freebsd linux netbsd
     6	
     7	package net
     8	
     9	import (
    10		"runtime"
    11		"syscall"
    12		"time"
    13	)
    14	
    15	func setKeepAlivePeriod(fd *netFD, d time.Duration) error {
    16		// The kernel expects seconds so round to next highest second.
    17		d += (time.Second - time.Nanosecond)
    18		secs := int(d.Seconds())
    19		if err := fd.pfd.SetsockoptInt(syscall.IPPROTO_TCP, syscall.TCP_KEEPINTVL, secs); err != nil {
    20			return wrapSyscallError("setsockopt", err)
    21		}
    22		err := fd.pfd.SetsockoptInt(syscall.IPPROTO_TCP, syscall.TCP_KEEPIDLE, secs)
    23		runtime.KeepAlive(fd)
    24		return wrapSyscallError("setsockopt", err)
    25	}
    26	

View as plain text