Fix SO_RCVTIMEOUT for recvmsg

PiperOrigin-RevId: 194938091
Change-Id: Id17f26df13a915ec0c388aad3198207ea1c28d53
This commit is contained in:
Ian Gudger
2018-05-01 08:07:06 -07:00
committed by Shentubot
parent 8a17bd183e
commit b701ee2214
+8 -1
View File
@@ -610,7 +610,14 @@ func RecvMsg(t *kernel.Task, args arch.SyscallArguments) (uintptr, *kernel.Sysca
flags |= linux.MSG_DONTWAIT
}
n, err := recvSingleMsg(t, s, msgPtr, flags, false, ktime.Time{})
var haveDeadline bool
var deadline ktime.Time
if dl := s.RecvTimeout(); dl != 0 {
deadline = t.Kernel().MonotonicClock().Now().Add(time.Duration(dl) * time.Nanosecond)
haveDeadline = true
}
n, err := recvSingleMsg(t, s, msgPtr, flags, haveDeadline, deadline)
return n, nil, err
}