Fix accept on closed socket.
This commit is contained in:
parent
8c316c12d6
commit
c427beca1c
1 changed files with 6 additions and 3 deletions
|
@ -21,6 +21,7 @@ void cleanup(int signum)
|
||||||
if (close(SOCKFD) != 0) {
|
if (close(SOCKFD) != 0) {
|
||||||
perror("close");
|
perror("close");
|
||||||
}
|
}
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
int prepaddr(char *host, char *port, struct addrinfo **ainfo, int afamily, int flags)
|
int prepaddr(char *host, char *port, struct addrinfo **ainfo, int afamily, int flags)
|
||||||
|
@ -176,9 +177,9 @@ void bstr(unsigned int n, char **out)
|
||||||
|
|
||||||
int server()
|
int server()
|
||||||
{
|
{
|
||||||
|
struct sockaddr_storage c_addr;
|
||||||
|
socklen_t sin_size = sizeof c_addr;
|
||||||
while (1) {
|
while (1) {
|
||||||
struct sockaddr_storage c_addr;
|
|
||||||
socklen_t sin_size = sizeof c_addr;
|
|
||||||
int c_fd = accept(SOCKFD, (struct sockaddr *)&c_addr, &sin_size);
|
int c_fd = accept(SOCKFD, (struct sockaddr *)&c_addr, &sin_size);
|
||||||
|
|
||||||
if (c_fd == -1) {
|
if (c_fd == -1) {
|
||||||
|
@ -329,7 +330,9 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup(0);
|
|
||||||
freeaddrinfo(ainfo); // free the linked list
|
freeaddrinfo(ainfo); // free the linked list
|
||||||
|
if (close(SOCKFD) != 0) {
|
||||||
|
perror("close");
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue