int tcp_write_queue(int fd, htsbuf_queue_t *q) { htsbuf_data_t *hd; int l, r = 0; void *p; while((hd = TAILQ_FIRST(&q->hq_q)) != NULL) { if (!r) { l = hd->hd_data_len - hd->hd_data_off; p = hd->hd_data + hd->hd_data_off; r = tvh_write(fd, p, l); } htsbuf_data_free(q, hd); } q->hq_size = 0; return r; }
int udp_write_queue( udp_connection_t *uc, htsbuf_queue_t *q, struct sockaddr_storage *storage ) { htsbuf_data_t *hd; int l, r = 0; void *p; while ((hd = TAILQ_FIRST(&q->hq_q)) != NULL) { if (!r) { l = hd->hd_data_len - hd->hd_data_off; p = hd->hd_data + hd->hd_data_off; r = udp_write(uc, p, l, storage); } htsbuf_data_free(q, hd); } q->hq_size = 0; return r; }