mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-09-21 11:41:40 +00:00
linux-user: correct setsockopt()
SO_SNDTIMEO and SO_RCVTIMEO take a struct timeval, not an int To test this, you can use : QEMU_STRACE= ping localhost 2>&1 |grep TIMEO 568 setsockopt(3,SOL_SOCKET,SO_SNDTIMEO,{1,0},8) = 0 568 setsockopt(3,SOL_SOCKET,SO_RCVTIMEO,{1,0},8) = 0 Signed-off-by: Laurent Vivier <laurent@vivier.eu> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
910ee4e5f4
commit
1b09aeb908
|
@ -1489,6 +1489,28 @@ static abi_long do_setsockopt(int sockfd, int level, int optname,
|
||||||
break;
|
break;
|
||||||
case TARGET_SOL_SOCKET:
|
case TARGET_SOL_SOCKET:
|
||||||
switch (optname) {
|
switch (optname) {
|
||||||
|
case TARGET_SO_RCVTIMEO:
|
||||||
|
{
|
||||||
|
struct timeval tv;
|
||||||
|
|
||||||
|
optname = SO_RCVTIMEO;
|
||||||
|
|
||||||
|
set_timeout:
|
||||||
|
if (optlen != sizeof(struct target_timeval)) {
|
||||||
|
return -TARGET_EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (copy_from_user_timeval(&tv, optval_addr)) {
|
||||||
|
return -TARGET_EFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = get_errno(setsockopt(sockfd, SOL_SOCKET, optname,
|
||||||
|
&tv, sizeof(tv)));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
case TARGET_SO_SNDTIMEO:
|
||||||
|
optname = SO_SNDTIMEO;
|
||||||
|
goto set_timeout;
|
||||||
/* Options with 'int' argument. */
|
/* Options with 'int' argument. */
|
||||||
case TARGET_SO_DEBUG:
|
case TARGET_SO_DEBUG:
|
||||||
optname = SO_DEBUG;
|
optname = SO_DEBUG;
|
||||||
|
@ -1540,12 +1562,6 @@ static abi_long do_setsockopt(int sockfd, int level, int optname,
|
||||||
case TARGET_SO_RCVLOWAT:
|
case TARGET_SO_RCVLOWAT:
|
||||||
optname = SO_RCVLOWAT;
|
optname = SO_RCVLOWAT;
|
||||||
break;
|
break;
|
||||||
case TARGET_SO_RCVTIMEO:
|
|
||||||
optname = SO_RCVTIMEO;
|
|
||||||
break;
|
|
||||||
case TARGET_SO_SNDTIMEO:
|
|
||||||
optname = SO_SNDTIMEO;
|
|
||||||
break;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
goto unimplemented;
|
goto unimplemented;
|
||||||
|
|
Loading…
Reference in a new issue