hd->hd_data_size = 1000;
hd->hd_data = malloc(hd->hd_data_size);
- c = read(fd, hd->hd_data, hd->hd_data_size);
- if(c < 1) {
+ do {
+ r = read(fd, hd->hd_data, hd->hd_data_size);
+ } while (r < 0 && ERRNO_AGAIN(errno));
+ if(r < 1) {
free(hd->hd_data);
free(hd);
return -1;
}
- hd->hd_data_len = c;
+ hd->hd_data_len = r;
hd->hd_data_off = 0;
TAILQ_INSERT_TAIL(&hq->hq_q, hd, hd_link);
- hq->hq_size += c;
+ hq->hq_size += r;
return 0;
}