This file contains event notification functions. More...
Data Structures | |
struct | comm_base |
A communication point dispatcher. More... | |
struct | comm_reply |
Reply information for a communication point. More... | |
struct | comm_point |
Communication point to the network These behaviours can be accomplished by setting the flags and passing return values from the callback. More... | |
struct | comm_timer |
Structure only for making timeout events. More... | |
struct | comm_signal |
Structure only for signal events. More... | |
struct | http2_session |
HTTP2 session. More... | |
struct | http2_stream |
HTTP stream. More... | |
struct | doq_addr_storage |
DoQ socket address storage for IP4 or IP6 address. More... | |
struct | doq_server_socket |
The DoQ server socket information, for DNS over QUIC. More... | |
struct | doq_pkt_addr |
DoQ packet address information. More... | |
Macros | |
#define | NETEVENT_NOERROR 0 |
to pass no_error to callback function | |
#define | NETEVENT_CLOSED -1 |
to pass closed connection to callback function | |
#define | NETEVENT_TIMEOUT -2 |
to pass timeout happened to callback function | |
#define | NETEVENT_CAPSFAIL -3 |
to pass fallback from capsforID to callback function; 0x20 failed | |
#define | NETEVENT_DONE -4 |
to pass done transfer to callback function; http file is complete | |
#define | NETEVENT_PKT_WRITTEN -5 |
to pass write of the write packet is done to callback function used when tcp_write_and_read is enabled | |
#define | NETEVENT_SLOW_ACCEPT_TIME 2000 |
timeout to slow accept calls when not possible, in msec. | |
#define | SLOW_LOG_TIME 10 |
timeout to slow down log print, so it does not spam the logs, in sec | |
#define | DOQ_MAX_CIDLEN 24 |
for doq, the maximum dcid length, in ngtcp2 it is 20. | |
Typedefs | |
typedef int | comm_point_callback_type(struct comm_point *, void *, int, struct comm_reply *) |
callback from communication point function type | |
Enumerations | |
enum | http_status { HTTP_STATUS_OK = 200 , HTTP_STATUS_BAD_REQUEST = 400 , HTTP_STATUS_NOT_FOUND = 404 , HTTP_STATUS_PAYLOAD_TOO_LARGE = 413 , HTTP_STATUS_URI_TOO_LONG = 414 , HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE = 415 , HTTP_STATUS_NOT_IMPLEMENTED = 501 } |
enum of HTTP status | |
Functions | |
struct comm_base * | comm_base_create (int sigs) |
Create a new comm base. More... | |
struct comm_base * | comm_base_create_event (struct ub_event_base *base) |
Create comm base that uses the given ub_event_base (underlying pluggable event mechanism pointer). More... | |
void | comm_base_delete_no_base (struct comm_base *b) |
Delete comm base structure but not the underlying lib event base. More... | |
void | comm_base_delete (struct comm_base *b) |
Destroy a comm base. More... | |
void | comm_base_timept (struct comm_base *b, time_t **tt, struct timeval **tv) |
Obtain two pointers. More... | |
void | comm_base_dispatch (struct comm_base *b) |
Dispatch the comm base events. More... | |
void | comm_base_exit (struct comm_base *b) |
Exit from dispatch loop. More... | |
void | comm_base_set_slow_accept_handlers (struct comm_base *b, void(*stop_accept)(void *), void(*start_accept)(void *), void *arg) |
Set the slow_accept mode handlers. More... | |
struct ub_event_base * | comm_base_internal (struct comm_base *b) |
Access internal data structure (for util/tube.c on windows) More... | |
struct comm_point * | comm_point_create_udp (struct comm_base *base, int fd, struct sldns_buffer *buffer, int pp2_enabled, comm_point_callback_type *callback, void *callback_arg, struct unbound_socket *socket) |
Create an UDP comm point. More... | |
struct comm_point * | comm_point_create_udp_ancil (struct comm_base *base, int fd, struct sldns_buffer *buffer, int pp2_enabled, comm_point_callback_type *callback, void *callback_arg, struct unbound_socket *socket) |
Create an UDP with ancillary data comm point. More... | |
struct comm_point * | comm_point_create_doq (struct comm_base *base, int fd, struct sldns_buffer *buffer, comm_point_callback_type *callback, void *callback_arg, struct unbound_socket *socket, struct doq_table *table, struct ub_randstate *rnd, const char *ssl_service_key, const char *ssl_service_pem, struct config_file *cfg) |
Create an UDP comm point for DoQ. More... | |
struct comm_point * | comm_point_create_tcp (struct comm_base *base, int fd, int num, int idle_timeout, int harden_large_queries, uint32_t http_max_streams, char *http_endpoint, struct tcl_list *tcp_conn_limit, size_t bufsize, struct sldns_buffer *spoolbuf, enum listen_type port_type, int pp2_enabled, comm_point_callback_type *callback, void *callback_arg, struct unbound_socket *socket) |
Create a TCP listener comm point. More... | |
struct comm_point * | comm_point_create_tcp_out (struct comm_base *base, size_t bufsize, comm_point_callback_type *callback, void *callback_arg) |
Create an outgoing TCP commpoint. More... | |
struct comm_point * | comm_point_create_http_out (struct comm_base *base, size_t bufsize, comm_point_callback_type *callback, void *callback_arg, struct sldns_buffer *temp) |
Create an outgoing HTTP commpoint. More... | |
struct comm_point * | comm_point_create_local (struct comm_base *base, int fd, size_t bufsize, comm_point_callback_type *callback, void *callback_arg) |
Create commpoint to listen to a local domain file descriptor. More... | |
struct comm_point * | comm_point_create_raw (struct comm_base *base, int fd, int writing, comm_point_callback_type *callback, void *callback_arg) |
Create commpoint to listen to a local domain pipe descriptor. More... | |
void | comm_point_close (struct comm_point *c) |
Close a comm point fd. More... | |
void | comm_point_delete (struct comm_point *c) |
Close and deallocate (free) the comm point. More... | |
void | comm_point_send_reply (struct comm_reply *repinfo) |
Send reply. More... | |
void | comm_point_drop_reply (struct comm_reply *repinfo) |
Drop reply. More... | |
int | comm_point_send_udp_msg (struct comm_point *c, struct sldns_buffer *packet, struct sockaddr *addr, socklen_t addrlen, int is_connected) |
Send an udp message over a commpoint. More... | |
void | comm_point_stop_listening (struct comm_point *c) |
Stop listening for input on the commpoint. More... | |
void | comm_point_start_listening (struct comm_point *c, int newfd, int msec) |
Start listening again for input on the comm point. More... | |
void | comm_point_listen_for_rw (struct comm_point *c, int rd, int wr) |
Stop listening and start listening again for reading or writing. More... | |
int | adjusted_tcp_timeout (struct comm_point *c) |
For TCP handlers that use c->tcp_timeout_msec, this routine adjusts it with the minimum. More... | |
size_t | comm_point_get_mem (struct comm_point *c) |
Get size of memory used by comm point. More... | |
struct comm_timer * | comm_timer_create (struct comm_base *base, void(*cb)(void *), void *cb_arg) |
create timer. More... | |
void | comm_timer_disable (struct comm_timer *timer) |
disable timer. More... | |
void | comm_timer_set (struct comm_timer *timer, struct timeval *tv) |
reset timevalue for timer. More... | |
void | comm_timer_delete (struct comm_timer *timer) |
delete timer. More... | |
int | comm_timer_is_set (struct comm_timer *timer) |
see if timeout has been set to a value. More... | |
size_t | comm_timer_get_mem (struct comm_timer *timer) |
Get size of memory used by comm timer. More... | |
struct comm_signal * | comm_signal_create (struct comm_base *base, void(*callback)(int, void *), void *cb_arg) |
Create a signal handler. More... | |
int | comm_signal_bind (struct comm_signal *comsig, int sig) |
Bind signal struct to catch a signal. More... | |
void | comm_signal_delete (struct comm_signal *comsig) |
Delete the signal communication point. More... | |
int | comm_point_perform_accept (struct comm_point *c, struct sockaddr_storage *addr, socklen_t *addrlen) |
perform accept(2) with error checking. More... | |
void | comm_point_udp_callback (int fd, short event, void *arg) |
This routine is published for checks and tests, and is only used internally. More... | |
void | comm_point_udp_ancil_callback (int fd, short event, void *arg) |
This routine is published for checks and tests, and is only used internally. More... | |
void | comm_point_doq_callback (int fd, short event, void *arg) |
This routine is published for checks and tests, and is only used internally. More... | |
void | comm_point_tcp_accept_callback (int fd, short event, void *arg) |
This routine is published for checks and tests, and is only used internally. More... | |
void | comm_point_tcp_handle_callback (int fd, short event, void *arg) |
This routine is published for checks and tests, and is only used internally. More... | |
void | comm_point_http_handle_callback (int fd, short event, void *arg) |
This routine is published for checks and tests, and is only used internally. More... | |
struct http2_stream * | http2_stream_create (int32_t stream_id) |
Create new http2 stream. More... | |
void | http2_session_add_stream (struct http2_session *h2_session, struct http2_stream *h2_stream) |
Add new stream to session linked list. More... | |
void | http2_stream_add_meshstate (struct http2_stream *h2_stream, struct mesh_area *mesh, struct mesh_state *m) |
Add mesh state to stream. More... | |
void | http2_stream_remove_mesh_state (struct http2_stream *h2_stream) |
Remove mesh state from stream. More... | |
void | doq_pkt_addr_init (struct doq_pkt_addr *paddr) |
Initialize the pkt addr with lengths set to sizeof. More... | |
void | doq_send_pkt (struct comm_point *c, struct doq_pkt_addr *paddr, uint32_t ecn) |
send doq packet over UDP. | |
void | doq_timer_cb (void *arg) |
doq timer callback function. | |
void | comm_timer_callback (int fd, short event, void *arg) |
This routine is published for checks and tests, and is only used internally. More... | |
void | comm_signal_callback (int fd, short event, void *arg) |
This routine is published for checks and tests, and is only used internally. More... | |
void | comm_point_local_handle_callback (int fd, short event, void *arg) |
This routine is published for checks and tests, and is only used internally. More... | |
void | comm_point_raw_handle_callback (int fd, short event, void *arg) |
This routine is published for checks and tests, and is only used internally. More... | |
void | comm_base_handle_slow_accept (int fd, short event, void *arg) |
This routine is published for checks and tests, and is only used internally. More... | |
int | tcp_connect_errno_needs_log (struct sockaddr *addr, socklen_t addrlen) |
See if errno for tcp connect has to be logged or not. More... | |
This file contains event notification functions.
There are three types of communication points o UDP socket - perthread buffer. o TCP-accept socket - array of TCP-sockets, socketcount. o TCP socket - own buffer, parent-TCPaccept, read/write state, number of bytes read/written, timeout.
There are sockets aimed towards our clients and towards the internet. o frontside - aimed towards our clients, queries come in, answers back. o behind - aimed towards internet, to the authoritative DNS servers.
Several event types are available: o comm_base - for thread safety of the comm points, one per thread. o comm_point - udp and tcp networking, with callbacks. o comm_timer - a timeout with callback. o comm_signal - callbacks when signal is caught. o comm_reply - holds reply info during networking callback.
struct comm_base* comm_base_create | ( | int | sigs | ) |
Create a new comm base.
sigs | if true it attempts to create a default loop for signal handling. |
References internal_base::base, comm_base::eb, internal_base::now, internal_base::secs, ub_comm_base_now(), ub_default_event_base(), ub_get_event_sys(), VERB_ALGO, and verbose().
struct comm_base* comm_base_create_event | ( | struct ub_event_base * | base | ) |
Create comm base that uses the given ub_event_base (underlying pluggable event mechanism pointer).
base | underlying pluggable event base. |
References internal_base::base, comm_base::eb, and ub_comm_base_now().
Referenced by libworker_setup().
void comm_base_delete_no_base | ( | struct comm_base * | b | ) |
Delete comm base structure but not the underlying lib event base.
All comm points must have been deleted.
b | the base to delete. |
References internal_base::base, comm_base::eb, log_err(), internal_base::slow_accept, internal_base::slow_accept_enabled, ub_event_del(), and ub_event_free().
Referenced by libworker_delete_event().
void comm_base_delete | ( | struct comm_base * | b | ) |
Destroy a comm base.
All comm points must have been deleted.
b | the base to delete. |
References replay_runtime::answer_list, internal_base::base, delete_fake_pending(), delete_replay_answer(), comm_base::eb, log_err(), macro_store_delete(), fake_pending::next, replay_answer::next, fake_timer::next, replay_runtime::pending_list, fake_timer::runtime, replay_runtime::scenario, internal_base::slow_accept, internal_base::slow_accept_enabled, replay_runtime::timer_list, ub_event_base_free(), ub_event_del(), ub_event_free(), and replay_runtime::vars.
Referenced by libworker_delete(), and worker_delete().
void comm_base_timept | ( | struct comm_base * | b, |
time_t ** | tt, | ||
struct timeval ** | tv | ||
) |
Obtain two pointers.
The pointers never change (until base_delete()). The pointers point to time values that are updated regularly.
b | the communication base that will update the time values. |
tt | pointer to time in seconds is returned. |
tv | pointer to time in microseconds is returned. |
References comm_base::eb, internal_base::now, replay_runtime::now_secs, replay_runtime::now_tv, and internal_base::secs.
Referenced by outside_network_create(), and ub_comm_base_now().
void comm_base_dispatch | ( | struct comm_base * | b | ) |
Dispatch the comm base events.
b | the communication to perform. |
References internal_base::base, comm_base::eb, run_scenario(), replay_runtime::sig_cb, replay_runtime::sig_cb_arg, and ub_event_base_dispatch().
Referenced by libworker_dobg(), and worker_work().
void comm_base_exit | ( | struct comm_base * | b | ) |
Exit from dispatch loop.
b | the communication base that is in dispatch(). |
References internal_base::base, comm_base::eb, replay_runtime::exit_cleanly, log_err(), and ub_event_base_loopexit().
Referenced by do_reload(), do_stop(), libworker_do_cmd(), libworker_fg_done_cb(), and worker_sighandler().
void comm_base_set_slow_accept_handlers | ( | struct comm_base * | b, |
void(*)(void *) | stop_accept, | ||
void(*)(void *) | start_accept, | ||
void * | arg | ||
) |
Set the slow_accept mode handlers.
You can not provide these if you do not perform accept() calls.
b | comm base |
stop_accept | function that stops listening to accept fds. |
start_accept | function that resumes listening to accept fds. |
arg | callback arg to pass to the functions. |
References comm_base::cb_arg, comm_base::start_accept, and comm_base::stop_accept.
struct ub_event_base* comm_base_internal | ( | struct comm_base * | b | ) |
Access internal data structure (for util/tube.c on windows)
b | comm base |
References internal_base::base, and comm_base::eb.
struct comm_point* comm_point_create_udp | ( | struct comm_base * | base, |
int | fd, | ||
struct sldns_buffer * | buffer, | ||
int | pp2_enabled, | ||
comm_point_callback_type * | callback, | ||
void * | callback_arg, | ||
struct unbound_socket * | socket | ||
) |
Create an UDP comm point.
Calls malloc. setups the structure with the parameters you provide.
base | in which base to alloc the commpoint. |
fd | file descriptor of open UDP socket. |
buffer | shared buffer by UDP sockets from this thread. |
pp2_enabled | if the comm point will support PROXYv2. |
callback | callback function pointer. |
callback_arg | will be passed to your callback function. |
socket | and opened socket properties will be passed to your callback function. |
References internal_event::base, internal_base::base, comm_point::buffer, comm_point::callback, comm_point::cb_arg, comm_point_delete(), comm_point_udp_callback(), comm_point::cur_tcp_count, comm_point::do_not_close, comm_base::eb, internal_event::ev, comm_point::ev, comm_point::event_added, comm_point::fd, comm_point::inuse, log_err(), comm_point::max_tcp_count, comm_point::pp2_enabled, comm_point::pp2_header_state, comm_point::socket, comm_point::tcp_byte_count, comm_point::tcp_check_nb_connect, comm_point::tcp_do_close, comm_point::tcp_do_toggle_rw, comm_point::tcp_free, comm_point::tcp_handlers, comm_point::tcp_is_reading, comm_point::tcp_parent, comm_point::timeout, comm_point::type, UB_EV_PERSIST, UB_EV_READ, ub_event_add(), and ub_event_new().
struct comm_point* comm_point_create_udp_ancil | ( | struct comm_base * | base, |
int | fd, | ||
struct sldns_buffer * | buffer, | ||
int | pp2_enabled, | ||
comm_point_callback_type * | callback, | ||
void * | callback_arg, | ||
struct unbound_socket * | socket | ||
) |
Create an UDP with ancillary data comm point.
Calls malloc. Uses recvmsg instead of recv to get udp message. setups the structure with the parameters you provide.
base | in which base to alloc the commpoint. |
fd | file descriptor of open UDP socket. |
buffer | shared buffer by UDP sockets from this thread. |
pp2_enabled | if the comm point will support PROXYv2. |
callback | callback function pointer. |
callback_arg | will be passed to your callback function. |
socket | and opened socket properties will be passed to your callback function. |
struct comm_point* comm_point_create_doq | ( | struct comm_base * | base, |
int | fd, | ||
struct sldns_buffer * | buffer, | ||
comm_point_callback_type * | callback, | ||
void * | callback_arg, | ||
struct unbound_socket * | socket, | ||
struct doq_table * | table, | ||
struct ub_randstate * | rnd, | ||
const char * | ssl_service_key, | ||
const char * | ssl_service_pem, | ||
struct config_file * | cfg | ||
) |
Create an UDP comm point for DoQ.
Calls malloc. setups the structure with the parameters you provide.
base | in which base to alloc the commpoint. |
fd | : file descriptor of open UDP socket. |
buffer | shared buffer by UDP sockets from this thread. |
callback | callback function pointer. |
callback_arg | will be passed to your callback function. |
socket | and opened socket properties will be passed to your callback function. |
table | the doq connection table for the host. |
rnd | random generator to use. |
ssl_service_key | the ssl service key file. |
ssl_service_pem | the ssl service pem file. |
cfg | config file struct. |
References internal_event::base, internal_base::base, comm_point::buffer, comm_point::callback, comm_point::cb_arg, comm_point_delete(), comm_point_doq_callback(), comm_point::cur_tcp_count, comm_point::do_not_close, comm_base::eb, internal_event::ev, comm_point::ev, comm_point::event_added, comm_point::fd, comm_point::inuse, log_err(), comm_point::max_tcp_count, comm_point::pp2_enabled, comm_point::pp2_header_state, sock_close(), comm_point::socket, comm_point::tcp_byte_count, comm_point::tcp_check_nb_connect, comm_point::tcp_do_close, comm_point::tcp_do_toggle_rw, comm_point::tcp_free, comm_point::tcp_handlers, comm_point::tcp_is_reading, comm_point::tcp_parent, comm_point::timeout, comm_point::type, UB_EV_PERSIST, UB_EV_READ, ub_event_add(), and ub_event_new().
struct comm_point* comm_point_create_tcp | ( | struct comm_base * | base, |
int | fd, | ||
int | num, | ||
int | idle_timeout, | ||
int | harden_large_queries, | ||
uint32_t | http_max_streams, | ||
char * | http_endpoint, | ||
struct tcl_list * | tcp_conn_limit, | ||
size_t | bufsize, | ||
struct sldns_buffer * | spoolbuf, | ||
enum listen_type | port_type, | ||
int | pp2_enabled, | ||
comm_point_callback_type * | callback, | ||
void * | callback_arg, | ||
struct unbound_socket * | socket | ||
) |
Create a TCP listener comm point.
Calls malloc. Setups the structure with the parameters you provide. Also Creates TCP Handlers, pre allocated for you. Uses the parameters you provide.
base | in which base to alloc the commpoint. |
fd | file descriptor of open TCP socket set to listen nonblocking. |
num | becomes max_tcp_count, the routine allocates that many tcp handler commpoints. |
idle_timeout | TCP idle timeout in ms. |
harden_large_queries | whether query size should be limited. |
http_max_streams | maximum number of HTTP/2 streams per connection. |
http_endpoint | HTTP endpoint to service queries on |
tcp_conn_limit | TCP connection limit info. |
bufsize | size of buffer to create for handlers. |
spoolbuf | shared spool buffer for tcp_req_info structures. or NULL to not create those structures in the tcp handlers. |
port_type | the type of port we are creating a TCP listener for. Used to select handler type to use. |
pp2_enabled | if the comm point will support PROXYv2. |
callback | callback function pointer for TCP handlers. |
callback_arg | will be passed to your callback function. |
socket | and opened socket properties will be passed to your callback function. |
References internal_event::base, internal_base::base, comm_point::buffer, comm_point::callback, comm_point::cb_arg, comm_point_create_tcp_handler(), comm_point_delete(), comm_point_tcp_accept_callback(), comm_point::comm_tcp_accept, comm_point::cur_tcp_count, comm_point::do_not_close, comm_base::eb, internal_event::ev, comm_point::ev, comm_point::event_added, comm_point::fd, listen_type_http, listen_type_ssl, listen_type_tcp, listen_type_tcp_dnscrypt, log_err(), comm_point::max_tcp_count, comm_point::pp2_enabled, comm_point::pp2_header_none, comm_point::pp2_header_state, comm_point::socket, comm_point::tcl_addr, comm_point::tcp_byte_count, comm_point::tcp_check_nb_connect, comm_point::tcp_conn_limit, comm_point::tcp_do_close, comm_point::tcp_do_toggle_rw, comm_point::tcp_free, comm_point::tcp_handlers, comm_point::tcp_is_reading, comm_point::tcp_keepalive, comm_point::tcp_parent, comm_point::tcp_timeout_msec, comm_point::timeout, comm_point::type, UB_EV_PERSIST, UB_EV_READ, ub_event_add(), and ub_event_new().
struct comm_point* comm_point_create_tcp_out | ( | struct comm_base * | base, |
size_t | bufsize, | ||
comm_point_callback_type * | callback, | ||
void * | callback_arg | ||
) |
Create an outgoing TCP commpoint.
No file descriptor is opened, left at -1.
base | in which base to alloc the commpoint. |
bufsize | size of buffer to create for handlers. |
callback | callback function pointer for the handler. |
callback_arg | will be passed to your callback function. |
References internal_event::base, internal_base::base, comm_point::buffer, comm_reply::c, comm_point::callback, comm_point::cb_arg, comm_point_tcp_handle_callback(), comm_point::cur_tcp_count, comm_point::do_not_close, comm_base::eb, internal_event::ev, comm_point::ev, comm_point::fd, log_err(), comm_point::max_tcp_count, comm_point::pp2_enabled, comm_point::pp2_header_state, comm_point::repinfo, sldns_buffer_free(), sldns_buffer_new(), comm_point::tcl_addr, comm_point::tcp_byte_count, comm_point::tcp_check_nb_connect, comm_point::tcp_conn_limit, comm_point::tcp_do_close, comm_point::tcp_do_toggle_rw, comm_point::tcp_free, comm_point::tcp_handlers, comm_point::tcp_is_reading, comm_point::tcp_keepalive, comm_point::tcp_parent, TCP_QUERY_TIMEOUT, comm_point::tcp_timeout_msec, comm_point::timeout, comm_point::type, UB_EV_PERSIST, UB_EV_WRITE, and ub_event_new().
struct comm_point* comm_point_create_http_out | ( | struct comm_base * | base, |
size_t | bufsize, | ||
comm_point_callback_type * | callback, | ||
void * | callback_arg, | ||
struct sldns_buffer * | temp | ||
) |
Create an outgoing HTTP commpoint.
No file descriptor is opened, left at -1.
base | in which base to alloc the commpoint. |
bufsize | size of buffer to create for handlers. |
callback | callback function pointer for the handler. |
callback_arg | will be passed to your callback function. |
temp | sldns buffer, shared between other http_out commpoints, for temporary data when performing callbacks. |
References internal_event::base, internal_base::base, comm_point::buffer, comm_reply::c, comm_point::callback, comm_point::cb_arg, comm_point_http_handle_callback(), comm_point::cur_tcp_count, comm_point::do_not_close, comm_base::eb, internal_event::ev, comm_point::ev, comm_point::fd, comm_point::http_in_chunk_headers, comm_point::http_in_headers, comm_point::http_is_chunked, comm_point::http_temp, log_err(), comm_point::max_tcp_count, comm_point::pp2_enabled, comm_point::pp2_header_state, comm_point::repinfo, sldns_buffer_free(), sldns_buffer_new(), comm_point::ssl, comm_point::tcp_byte_count, comm_point::tcp_check_nb_connect, comm_point::tcp_do_close, comm_point::tcp_do_toggle_rw, comm_point::tcp_free, comm_point::tcp_handlers, comm_point::tcp_is_reading, comm_point::tcp_parent, comm_point::timeout, comm_point::type, UB_EV_PERSIST, UB_EV_WRITE, and ub_event_new().
Referenced by outnet_comm_point_for_http().
struct comm_point* comm_point_create_local | ( | struct comm_base * | base, |
int | fd, | ||
size_t | bufsize, | ||
comm_point_callback_type * | callback, | ||
void * | callback_arg | ||
) |
Create commpoint to listen to a local domain file descriptor.
base | in which base to alloc the commpoint. |
fd | file descriptor of open AF_UNIX socket set to listen nonblocking. |
bufsize | size of buffer to create for handlers. |
callback | callback function pointer for the handler. |
callback_arg | will be passed to your callback function. |
References internal_event::base, internal_base::base, comm_point::buffer, comm_point::callback, comm_point::cb_arg, comm_point_local_handle_callback(), comm_point::cur_tcp_count, comm_point::do_not_close, comm_base::eb, internal_event::ev, comm_point::ev, comm_point::event_added, comm_point::fd, log_err(), comm_point::max_tcp_count, comm_point::pp2_enabled, comm_point::pp2_header_state, sldns_buffer_new(), comm_point::tcp_byte_count, comm_point::tcp_check_nb_connect, comm_point::tcp_do_close, comm_point::tcp_do_toggle_rw, comm_point::tcp_free, comm_point::tcp_handlers, comm_point::tcp_is_reading, comm_point::tcp_parent, comm_point::timeout, comm_point::type, UB_EV_PERSIST, UB_EV_READ, ub_event_add(), ub_event_free(), and ub_event_new().
struct comm_point* comm_point_create_raw | ( | struct comm_base * | base, |
int | fd, | ||
int | writing, | ||
comm_point_callback_type * | callback, | ||
void * | callback_arg | ||
) |
Create commpoint to listen to a local domain pipe descriptor.
base | in which base to alloc the commpoint. |
fd | file descriptor. |
writing | true if you want to listen to writes, false for reads. |
callback | callback function pointer for the handler. |
callback_arg | will be passed to your callback function. |
References internal_event::base, internal_base::base, comm_point::buffer, comm_point::callback, comm_point::cb_arg, comm_point_raw_handle_callback(), comm_point::cur_tcp_count, comm_point::do_not_close, comm_base::eb, internal_event::ev, comm_point::ev, comm_point::event_added, comm_point::fd, log_err(), comm_point::max_tcp_count, comm_point::pp2_enabled, comm_point::pp2_header_state, comm_point::tcp_byte_count, comm_point::tcp_check_nb_connect, comm_point::tcp_do_close, comm_point::tcp_do_toggle_rw, comm_point::tcp_free, comm_point::tcp_handlers, comm_point::tcp_is_reading, comm_point::tcp_parent, comm_point::timeout, comm_point::type, UB_EV_PERSIST, UB_EV_READ, UB_EV_WRITE, ub_event_add(), ub_event_free(), and ub_event_new().
void comm_point_close | ( | struct comm_point * | c | ) |
Close a comm point fd.
c | comm point to close. |
References comm_point::do_not_close, internal_event::ev, comm_point::ev, comm_point::event_added, comm_point::fd, comm_point::h2_session, http2_session_server_delete(), log_err(), sock_close(), comm_point::tcl_addr, tcl_close_connection(), comm_point::tcp_more_read_again, comm_point::tcp_more_write_again, comm_point::tcp_req_info, tcp_req_info_clear(), comm_point::type, UB_EV_READ, UB_EV_WRITE, ub_event_del(), ub_winsock_tcp_wouldblock(), VERB_ALGO, and verbose().
Referenced by comm_point_delete(), comm_point_tcp_accept_callback(), decommission_pending_tcp(), portcomm_loweruse(), reclaim_http_handler(), and reclaim_tcp_handler().
void comm_point_delete | ( | struct comm_point * | c | ) |
Close and deallocate (free) the comm point.
If the comm point is a tcp-accept point, also its tcp-handler points are deleted.
c | comm point to delete. |
References comm_point::buffer, comm_point_close(), internal_event::ev, comm_point::ev, FAKE_COMMPOINT_TYPECODE, comm_point::h2_session, http2_session_delete(), comm_point::http_endpoint, log_assert, comm_point::max_tcp_count, fake_commpoint::pending, pending_list_delete(), fake_commpoint::runtime, sldns_buffer_free(), comm_point::ssl, comm_point::tcp_handlers, comm_point::tcp_req_info, tcp_req_info_delete(), comm_point::timeout, comm_point::type, fake_commpoint::type_tcp_out, fake_commpoint::typecode, and ub_event_free().
Referenced by auth_xfer_delete(), auth_xfer_probe_timer_callback(), auth_xfer_probe_udp_callback(), auth_xfer_transfer_http_callback(), auth_xfer_transfer_timer_callback(), clean_point(), comm_point_create_doq(), comm_point_create_tcp(), comm_point_create_udp(), daemon_remote_clear(), listen_list_delete(), outnet_comm_point_for_http(), outside_network_delete(), tube_remove_bg_listen(), tube_remove_bg_write(), xfr_probe_disown(), xfr_probe_send_probe(), xfr_transfer_disown(), and xfr_transfer_init_fetch().
void comm_point_send_reply | ( | struct comm_reply * | repinfo | ) |
Send reply.
Put message into commpoint buffer.
repinfo | The reply info copied from a commpoint callback call. |
References replay_runtime::answer_last, replay_runtime::answer_list, comm_point::buffer, comm_reply::c, comm_point::ev, log_assert, log_info(), memdup(), replay_answer::next, replay_answer::pkt, replay_answer::repinfo, sldns_buffer_begin(), and sldns_buffer_limit().
Referenced by reply_and_prefetch().
void comm_point_drop_reply | ( | struct comm_reply * | repinfo | ) |
Drop reply.
Cleans up.
repinfo | The reply info copied from a commpoint callback call. |
References comm_point::buffer, comm_reply::c, comm_point::h2_session, tcp_req_info::is_drop, http2_session::is_drop, log_assert, log_info(), http2_session::postpone_drop, reclaim_http_handler(), reclaim_tcp_handler(), sldns_buffer_free(), comm_point::tcp_req_info, and comm_point::type.
Referenced by dnsc_handle_curved_request(), mesh_new_client(), and tcp_req_info_handle_writedone().
int comm_point_send_udp_msg | ( | struct comm_point * | c, |
struct sldns_buffer * | packet, | ||
struct sockaddr * | addr, | ||
socklen_t | addrlen, | ||
int | is_connected | ||
) |
Send an udp message over a commpoint.
c | commpoint to send it from. |
packet | what to send. |
addr | where to send it to. If NULL, send is performed, for connected sockets, to the connected address. |
addrlen | length of addr. |
is_connected | if the UDP socket is connect()ed. |
References internal_event::base, comm_base::eb, comm_point::ev, comm_point::fd, internal_base::last_writewait_log, log_addr(), log_assert, log_err(), internal_base::secs, SEND_BLOCKED_MAX_RETRY, SEND_BLOCKED_WAIT_TIMEOUT, sldns_buffer_begin(), sldns_buffer_remaining(), SLOW_LOG_TIME, sock_strerror(), udp_send_errno_needs_log(), VERB_OPS, and verbose().
Referenced by comm_point_udp_callback().
void comm_point_stop_listening | ( | struct comm_point * | c | ) |
Stop listening for input on the commpoint.
No callbacks will happen.
c | commpoint to disable. The fd is not closed. |
References internal_event::ev, comm_point::ev, comm_point::event_added, comm_point::fd, log_err(), ub_event_del(), VERB_ALGO, and verbose().
Referenced by comm_point_http_handle_write(), comm_point_tcp_accept_callback(), tcp_callback_reader(), and tcp_callback_writer().
void comm_point_start_listening | ( | struct comm_point * | c, |
int | newfd, | ||
int | msec | ||
) |
Start listening again for input on the comm point.
c | commpoint to enable again. |
newfd | new fd, or -1 to leave fd be. |
msec | timeout in milliseconds, or -1 for no (change to the) timeout. So seconds*1000. |
References internal_event::ev, comm_point::ev, comm_point::event_added, comm_point::fd, log_err(), sock_close(), comm_point::tcp_free, comm_point::tcp_is_reading, comm_point::tcp_write_and_read, comm_point::timeout, comm_point::type, UB_EV_READ, UB_EV_TIMEOUT, UB_EV_WRITE, ub_event_add(), ub_event_add_bits(), ub_event_del(), ub_event_del_bits(), ub_event_set_fd(), VERB_ALGO, and verbose().
Referenced by comm_point_http_handle_write(), reclaim_http_handler(), reclaim_tcp_handler(), setup_tcp_handler(), tcp_callback_reader(), and tcp_callback_writer().
void comm_point_listen_for_rw | ( | struct comm_point * | c, |
int | rd, | ||
int | wr | ||
) |
Stop listening and start listening again for reading or writing.
c | commpoint |
rd | if true, listens for reading. |
wr | if true, listens for writing. |
References internal_event::ev, comm_point::ev, comm_point::event_added, comm_point::fd, log_err(), comm_point::timeout, UB_EV_READ, UB_EV_TIMEOUT, UB_EV_WRITE, ub_event_add(), ub_event_add_bits(), ub_event_del(), ub_event_del_bits(), VERB_ALGO, and verbose().
Referenced by remote_handshake_later(), ssl_handle_read(), ssl_handle_write(), ssl_http_read_more(), and ssl_http_write_more().
int adjusted_tcp_timeout | ( | struct comm_point * | c | ) |
For TCP handlers that use c->tcp_timeout_msec, this routine adjusts it with the minimum.
Otherwise, a 0 value advertised without the minimum applied moves to a 0 in comm_point_start_listening and that routine treats it as no timeout, listen forever, which is not wanted.
c | comm point to use the tcp_timeout_msec of. |
References TCP_QUERY_TIMEOUT_MINIMUM, and comm_point::tcp_timeout_msec.
Referenced by setup_tcp_handler(), tcp_callback_reader(), and tcp_callback_writer().
size_t comm_point_get_mem | ( | struct comm_point * | c | ) |
Get size of memory used by comm point.
For TCP handlers this includes subhandlers. For UDP handlers, this does not include the (shared) UDP buffer.
c | commpoint. |
References comm_point::buffer, comm_point::ev, comm_point::max_tcp_count, sldns_buffer_capacity(), comm_point::tcp_handlers, comm_point::timeout, and comm_point::type.
struct comm_timer* comm_timer_create | ( | struct comm_base * | base, |
void(*)(void *) | cb, | ||
void * | cb_arg | ||
) |
create timer.
Not active upon creation.
base | event handling base. |
cb | callback function: void myfunc(void* myarg); |
cb_arg | user callback argument. |
References internal_base::base, internal_timer::base, comm_timer::callback, comm_timer::cb_arg, comm_timer_callback(), comm_base::eb, internal_timer::ev, comm_timer::ev_timer, log_err(), internal_timer::super, UB_EV_TIMEOUT, and ub_event_new().
Referenced by dt_msg_queue_create(), mesh_serve_expired_init(), pending_tcp_query(), pending_udp_query(), serviced_create(), validate_suspend_setup_timer(), xfr_probe_send_probe(), and xfr_transfer_init_fetch().
void comm_timer_disable | ( | struct comm_timer * | timer | ) |
disable timer.
Stops callbacks from happening.
timer | to disable. |
References fake_timer::enabled, internal_timer::enabled, internal_timer::ev, comm_timer::ev_timer, log_info(), and ub_timer_del().
Referenced by auth_xfer_probe_udp_callback(), auth_xfer_transfer_http_callback(), comm_timer_delete(), and comm_timer_set().
void comm_timer_set | ( | struct comm_timer * | timer, |
struct timeval * | tv | ||
) |
reset timevalue for timer.
timer | timer to (re)set. |
tv | when the timer should activate. if NULL timer is disabled. |
References internal_base::base, internal_timer::base, comm_timer_callback(), comm_timer_disable(), comm_base::eb, fake_timer::enabled, internal_timer::enabled, internal_timer::ev, comm_timer::ev_timer, log_assert, log_err(), log_info(), replay_runtime::now_tv, fake_timer::runtime, timeval_add(), fake_timer::tv, and ub_timer_add().
Referenced by dt_msg_queue_start_timer(), mesh_serve_expired_init(), outnet_waiting_tcp_list_add(), outnet_waiting_tcp_list_add_first(), pending_udp_timer_cb(), reset_worker_timer(), serviced_create(), set_cron_timer(), validate_suspend_setup_timer(), worker_probe_timer_cb(), and worker_restart_timer().
void comm_timer_delete | ( | struct comm_timer * | timer | ) |
delete timer.
timer | to delete. |
References comm_timer_disable(), internal_timer::ev, comm_timer::ev_timer, fake_timer::next, fake_timer::runtime, replay_runtime::timer_list, and ub_event_free().
Referenced by auth_xfer_delete(), dt_msg_queue_delete(), mesh_query_done(), mesh_serve_expired_callback(), mesh_state_cleanup(), pending_delete(), pending_udp_query(), val_clear(), waiting_tcp_delete(), worker_delete(), xfr_nextprobe_disown(), xfr_probe_disown(), and xfr_transfer_disown().
int comm_timer_is_set | ( | struct comm_timer * | timer | ) |
see if timeout has been set to a value.
timer | the timer to examine. |
References fake_timer::enabled, internal_timer::enabled, and comm_timer::ev_timer.
Referenced by dt_msg_queue_start_timer().
size_t comm_timer_get_mem | ( | struct comm_timer * | timer | ) |
Get size of memory used by comm timer.
timer | the timer to examine. |
Referenced by serviced_get_mem(), waiting_tcp_get_mem(), and waiting_udp_get_mem().
struct comm_signal* comm_signal_create | ( | struct comm_base * | base, |
void(*)(int, void *) | callback, | ||
void * | cb_arg | ||
) |
Create a signal handler.
Call signal_bind() later to bind to a signal.
base | communication base to use. |
callback | called when signal is caught. |
cb_arg | user argument to callback |
References comm_signal::base, comm_signal::callback, replay_runtime::cb_arg, comm_signal::cb_arg, comm_signal::ev_signal, log_err(), replay_runtime::sig_cb, and replay_runtime::sig_cb_arg.
int comm_signal_bind | ( | struct comm_signal * | comsig, |
int | sig | ||
) |
Bind signal struct to catch a signal.
A single comm_signal can be bound to multiple signals, calling comm_signal_bind multiple times.
comsig | the communication point, with callback information. |
sig | signal number. |
References internal_base::base, comm_signal::base, comm_signal_callback(), comm_base::eb, comm_signal::ev_signal, log_assert, log_err(), entry::next, ub_event_free(), ub_signal_add(), and ub_signal_new().
void comm_signal_delete | ( | struct comm_signal * | comsig | ) |
Delete the signal communication point.
comsig | to delete. |
References internal_signal::ev, comm_signal::ev_signal, internal_signal::next, ub_event_free(), and ub_signal_del().
Referenced by worker_delete().
int comm_point_perform_accept | ( | struct comm_point * | c, |
struct sockaddr_storage * | addr, | ||
socklen_t * | addrlen | ||
) |
perform accept(2) with error checking.
c | commpoint with accept fd. |
addr | remote end returned here. |
addrlen | length of remote end returned here. |
References internal_event::base, internal_base::base, comm_base::cb_arg, comm_base_handle_slow_accept(), comm_base::eb, internal_event::ev, comm_point::ev, comm_point::fd, fd_set_nonblock(), fptr_ok, fptr_whitelist_stop_accept(), internal_base::last_slow_log, log_err(), log_err_addr(), NETEVENT_SLOW_ACCEPT_TIME, internal_base::secs, internal_base::slow_accept, internal_base::slow_accept_enabled, SLOW_LOG_TIME, sock_strerror(), comm_base::stop_accept, comm_point::tcl_addr, tcl_addr_lookup(), tcl_new_connection(), comm_point::tcp_conn_limit, comm_point::type, ub_comm_base_now(), UB_EV_READ, UB_EV_TIMEOUT, ub_event_add(), ub_event_new(), ub_winsock_tcp_wouldblock(), VERB_ALGO, VERB_OPS, verbose(), and verbosity.
Referenced by comm_point_tcp_accept_callback().
void comm_point_udp_callback | ( | int | fd, |
short | event, | ||
void * | arg | ||
) |
This routine is published for checks and tests, and is only used internally.
handle libevent callback for udp comm point.
fd | file descriptor. |
event | event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. |
arg | the comm_point structure. |
References internal_event::base, comm_point::buffer, comm_reply::c, comm_point::callback, comm_point::cb_arg, comm_reply::client_addr, comm_reply::client_addrlen, comm_point_send_udp_msg(), comm_point::comm_udp, consume_pp2_header(), comm_point::ev, comm_point::fd, fptr_ok, fptr_whitelist_comm_point(), log_assert, log_err(), MSG_DONTWAIT, NETEVENT_NOERROR, NUM_UDP_PER_SELECT, comm_point::pp2_enabled, comm_reply::remote_addr, comm_reply::remote_addrlen, sldns_buffer_begin(), sldns_buffer_clear(), sldns_buffer_flip(), sldns_buffer_remaining(), sldns_buffer_skip(), comm_reply::srctype, comm_point::type, ub_comm_base_now(), UB_EV_READ, and udp_recv_needs_log().
Referenced by comm_point_create_udp().
void comm_point_udp_ancil_callback | ( | int | fd, |
short | event, | ||
void * | arg | ||
) |
This routine is published for checks and tests, and is only used internally.
handle libevent callback for udp ancillary data comm point.
fd | file descriptor. |
event | event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. |
arg | the comm_point structure. |
void comm_point_doq_callback | ( | int | fd, |
short | event, | ||
void * | arg | ||
) |
This routine is published for checks and tests, and is only used internally.
handle libevent callback for doq comm point.
fd | file descriptor. |
event | event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. |
arg | the comm_point structure. |
Referenced by comm_point_create_doq().
void comm_point_tcp_accept_callback | ( | int | fd, |
short | event, | ||
void * | arg | ||
) |
This routine is published for checks and tests, and is only used internally.
handle libevent callback for tcp accept comm point
fd | file descriptor. |
event | event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. |
arg | the comm_point structure. |
References internal_event::base, comm_point::comm_http, comm_point::comm_local, comm_point_close(), comm_point_http_handle_callback(), comm_point_perform_accept(), comm_point_stop_listening(), comm_point_tcp_handle_callback(), comm_point::comm_raw, comm_point::comm_ssl_shake_read, comm_point::comm_tcp, comm_point::comm_tcp_accept, comm_point::cur_tcp_count, comm_point::ev, comm_point::fd, incoming_ssl_fd(), log_assert, log_info(), log_warn(), comm_point::max_tcp_count, comm_reply::remote_addr, comm_point::repinfo, setup_tcp_handler(), comm_point::ssl, comm_point::tcp_free, comm_point::type, ub_comm_base_now(), UB_EV_PERSIST, UB_EV_READ, UB_EV_TIMEOUT, ub_event_free(), and ub_event_new().
Referenced by comm_point_create_tcp().
void comm_point_tcp_handle_callback | ( | int | fd, |
short | event, | ||
void * | arg | ||
) |
This routine is published for checks and tests, and is only used internally.
handle libevent callback for tcp data comm point
fd | file descriptor. |
event | event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. |
arg | the comm_point structure. |
References internal_event::base, comm_point::buffer, comm_point::callback, comm_point::cb_arg, comm_point_tcp_handle_read(), comm_point_tcp_handle_write(), comm_point::comm_tcp, comm_point::ev, comm_point::fd, fptr_ok, fptr_whitelist_comm_point(), log_assert, log_err(), NETEVENT_CLOSED, NETEVENT_TIMEOUT, tcp_req_info::read_again, reclaim_tcp_handler(), sldns_buffer_capacity(), sldns_buffer_new(), comm_point::tcp_do_close, tcp_more_read_again(), comm_point::tcp_more_read_again, tcp_more_write_again(), comm_point::tcp_more_write_again, comm_point::tcp_parent, comm_point::tcp_req_info, tcp_req_info_read_again(), comm_point::type, ub_comm_base_now(), UB_EV_READ, UB_EV_TIMEOUT, UB_EV_WRITE, VERB_QUERY, and verbose().
Referenced by comm_point_create_tcp_handler(), comm_point_create_tcp_out(), and comm_point_tcp_accept_callback().
void comm_point_http_handle_callback | ( | int | fd, |
short | event, | ||
void * | arg | ||
) |
This routine is published for checks and tests, and is only used internally.
handle libevent callback for tcp data comm point
fd | file descriptor. |
event | event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. |
arg | the comm_point structure. |
References internal_event::base, comm_point::callback, comm_point::cb_arg, comm_point::comm_http, comm_point_http_handle_read(), comm_point_http_handle_write(), comm_point::ev, comm_point::fd, fptr_ok, fptr_whitelist_comm_point(), log_assert, log_err(), NETEVENT_CLOSED, NETEVENT_TIMEOUT, reclaim_http_handler(), comm_point::tcp_do_close, comm_point::type, ub_comm_base_now(), UB_EV_READ, UB_EV_TIMEOUT, UB_EV_WRITE, VERB_QUERY, and verbose().
Referenced by comm_point_create_http_out(), and comm_point_tcp_accept_callback().
struct http2_stream* http2_stream_create | ( | int32_t | stream_id | ) |
Create new http2 stream.
stream_id | ID for stream to create. |
void http2_session_add_stream | ( | struct http2_session * | h2_session, |
struct http2_stream * | h2_stream | ||
) |
Add new stream to session linked list.
h2_session | http2 session to add stream to |
h2_stream | stream to add to session list |
void http2_stream_add_meshstate | ( | struct http2_stream * | h2_stream, |
struct mesh_area * | mesh, | ||
struct mesh_state * | m | ||
) |
Add mesh state to stream.
To be able to remove mesh reply on stream closure
References http2_stream::mesh, and http2_stream::mesh_state.
void http2_stream_remove_mesh_state | ( | struct http2_stream * | h2_stream | ) |
Remove mesh state from stream.
When the mesh state has been removed.
References http2_stream::mesh_state.
void doq_pkt_addr_init | ( | struct doq_pkt_addr * | paddr | ) |
Initialize the pkt addr with lengths set to sizeof.
That is ready for a call to recv.
void comm_timer_callback | ( | int | fd, |
short | event, | ||
void * | arg | ||
) |
This routine is published for checks and tests, and is only used internally.
handle libevent callback for timer comm.
fd | file descriptor (always -1). |
event | event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. |
arg | the comm_timer structure. |
Referenced by comm_timer_create(), and comm_timer_set().
void comm_signal_callback | ( | int | fd, |
short | event, | ||
void * | arg | ||
) |
This routine is published for checks and tests, and is only used internally.
handle libevent callback for signal comm.
fd | file descriptor (used for the signal number). |
event | event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. |
arg | the internal commsignal structure. |
References comm_signal::base, comm_signal::callback, comm_signal::cb_arg, fptr_ok, fptr_whitelist_comm_signal(), ub_comm_base_now(), and UB_EV_SIGNAL.
Referenced by comm_signal_bind().
void comm_point_local_handle_callback | ( | int | fd, |
short | event, | ||
void * | arg | ||
) |
This routine is published for checks and tests, and is only used internally.
libevent callback for AF_UNIX fds
fd | file descriptor. |
event | event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. |
arg | the comm_point structure. |
References internal_event::base, comm_point::callback, comm_point::cb_arg, comm_point::comm_local, comm_point_tcp_handle_read(), comm_point::ev, comm_point::fd, fptr_ok, fptr_whitelist_comm_point(), log_assert, log_err(), NETEVENT_CLOSED, comm_point::type, ub_comm_base_now(), and UB_EV_READ.
Referenced by comm_point_create_local().
void comm_point_raw_handle_callback | ( | int | fd, |
short | event, | ||
void * | arg | ||
) |
This routine is published for checks and tests, and is only used internally.
libevent callback for raw fd access.
fd | file descriptor. |
event | event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. |
arg | the comm_point structure. |
Referenced by comm_point_create_raw().
void comm_base_handle_slow_accept | ( | int | fd, |
short | event, | ||
void * | arg | ||
) |
This routine is published for checks and tests, and is only used internally.
libevent callback for timeout on slow accept.
fd | file descriptor. |
event | event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. |
arg | the comm_point structure. |
Referenced by comm_point_perform_accept().
int tcp_connect_errno_needs_log | ( | struct sockaddr * | addr, |
socklen_t | addrlen | ||
) |
See if errno for tcp connect has to be logged or not.
This uses errno
addr | apart from checking errno, the addr is checked for ip4mapped and broadcast type, hence passed. |
addrlen | length of the addr parameter. |
References udp_send_errno_needs_log().
Referenced by comm_point_tcp_handle_write().