Skip to content

Support shutdown() for tcp wrapper#2745

Merged
stevenengler merged 1 commit intoshadow:mainfrom
stevenengler:wrap-tcp-rust
Feb 23, 2023
Merged

Support shutdown() for tcp wrapper#2745
stevenengler merged 1 commit intoshadow:mainfrom
stevenengler:wrap-tcp-rust

Conversation

@stevenengler
Copy link
Copy Markdown
Contributor

@stevenengler stevenengler commented Feb 13, 2023

The logic generally follows the logic from src/main/host/syscall/socket.c.

SysCallReturn syscallhandler_shutdown(SysCallHandler* sys,
const SysCallArgs* args) {
int sockfd = args->args[0].as_i64;
int how = args->args[1].as_i64;
trace("trying to shutdown on socket %i with how %i", sockfd, how);
if (how != SHUT_RD && how != SHUT_WR && how != SHUT_RDWR) {
debug("invalid how %i", how);
return syscallreturn_makeDoneErrno(EINVAL);
}
/* Get and validate the socket. */
int errcode = _syscallhandler_validateSocketHelper(sys, sockfd, NULL);
if (errcode < 0) {
return syscallreturn_makeDoneErrno(-errcode);
}
TCP* tcp_desc = NULL;
errcode = _syscallhandler_validateTCPSocketHelper(sys, sockfd, &tcp_desc);
if (errcode >= 0) {
return syscallreturn_makeDoneI64(tcp_shutdown(tcp_desc, _syscallhandler_getHost(sys), how));
}
UDP* udp_desc = NULL;
errcode = _syscallhandler_validateUDPSocketHelper(sys, sockfd, &udp_desc);
if (errcode >= 0) {
return syscallreturn_makeDoneI64(udp_shutdown(udp_desc, how));
}
warning("socket %d is neither a TCP nor UDP socket", sockfd);
return syscallreturn_makeDoneErrno(ENOTCONN);
}

@stevenengler stevenengler self-assigned this Feb 13, 2023
@github-actions github-actions bot added the Component: Main Composing the core Shadow executable label Feb 13, 2023
@stevenengler
Copy link
Copy Markdown
Contributor Author

@sporksmith A ping just in case you missed this PR.

@stevenengler stevenengler merged commit a6c0dd9 into shadow:main Feb 23, 2023
@stevenengler stevenengler deleted the wrap-tcp-rust branch February 23, 2023 17:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Component: Main Composing the core Shadow executable

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants