Index: filed.c ================================================================== --- filed.c +++ filed.c @@ -195,10 +195,11 @@ } /* Handle a single request from a client */ static void filed_handle_client(int fd) { struct filed_fileinfo *fileinfo, fileinfo_b; + ssize_t sendfile_ret; char *path, path_b[1010]; char *date_current, date_current_b[64]; FILE *fp; /* Determine current time */ @@ -242,13 +243,16 @@ filed_log_msg("PROCESS_REPLY_COMPLETE FD=... STATUS=200"); filed_log_msg("SEND_START IFD=... OFD=... BYTES=..."); - sendfile(fd, fileinfo->fd, NULL, fileinfo->len); - - filed_log_msg("SEND_COMPLETE IFD=... OFD=... BYTES=..."); + sendfile_ret = sendfile(fd, fileinfo->fd, NULL, fileinfo->len); + if (sendfile_ret < 0 || ((size_t) sendfile_ret) != fileinfo->len) { + filed_log_msg("SEND_COMPLETE STATUS=ERROR IFD=... OFD=... BYTES=... BYTES_SENT=..."); + } else { + filed_log_msg("SEND_COMPLETE STATUS=OK IFD=... OFD=... BYTES=..."); + } close(fileinfo->fd); filed_log_msg("CLOSE_FILE FD=..."); }