Lines Matching defs:req

1723 	struct tcp_req_info* req = (struct tcp_req_info*)malloc(sizeof(*req));
1724 if(!req) {
1728 memset(req, 0, sizeof(*req));
1729 req->spool_buffer = spoolbuf;
1730 return req;
1734 tcp_req_info_delete(struct tcp_req_info* req)
1736 if(!req) return;
1737 tcp_req_info_clear(req);
1741 free(req);
1744 void tcp_req_info_clear(struct tcp_req_info* req)
1748 if(!req) return;
1751 open = req->open_req_list;
1754 mesh_state_remove_reply(open->mesh, open->mesh_state, req->cp);
1758 req->open_req_list = NULL;
1759 req->num_open_req = 0;
1762 item = req->done_req_list;
1773 req->done_req_list = NULL;
1774 req->num_done_req = 0;
1775 req->read_is_closed = 0;
1779 tcp_req_info_remove_mesh_state(struct tcp_req_info* req, struct mesh_state* m)
1782 if(!req || !m) return;
1783 open = req->open_req_list;
1788 else req->open_req_list = open->next;
1792 req->num_open_req --;
1805 tcp_req_info_setup_listen(struct tcp_req_info* req)
1810 if(req->cp->tcp_byte_count != 0) {
1815 if(!req->cp->tcp_is_reading)
1817 if(!req->read_is_closed)
1821 req->cp->tcp_is_reading = 0;
1822 comm_point_stop_listening(req->cp);
1823 comm_point_start_listening(req->cp, -1,
1824 adjusted_tcp_timeout(req->cp));
1826 req->cp->tcp_is_reading = 1;
1827 comm_point_stop_listening(req->cp);
1828 comm_point_start_listening(req->cp, -1,
1829 adjusted_tcp_timeout(req->cp));
1833 req->read_again = 1;
1835 comm_point_stop_listening(req->cp);
1836 comm_point_start_listening(req->cp, -1,
1837 adjusted_tcp_timeout(req->cp));
1838 comm_point_listen_for_rw(req->cp, 0, 0);
1844 tcp_req_info_pop_done(struct tcp_req_info* req)
1847 log_assert(req->num_done_req > 0 && req->done_req_list);
1848 item = req->done_req_list;
1852 req->done_req_list = req->done_req_list->next;
1853 req->num_done_req --;
1859 tcp_req_info_start_write_buf(struct tcp_req_info* req, uint8_t* buf,
1862 sldns_buffer_clear(req->cp->buffer);
1863 sldns_buffer_write(req->cp->buffer, buf, len);
1864 sldns_buffer_flip(req->cp->buffer);
1866 req->cp->tcp_is_reading = 0; /* we are now writing */
1871 tcp_req_pickup_next_result(struct tcp_req_info* req)
1873 if(req->num_done_req > 0) {
1875 struct tcp_req_done_item* item = tcp_req_info_pop_done(req);
1876 tcp_req_info_start_write_buf(req, item->buf, item->len);
1884 tcp_req_info_handle_read_close(struct tcp_req_info* req)
1886 verbose(VERB_ALGO, "tcp channel read side closed %d", req->cp->fd);
1888 req->cp->tcp_byte_count = 0;
1890 if(req->num_done_req != 0) {
1891 tcp_req_pickup_next_result(req);
1892 tcp_req_info_setup_listen(req);
1896 if(req->num_open_req == 0 && req->num_done_req == 0)
1899 req->read_is_closed = 1;
1900 tcp_req_info_setup_listen(req);
1905 tcp_req_info_handle_writedone(struct tcp_req_info* req)
1908 sldns_buffer_clear(req->cp->buffer);
1909 if(req->num_done_req == 0 && req->read_is_closed) {
1911 comm_point_drop_reply(&req->cp->repinfo);
1914 req->cp->tcp_is_reading = 1;
1916 tcp_req_pickup_next_result(req);
1921 tcp_req_info_setup_listen(req);
1925 tcp_req_info_handle_readdone(struct tcp_req_info* req)
1927 struct comm_point* c = req->cp;
1932 req->is_drop = 0;
1933 req->is_reply = 0;
1934 req->in_worker_handle = 1;
1935 sldns_buffer_set_limit(req->spool_buffer, 0);
1942 req->in_worker_handle = 0;
1953 req->in_worker_handle = 0;
1957 if(req->is_drop) {
1963 if(req->is_reply) {
1969 tcp_req_pickup_next_result(req);
1973 tcp_req_info_setup_listen(req);
1977 tcp_req_info_add_meshstate(struct tcp_req_info* req,
1981 log_assert(req && mesh && m);
1984 item->next = req->open_req_list;
1987 req->open_req_list = item;
1988 req->num_open_req++;
1994 tcp_req_info_add_result(struct tcp_req_info* req, uint8_t* buf, size_t len)
2012 last = req->done_req_list;
2033 else req->done_req_list = item;
2034 req->num_done_req++;
2039 tcp_req_info_send_reply(struct tcp_req_info* req)
2041 if(req->in_worker_handle) {
2045 sldns_buffer_clear(req->cp->buffer);
2046 sldns_buffer_write(req->cp->buffer,
2047 sldns_buffer_begin(req->spool_buffer),
2048 sldns_buffer_limit(req->spool_buffer));
2049 sldns_buffer_flip(req->cp->buffer);
2050 req->is_reply = 1;
2059 if(req->cp->tcp_is_reading && req->cp->tcp_byte_count == 0) {
2062 tcp_req_info_start_write_buf(req,
2063 sldns_buffer_begin(req->spool_buffer),
2064 sldns_buffer_limit(req->spool_buffer));
2066 comm_point_stop_listening(req->cp);
2067 comm_point_start_listening(req->cp, -1,
2068 adjusted_tcp_timeout(req->cp));
2072 if(!tcp_req_info_add_result(req, sldns_buffer_begin(req->spool_buffer),
2073 sldns_buffer_limit(req->spool_buffer))) {
2075 comm_point_drop_reply(&req->cp->repinfo);