+ fdflags = fcntl(WC->http_sock, F_GETFL);
+
+ while (bytesWritten < count) {
+ if ((fdflags & O_NONBLOCK) == O_NONBLOCK) {
+ FD_ZERO(&wset);
+ FD_SET(WC->http_sock, &wset);
+ if (select(1, NULL, &wset, NULL, NULL) == -1) {
+ lprintf(2, "client_write: Socket select failed (%s)\n", strerror(errno));
+ return -1;
+ }
+ }
+
+ if ((res = write(WC->http_sock, (char*)buf + bytesWritten,
+ count - bytesWritten)) == -1) {
+ lprintf(2, "client_write: Socket write failed (%s)\n", strerror(errno));
+ return res;
+ }
+ bytesWritten += res;
+ }
+
+ return bytesWritten;