struct buffer *buffer;
int fd;
off_t off;
+ int ret;
fd = open(filename, O_RDONLY);
if (fd < 0) {
buffer->refcnt = 0;
buffer->info = (void *)off;
- if (read(fd, buffer->data, off) < 0) {
+ ret = read(fd, buffer->data, off);
+ if (ret < 0) {
ErrPrint("read: %s\n", strerror(errno));
free(buffer);
item->data.shm = (int)data;
break;
default:
+ ErrPrint("Invalid type of request\n");
+ free(item);
return NULL;
}
while (fsize > 0) {
if (fsize > PKT_CHUNKSZ) {
body->size = PKT_CHUNKSZ;
- fsize -= PKT_CHUNKSZ;
} else {
body->size = fsize;
- fsize = 0;
}
- pktsz = sizeof(*body) + body->size;
-
ret = read(fd, body->data, body->size);
if (ret < 0) {
ErrPrint("read: %s\n", strerror(errno));
break;
}
+ body->size = ret;
+ fsize -= ret;
+ pktsz = sizeof(*body) + body->size;
+
/* Send BODY */
ret = com_core_send(handle, (void *)body, pktsz, 2.0f);
if (ret != pktsz) {