diff options
author | Alyssa Ross <hi@alyssa.is> | 2021-03-10 20:33:39 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2021-03-10 22:48:51 +0000 |
commit | b3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68 (patch) | |
tree | 9f45d9fa5ecce8360059e687053f4ca15837729c /vsock.c | |
parent | 2072b65edd19d24abe482def52ca3781b1742600 (diff) | |
download | ucspi-vsock-b3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68.tar ucspi-vsock-b3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68.tar.gz ucspi-vsock-b3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68.tar.bz2 ucspi-vsock-b3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68.tar.lz ucspi-vsock-b3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68.tar.xz ucspi-vsock-b3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68.tar.zst ucspi-vsock-b3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68.zip |
vsock_accept: return fd instead of 0 on success
This would result in the spawned process being hooked up to stdin, instead of the vsock. Then stdin would be closed, so subsequent processes would be connected to nothing. Oops. Message-Id: <20210310204516.20041-1-hi@alyssa.is> Reviewed-by: Cole Helbling <cole.e.helbling@outlook.com>
Diffstat (limited to 'vsock.c')
-rw-r--r-- | vsock.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/vsock.c b/vsock.c index d9ff3b6..e6a173c 100644 --- a/vsock.c +++ b/vsock.c @@ -32,14 +32,15 @@ int vsock_accept(int sockfd, uint32_t *cid, uint32_t *port) { struct sockaddr_vm addr = { 0 }; socklen_t addr_size = sizeof addr; + int fd; - if (accept(sockfd, (struct sockaddr *)&addr, &addr_size) == -1) + if ((fd = accept(sockfd, (struct sockaddr *)&addr, &addr_size)) == -1) return -1; *cid = addr.svm_cid; *port = addr.svm_port; - return 0; + return fd; } int vsock_connect(int fd, uint32_t cid, uint32_t port) |