/*
* Bypass unused CCID paths: the sender does not receive application data
* from the client; by shutting down this unused communication path we can
* reduce processing costs a bit. See analogous comment in dccp_recv.c.
*/
/*
* Bypass unused CCID paths: the sender does not receive application data
* from the client; by shutting down this unused communication path we can
* reduce processing costs a bit. See analogous comment in dccp_recv.c.
*/
dc->name = make_message("%s", remote_name(dc->fd));
PARA_NOTICE_LOG("connection from %s\n", dc->name);
para_list_add(&dc->node, &clients);
add_close_on_fork_list(dc->fd);
dc->name = make_message("%s", remote_name(dc->fd));
PARA_NOTICE_LOG("connection from %s\n", dc->name);
para_list_add(&dc->node, &clients);
add_close_on_fork_list(dc->fd);
while (written < len) {
ret = write(fd, buf + written, PARA_MIN(1024, len - written));
/*
while (written < len) {
ret = write(fd, buf + written, PARA_MIN(1024, len - written));
/*
- * Error handling: CCID3 has a sending wait queue which fills up and is
- * emptied asynchronously. The EAGAIN case means that there is currently
- * no space in the wait queue, but this can change at any moment and is
- * thus not an error condition.
+ * Error handling: CCID3 has a sending wait queue which fills
+ * up and is emptied asynchronously. The EAGAIN case means that
+ * there is currently no space in the wait queue, but this can
+ * change at any moment and is thus not an error condition.
// PARA_DEBUG_LOG("writing %d bytes to fd %d\n", len, dc->fd);
ret = dccp_write(dc->fd, buf, len);
if (ret < 0) {
// PARA_DEBUG_LOG("writing %d bytes to fd %d\n", len, dc->fd);
ret = dccp_write(dc->fd, buf, len);
if (ret < 0) {