Ensure the following program does not result in a panic:
```
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <unistd.h>
int
main(void)
{
struct sockaddr_in6 addr;
int fd;
fd = socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP);
memset(&addr, 0, sizeof(struct sockaddr_in6));
addr.sin6_family = AF_INET6;
addr.sin6_len = sizeof(struct sockaddr_in6);
addr.sin6_port = htons(1234);
addr.sin6_addr = in6addr_loopback;
bind(3, (struct sockaddr *)&addr, (socklen_t)sizeof(struct sockaddr_in6));
connect(3, (struct sockaddr *)&addr, (socklen_t)sizeof(struct sockaddr_in6));
shutdown(3, SHUT_WR);
sleep(1);
connect(3, (struct sockaddr *)&addr, (socklen_t)sizeof(struct sockaddr_in6));
close(3);
return (0);
}
```