- if (shutdown(fd, SHUT_RD) < 0) {
- ret = -ERRNO_TO_PARA_ERROR(errno);
- goto err;
- }
- ret = mark_fd_nonblocking(fd);
- if (ret < 0)
- goto err;
- ret = acl_check_access(fd, &dccp_acl, conf.dccp_default_deny_given);
- if (ret < 0)
- goto err;
- sc = para_calloc(sizeof(*sc));
- sc->fd = fd;
- sc->name = make_message("%s", remote_name(sc->fd));
- PARA_NOTICE_LOG("connection from %s\n", sc->name);
- para_list_add(&sc->node, &clients);
- add_close_on_fork_list(sc->fd);
- sc->cq = cq_new(DCCP_MAX_PENDING_BYTES);
- return;
-err:
- PARA_ERROR_LOG("%s\n", para_strerror(-ret));
- close(fd);
+ if (shutdown(sc->fd, SHUT_RD) >= 0)
+ return;
+ PARA_WARNING_LOG("%s\n", strerror(errno));
+ shutdown_client(sc, dss);