UserspaceEmulator: Handle SO_ERROR in getsockopt

This makes GUI applications work again
This commit is contained in:
Hendiadyoin1 2021-08-26 15:57:59 +02:00 committed by Brian Gianforcaro
parent 5017cc2bd3
commit 93ce8fc985
Notes: sideshowbarker 2024-07-18 04:29:24 +09:00

View file

@ -709,7 +709,18 @@ int Emulator::virt$getsockopt(FlatPtr params_addr)
mmu().copy_to_vm((FlatPtr)params.value, &creds, sizeof(creds));
return rc;
}
if (params.option == SO_ERROR) {
int so_error;
socklen_t so_error_len = sizeof(so_error);
int rc = getsockopt(params.sockfd, params.level, SO_ERROR, &so_error, &so_error_len);
if (rc < 0)
return -errno;
// FIXME: Check params.value_size
mmu().copy_to_vm((FlatPtr)params.value, &so_error, sizeof(so_error));
return rc;
}
dbgln("Not implemented socket param: {}", params.option);
TODO();
}