LEFT | RIGHT |
(no file at all) | |
1 // Copyright 2009 The Go Authors. All rights reserved. | 1 // Copyright 2009 The Go Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style | 2 // Use of this source code is governed by a BSD-style |
3 // license that can be found in the LICENSE file. | 3 // license that can be found in the LICENSE file. |
4 | 4 |
5 // TCP socket options for darwin | 5 // TCP socket options for darwin |
6 | 6 |
7 package net | 7 package net |
8 | 8 |
9 import ( | 9 import ( |
10 "os" | 10 "os" |
11 "syscall" | 11 "syscall" |
12 "time" | 12 "time" |
13 ) | 13 ) |
14 | 14 |
15 // Set keep alive period. | 15 // Set keep alive period. |
16 func setKeepAlivePeriod(fd *netFD, d time.Duration) error { | 16 func setKeepAlivePeriod(fd *netFD, d time.Duration) error { |
17 » if err := fd.incref(false); err != nil { | 17 » if err := fd.incref(); err != nil { |
18 return err | 18 return err |
19 } | 19 } |
20 defer fd.decref() | 20 defer fd.decref() |
21 | 21 |
22 // The kernel expects seconds so round to next highest second. | 22 // The kernel expects seconds so round to next highest second. |
23 d += (time.Second - time.Nanosecond) | 23 d += (time.Second - time.Nanosecond) |
24 secs := int(d.Seconds()) | 24 secs := int(d.Seconds()) |
25 | 25 |
26 return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd,
syscall.IPPROTO_TCP, syscall.TCP_KEEPALIVE, secs)) | 26 return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd,
syscall.IPPROTO_TCP, syscall.TCP_KEEPALIVE, secs)) |
27 } | 27 } |
LEFT | RIGHT |