Lines Matching +defs:buffer +defs:base +defs:buffer
137 /** the comm base */
138 struct comm_base* base;
144 * Internal base structure, so that every thread has its own events.
148 struct ub_event_base* base;
169 /** the comm base */
170 struct comm_base* base;
189 struct comm_base *base, struct comm_point* parent, size_t bufsize,
209 b->eb->base = ub_default_event_base(sigs, &b->eb->secs, &b->eb->now);
210 if(!b->eb->base) {
216 ub_get_event_sys(b->eb->base, &evnm, &evsys, &evmethod);
222 comm_base_create_event(struct ub_event_base* base)
233 b->eb->base = base;
249 ub_event_base_free(b->eb->base);
250 b->eb->base = NULL;
266 b->eb->base = NULL;
282 retval = ub_event_base_dispatch(b->eb->base);
291 if(ub_event_base_loopexit(b->eb->base) != 0) {
306 return b->eb->base;
395 * the ethernet interface buffer to have space. */
446 struct comm_base* b = c->ev->base;
706 * the ethernet interface buffer to have space. */
755 struct comm_base* b = c->ev->base;
984 log_assert(rep.c && rep.c->buffer && rep.c->fd == fd);
985 ub_comm_base_now(rep.c->ev->base);
987 sldns_buffer_clear(rep.c->buffer);
991 log_assert(sldns_buffer_remaining(rep.c->buffer) > 0);
994 iov[0].iov_base = sldns_buffer_begin(rep.c->buffer);
995 iov[0].iov_len = sldns_buffer_remaining(rep.c->buffer);
1012 sldns_buffer_skip(rep.c->buffer, rcv);
1013 sldns_buffer_flip(rep.c->buffer);
1060 if(rep.c->pp2_enabled && !consume_pp2_header(rep.c->buffer,
1074 struct sldns_buffer *buffer;
1076 buffer = rep.c->dnscrypt_buffer;
1078 buffer = rep.c->buffer;
1080 (void)comm_point_send_udp_msg_if(rep.c, buffer,
1096 struct sldns_buffer *buffer;
1103 log_assert(rep.c && rep.c->buffer && rep.c->fd == fd);
1104 ub_comm_base_now(rep.c->ev->base);
1106 sldns_buffer_clear(rep.c->buffer);
1109 log_assert(sldns_buffer_remaining(rep.c->buffer) > 0);
1110 rcv = recvfrom(fd, (void*)sldns_buffer_begin(rep.c->buffer),
1111 sldns_buffer_remaining(rep.c->buffer), MSG_DONTWAIT,
1129 sldns_buffer_skip(rep.c->buffer, rcv);
1130 sldns_buffer_flip(rep.c->buffer);
1134 if(rep.c->pp2_enabled && !consume_pp2_header(rep.c->buffer,
1149 buffer = rep.c->dnscrypt_buffer;
1151 buffer = rep.c->buffer;
1153 (void)comm_point_send_udp_msg(rep.c, buffer,
1177 sldns_buffer_clear(c->buffer);
1250 if(c->ev->base->stop_accept) {
1251 struct comm_base* b = c->ev->base;
1272 b->eb->slow_accept = ub_event_new(b->eb->base,
1423 ub_comm_base_now(c->ev->base);
1432 * correct event base for the event structure for libevent */
1457 c_hdl->ev->ev = ub_event_new(c_hdl->ev->base->eb->base, -1,
1461 c_hdl->ev->ev = ub_event_new(c_hdl->ev->base->eb->base, -1,
1533 sldns_buffer_clear(c->buffer);
1542 sldns_buffer_clear(c->buffer);
1571 sldns_buffer_flip(c->buffer);
1794 if(sldns_buffer_remaining(c->buffer)<want_read_size) {
1796 "buffer size to read PROXYv2 header", "",
1808 c->buffer, c->tcp_byte_count),
1840 sldns_buffer_skip(c->buffer, r);
1848 sldns_buffer_begin(c->buffer),
1849 sldns_buffer_limit(c->buffer));
1856 header = (struct pp2_header*)sldns_buffer_begin(c->buffer);
1858 if(sldns_buffer_limit(c->buffer) <
1861 "buffer size to read PROXYv2 header", "",
1876 c->buffer, c->tcp_byte_count),
1908 sldns_buffer_skip(c->buffer, r);
1919 sldns_buffer_flip(c->buffer);
1920 if(!consume_pp2_header(c->buffer, &c->repinfo, 1)) {
1928 /* Clear and reset the buffer to read the following
1930 sldns_buffer_clear(c->buffer);
1937 if((r=SSL_read(c->ssl, (void*)sldns_buffer_at(c->buffer,
1970 if(sldns_buffer_read_u16_at(c->buffer, 0) >
1971 sldns_buffer_capacity(c->buffer)) {
1972 verbose(VERB_QUERY, "ssl: dropped larger than buffer");
1975 sldns_buffer_set_limit(c->buffer,
1976 sldns_buffer_read_u16_at(c->buffer, 0));
1977 if(sldns_buffer_limit(c->buffer) < LDNS_HEADER_SIZE) {
1981 sldns_buffer_skip(c->buffer, (ssize_t)(c->tcp_byte_count-sizeof(uint16_t)));
1983 (int)sldns_buffer_limit(c->buffer));
1985 if(sldns_buffer_remaining(c->buffer) > 0) {
1987 r = SSL_read(c->ssl, (void*)sldns_buffer_current(c->buffer),
1988 (int)sldns_buffer_remaining(c->buffer));
2017 sldns_buffer_skip(c->buffer, (ssize_t)r);
2019 if(sldns_buffer_remaining(c->buffer) <= 0) {
2044 uint16_t len = htons(c->tcp_write_and_read?c->tcp_write_pkt_len:sldns_buffer_limit(c->buffer));
2064 } else if(sizeof(uint16_t)+sldns_buffer_remaining(c->buffer) <
2071 sldns_buffer_current(c->buffer),
2072 sldns_buffer_remaining(c->buffer));
2075 sldns_buffer_remaining(c->buffer)
2116 sldns_buffer_set_position(c->buffer, c->tcp_byte_count -
2119 if((!c->tcp_write_and_read && sldns_buffer_remaining(c->buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) {
2124 log_assert(c->tcp_write_and_read || sldns_buffer_remaining(c->buffer) > 0);
2131 r = SSL_write(c->ssl, (void*)sldns_buffer_current(c->buffer),
2132 (int)sldns_buffer_remaining(c->buffer));
2163 sldns_buffer_skip(c->buffer, (ssize_t)r);
2166 if((!c->tcp_write_and_read && sldns_buffer_remaining(c->buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) {
2196 * @param c: comm point to read from into buffer.
2218 if(sldns_buffer_remaining(c->buffer)<want_read_size) {
2220 "buffer size to read PROXYv2 header", "",
2230 r = recv(fd, (void*)sldns_buffer_at(c->buffer,
2241 sldns_buffer_skip(c->buffer, r);
2249 sldns_buffer_begin(c->buffer),
2250 sldns_buffer_limit(c->buffer));
2257 header = (struct pp2_header*)sldns_buffer_begin(c->buffer);
2259 if(sldns_buffer_limit(c->buffer) <
2262 "buffer size to read PROXYv2 header", "",
2275 r = recv(fd, (void*)sldns_buffer_at(c->buffer,
2286 sldns_buffer_skip(c->buffer, r);
2297 sldns_buffer_flip(c->buffer);
2298 if(!consume_pp2_header(c->buffer, &c->repinfo, 1)) {
2306 /* Clear and reset the buffer to read the following
2308 sldns_buffer_clear(c->buffer);
2315 r = recv(fd,(void*)sldns_buffer_at(c->buffer,c->tcp_byte_count),
2328 if(sldns_buffer_read_u16_at(c->buffer, 0) >
2329 sldns_buffer_capacity(c->buffer)) {
2330 verbose(VERB_QUERY, "tcp: dropped larger than buffer");
2333 sldns_buffer_set_limit(c->buffer,
2334 sldns_buffer_read_u16_at(c->buffer, 0));
2336 sldns_buffer_limit(c->buffer) < LDNS_HEADER_SIZE) {
2341 (int)sldns_buffer_limit(c->buffer));
2344 if(sldns_buffer_remaining(c->buffer) == 0)
2348 r = recv(fd, (void*)sldns_buffer_current(c->buffer),
2349 sldns_buffer_remaining(c->buffer), MSG_DONTWAIT);
2357 sldns_buffer_skip(c->buffer, r);
2358 if(sldns_buffer_remaining(c->buffer) <= 0) {
2443 * @param c: comm point to write buffer out of.
2450 struct sldns_buffer *buffer;
2453 buffer = c->dnscrypt_buffer;
2455 buffer = c->buffer;
2512 uint16_t len = htons(c->tcp_write_and_read?c->tcp_write_pkt_len:sldns_buffer_limit(buffer));
2525 iov[1].iov_base = sldns_buffer_begin(buffer);
2526 iov[1].iov_len = sldns_buffer_limit(buffer);
2595 sldns_buffer_set_position(buffer, c->tcp_byte_count -
2598 if((!c->tcp_write_and_read && sldns_buffer_remaining(buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) {
2607 uint16_t len = htons(c->tcp_write_and_read?c->tcp_write_pkt_len:sldns_buffer_limit(buffer));
2618 iov[1].iov_base = sldns_buffer_begin(buffer);
2619 iov[1].iov_len = sldns_buffer_limit(buffer);
2680 sldns_buffer_set_position(buffer, c->tcp_byte_count -
2683 if((!c->tcp_write_and_read && sldns_buffer_remaining(buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) {
2688 log_assert(c->tcp_write_and_read || sldns_buffer_remaining(buffer) > 0);
2694 r = send(fd, (void*)sldns_buffer_current(buffer),
2695 sldns_buffer_remaining(buffer), 0);
2723 sldns_buffer_skip(buffer, r);
2726 if((!c->tcp_write_and_read && sldns_buffer_remaining(buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) {
2811 ub_comm_base_now(c->ev->base);
2821 if(c->dnscrypt && c->dnscrypt_buffer == c->buffer) {
2822 c->dnscrypt_buffer = sldns_buffer_new(sldns_buffer_capacity(c->buffer));
2824 log_err("Could not allocate dnscrypt buffer");
2928 log_assert(sldns_buffer_remaining(c->buffer) > 0);
2930 r = SSL_read(c->ssl, (void*)sldns_buffer_current(c->buffer),
2931 (int)sldns_buffer_remaining(c->buffer));
2956 (int)sldns_buffer_position(c->buffer), (int)r);
2957 sldns_buffer_skip(c->buffer, (ssize_t)r);
2970 log_assert(sldns_buffer_remaining(c->buffer) > 0);
2971 r = recv(fd, (void*)sldns_buffer_current(c->buffer),
2972 sldns_buffer_remaining(c->buffer), MSG_DONTWAIT);
2994 (int)sldns_buffer_position(c->buffer), (int)r);
2995 sldns_buffer_skip(c->buffer, r);
3012 /** return character string into buffer for header line, moves buffer
3033 /** move unread buffer to start and clear rest for putting the rest into it */
3048 char* line = http_header_line(c->buffer);
3068 /* remove header text from front of buffer
3069 * the buffer is going to be used to return the data segment
3072 http_moveover_buffer(c->buffer);
3073 sldns_buffer_flip(c->buffer);
3085 char* line = http_header_line(c->buffer);
3092 * end of data, with no data in buffer */
3093 sldns_buffer_set_position(c->buffer, 0);
3094 sldns_buffer_set_limit(c->buffer, 0);
3103 /* remove header text from front of buffer */
3104 http_moveover_buffer(c->buffer);
3105 sldns_buffer_flip(c->buffer);
3119 /* remove header text from front of buffer */
3120 http_moveover_buffer(c->buffer);
3121 sldns_buffer_flip(c->buffer);
3136 /* c->buffer at position..limit has new data we read in.
3137 * the buffer itself is full of nonchunked data.
3141 size_t got_now = sldns_buffer_limit(c->buffer);
3145 sldns_buffer_set_position(c->buffer, 0);
3150 /* if we have the buffer space,
3151 * read more data collected into the buffer */
3152 remainbufferlen = sldns_buffer_capacity(c->buffer) -
3153 sldns_buffer_limit(c->buffer);
3156 size_t total = sldns_buffer_limit(c->buffer);
3157 sldns_buffer_clear(c->buffer);
3158 sldns_buffer_set_position(c->buffer, total);
3167 sldns_buffer_set_position(c->buffer, 0);
3170 /* c->callback has to buffer_clear(c->buffer). */
3179 /* the c->buffer has from position..limit new data we read. */
3184 size_t got_now = sldns_buffer_limit(c->buffer) - c->http_stored;
3185 verbose(VERB_ALGO, "http_chunked_segment: got now %d, tcpbytcount %d, http_stored %d, buffer pos %d, buffer limit %d", (int)got_now, (int)c->tcp_byte_count, (int)c->http_stored, (int)sldns_buffer_position(c->buffer), (int)sldns_buffer_limit(c->buffer));
3189 /* save too much info into temp buffer */
3193 sldns_buffer_skip(c->buffer, (ssize_t)c->tcp_byte_count);
3196 sldns_buffer_current(c->buffer),
3197 sldns_buffer_remaining(c->buffer));
3201 fraglen = sldns_buffer_position(c->buffer);
3202 sldns_buffer_set_position(c->buffer, 0);
3203 sldns_buffer_set_limit(c->buffer, fraglen);
3214 sldns_buffer_clear(c->buffer);
3215 sldns_buffer_write(c->buffer,
3218 sldns_buffer_flip(c->buffer);
3222 /* process more data in buffer (if any) */
3227 /* if we have the buffer space,
3228 * read more data collected into the buffer */
3229 remainbufferlen = sldns_buffer_capacity(c->buffer) -
3230 sldns_buffer_limit(c->buffer);
3233 size_t total = sldns_buffer_limit(c->buffer);
3234 sldns_buffer_clear(c->buffer);
3235 sldns_buffer_set_position(c->buffer, total);
3243 sldns_buffer_set_position(c->buffer, 0);
3246 /* c->callback has to buffer_clear(c->buffer). */
3489 * @param c: comm point to read from into buffer.
3531 if(c->http_stored >= sldns_buffer_position(c->buffer)) {
3536 sldns_buffer_flip(c->buffer);
3539 if(c->http_stored < sldns_buffer_limit(c->buffer))
3540 sldns_buffer_set_position(c->buffer, c->http_stored);
3541 else sldns_buffer_set_position(c->buffer, sldns_buffer_limit(c->buffer));
3543 while(sldns_buffer_remaining(c->buffer) > 0) {
3548 if(!http_header_done(c->buffer)) {
3549 /* copy remaining data to front of buffer
3551 http_moveover_buffer(c->buffer);
3584 http_moveover_buffer(c->buffer);
3641 log_assert(sldns_buffer_remaining(c->buffer) > 0);
3643 r = SSL_write(c->ssl, (void*)sldns_buffer_current(c->buffer),
3644 (int)sldns_buffer_remaining(c->buffer));
3668 sldns_buffer_skip(c->buffer, (ssize_t)r);
3681 log_assert(sldns_buffer_remaining(c->buffer) > 0);
3682 r = send(fd, (void*)sldns_buffer_current(c->buffer),
3683 sldns_buffer_remaining(c->buffer), 0);
3700 sldns_buffer_skip(c->buffer, r);
3817 * @param c: comm point to write buffer out of.
3866 /* we write a single buffer contents, that can contain
3869 if(sldns_buffer_remaining(c->buffer) == 0) {
3870 sldns_buffer_clear(c->buffer);
3886 ub_comm_base_now(c->ev->base);
3929 ub_comm_base_now(c->ev->base);
3948 ub_comm_base_now(c->ev->base);
3957 comm_point_create_udp(struct comm_base *base, int fd, sldns_buffer* buffer,
3972 c->ev->base = base;
3974 c->buffer = buffer;
3993 c->dnscrypt_buffer = buffer;
4003 c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits,
4021 comm_point_create_udp_ancil(struct comm_base *base, int fd,
4022 sldns_buffer* buffer, int pp2_enabled,
4036 c->ev->base = base;
4038 c->buffer = buffer;
4052 c->dnscrypt_buffer = buffer;
4067 c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits,
4085 comm_point_create_tcp_handler(struct comm_base *base,
4101 c->ev->base = base;
4103 c->buffer = sldns_buffer_new(bufsize);
4104 if(!c->buffer) {
4111 sldns_buffer_free(c->buffer);
4139 c->dnscrypt_buffer = c->buffer;
4151 sldns_buffer_free(c->buffer);
4166 c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits,
4173 sldns_buffer_free(c->buffer);
4183 comm_point_create_http_handler(struct comm_base *base,
4200 c->ev->base = base;
4202 c->buffer = sldns_buffer_new(bufsize);
4203 if(!c->buffer) {
4210 sldns_buffer_free(c->buffer);
4252 sldns_buffer_free(c->buffer);
4263 sldns_buffer_free(c->buffer);
4273 sldns_buffer_free(c->buffer);
4286 c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits,
4293 sldns_buffer_free(c->buffer);
4303 comm_point_create_tcp(struct comm_base *base, int fd, int num,
4324 c->ev->base = base;
4326 c->buffer = NULL;
4364 c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits,
4382 c->tcp_handlers[i] = comm_point_create_tcp_handler(base,
4386 base, c, bufsize, harden_large_queries,
4405 comm_point_create_tcp_out(struct comm_base *base, size_t bufsize,
4419 c->ev->base = base;
4421 c->buffer = sldns_buffer_new(bufsize);
4422 if(!c->buffer) {
4449 c->dnscrypt_buffer = c->buffer;
4457 c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits,
4462 sldns_buffer_free(c->buffer);
4472 comm_point_create_http_out(struct comm_base *base, size_t bufsize,
4487 c->ev->base = base;
4489 c->buffer = sldns_buffer_new(bufsize);
4490 if(!c->buffer) {
4517 c->dnscrypt_buffer = c->buffer;
4525 c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits,
4533 sldns_buffer_free(c->buffer);
4543 comm_point_create_local(struct comm_base *base, int fd, size_t bufsize,
4557 c->ev->base = base;
4559 c->buffer = sldns_buffer_new(bufsize);
4560 if(!c->buffer) {
4583 c->dnscrypt_buffer = c->buffer;
4591 c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits,
4611 comm_point_create_raw(struct comm_base* base, int fd, int writing,
4625 c->ev->base = base;
4627 c->buffer = NULL;
4646 c->dnscrypt_buffer = c->buffer;
4656 c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits,
4739 sldns_buffer_free(c->buffer);
4741 if(c->dnscrypt && c->dnscrypt_buffer != c->buffer) {
4760 struct sldns_buffer* buffer;
4763 buffer = repinfo->c->dnscrypt_buffer;
4768 buffer = repinfo->c->buffer;
4772 comm_point_send_udp_msg_if(repinfo->c, buffer,
4776 comm_point_send_udp_msg(repinfo->c, buffer,
4786 dt_msg_send_client_response(repinfo->c->dtenv, &repinfo->client_addr, (void*)repinfo->c->socket->addr, repinfo->c->type, repinfo->c->ssl, repinfo->c->buffer);
4798 ( repinfo->c->tcp_req_info? repinfo->c->tcp_req_info->spool_buffer: repinfo->c->buffer ));
4950 s += sizeof(*c->buffer) + sldns_buffer_capacity(c->buffer);
4953 if(c->buffer != c->dnscrypt_buffer) {
4967 comm_timer_create(struct comm_base* base, void (*cb)(void*), void* cb_arg)
4976 tm->base = base;
4979 tm->ev = ub_event_new(base->eb->base, -1, UB_EV_TIMEOUT,
5004 if(ub_timer_add(timer->ev_timer->ev, timer->ev_timer->base->eb->base,
5029 ub_comm_base_now(tm->ev_timer->base);
5048 comm_signal_create(struct comm_base* base,
5057 com->base = base;
5070 ub_comm_base_now(comsig->base);
5086 entry->ev = ub_signal_new(comsig->base->eb->base, sig,