Commit 862fb86c authored by Alex Brainman's avatar Alex Brainman

internal/poll: only call SetFileCompletionNotificationModes for sockets

CL 36799 made SetFileCompletionNotificationModes to be called for
file handles. I don't think it is correct. Revert that change.

Fixes #22024
Fixes #22207

Change-Id: I26260e8a727131cffbf60958d79eca2457495554
Reviewed-on: https://go-review.googlesource.com/69871Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
parent c37647fc
...@@ -357,12 +357,12 @@ func (fd *FD) Init(net string, pollable bool) (string, error) { ...@@ -357,12 +357,12 @@ func (fd *FD) Init(net string, pollable bool) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
if useSetFileCompletionNotificationModes { if pollable && useSetFileCompletionNotificationModes {
// We do not use events, so we can skip them always. // We do not use events, so we can skip them always.
flags := uint8(syscall.FILE_SKIP_SET_EVENT_ON_HANDLE) flags := uint8(syscall.FILE_SKIP_SET_EVENT_ON_HANDLE)
// It's not safe to skip completion notifications for UDP: // It's not safe to skip completion notifications for UDP:
// http://blogs.technet.com/b/winserverperformance/archive/2008/06/26/designing-applications-for-high-performance-part-iii.aspx // http://blogs.technet.com/b/winserverperformance/archive/2008/06/26/designing-applications-for-high-performance-part-iii.aspx
if net == "tcp" || net == "file" { if net == "tcp" {
flags |= syscall.FILE_SKIP_COMPLETION_PORT_ON_SUCCESS flags |= syscall.FILE_SKIP_COMPLETION_PORT_ON_SUCCESS
} }
err := syscall.SetFileCompletionNotificationModes(fd.Sysfd, flags) err := syscall.SetFileCompletionNotificationModes(fd.Sysfd, flags)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment