Skip to content

Commit 3c14a0d

Browse files
authoredJun 18, 2019
Merge pull request mailru#13 from branelmoro/master
Fix added for issue 11 [setting os.File in nonblocking mode]
2 parents 0c8322a + b2f0161 commit 3c14a0d

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed
 

‎netpoll/netpoll_epoll.go

+11-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
package netpoll
44

5+
import (
6+
"os"
7+
)
8+
59
// New creates new epoll-based Poller instance with given config.
610
func New(c *Config) (Poller, error) {
711
cfg := c.withDefaults()
@@ -23,7 +27,7 @@ type poller struct {
2327

2428
// Start implements Poller.Start() method.
2529
func (ep poller) Start(desc *Desc, cb CallbackFn) error {
26-
return ep.Add(desc.fd(), toEpollEvent(desc.event),
30+
err := ep.Add(desc.fd(), toEpollEvent(desc.event),
2731
func(ep EpollEvent) {
2832
var event Event
2933

@@ -49,6 +53,12 @@ func (ep poller) Start(desc *Desc, cb CallbackFn) error {
4953
cb(event)
5054
},
5155
)
56+
if err == nil {
57+
if err = setNonblock(desc.fd(), true); err != nil {
58+
return os.NewSyscallError("setnonblock", err)
59+
}
60+
}
61+
return err
5262
}
5363

5464
// Stop implements Poller.Stop() method.

‎netpoll/netpoll_kqueue.go

+11-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
package netpoll
44

5+
import (
6+
"os"
7+
)
8+
59
// New creates new kqueue-based Poller instance with given config.
610
func New(c *Config) (Poller, error) {
711
cfg := c.withDefaults()
@@ -22,7 +26,7 @@ type poller struct {
2226

2327
func (p poller) Start(desc *Desc, cb CallbackFn) error {
2428
n, events := toKevents(desc.event, true)
25-
return p.Add(desc.fd(), events, n, func(kev Kevent) {
29+
err := p.Add(desc.fd(), events, n, func(kev Kevent) {
2630
var (
2731
event Event
2832

@@ -57,6 +61,12 @@ func (p poller) Start(desc *Desc, cb CallbackFn) error {
5761

5862
cb(event)
5963
})
64+
if err == nil {
65+
if err = setNonblock(desc.fd(), true); err != nil {
66+
return os.NewSyscallError("setnonblock", err)
67+
}
68+
}
69+
return err
6070
}
6171

6272
func (p poller) Stop(desc *Desc) error {

0 commit comments

Comments
 (0)
Please sign in to comment.