Branch Coverage

Feersum.xs
Criterion Covered Total %
branch 179 248 72.1


line true false branch
50 2 214 if (lsnr->server_name)
55 2 214 if (lsnr->server_port)
70 163 52 if (server->n_listeners == 0) {
77 142 52 for (j = 0; j < server->n_listeners; j++) {
78 0 142 if (server->listeners[j].fd == -1) {
81 0 0 if (lsnr->tls_ctx_ref) {
89 52 0 if (!lsnr) {
90 52 0 if (server->n_listeners < FEER_MAX_LISTENERS) {
109 0 215 if (getsockname(fd, (struct sockaddr*)&addr, &addr_len) == -1) {
121 0 215 if (setsockopt(fd, IPPROTO_TCP, TCP_DEFER_ACCEPT, &(int){1}, sizeof(int)) < 0)
139 163 52 if (!server->watchers_initialized) {
154 30 22 } else if (!ev_is_active(&server->ep)) {
161 124 91 if (!ev_is_active(&date_timer)) {
179 16 16 for (i = 0; i < server->n_listeners; i++) {
184 2 14 if (lsnr->epoll_fd >= 0) {
185 0 2 if (unlikely(close(lsnr->epoll_fd) < 0))
193 2 14 if (lsnr->tls_ctx_ref) {
198 15 1 if (lsnr->server_name) {
202 15 1 if (lsnr->server_port) {
208 12 4 if (server->watchers_initialized) {
210 12 0 if (--date_timer_refs <= 0) {
222 0 2 if (server->shutting_down) {
227 2 2 for (i = 0; i < server->n_listeners; i++) {
229 1 1 if (!lsnr->paused && ev_is_active(&lsnr->accept_w)) {
1 0 if (!lsnr->paused && ev_is_active(&lsnr->accept_w)) {
236 1 1 if (paused_any)
247 0 2 if (server->shutting_down) {
252 2 2 for (i = 0; i < server->n_listeners; i++) {
254 1 1 if (lsnr->paused) {
261 1 1 if (resumed_any)
273 3 1 for (i = 0; i < server->n_listeners; i++) {
274 2 1 if (!server->listeners[i].paused) { RETVAL = 0; break; }
287 238 0 if (unlikely(!SvOK(cb) || !SvROK(cb)))
0 238 if (unlikely(!SvOK(cb) || !SvROK(cb)))
289 81 157 if (server->request_cb_cv)
303 9 0 if (!IsCodeRef(cb))
0 9 if (!IsCodeRef(cb))
305 1 8 if (unlikely(server->shutting_down))
311 8 8 for (i = 0; i < server->n_listeners; i++) {
316 0 8 if (lsnr->epoll_fd >= 0) {
317 0 0 if (unlikely(close(lsnr->epoll_fd) < 0))
322 0 0 if (lsnr->fd >= 0) {
323 0 0 if (unlikely(close(lsnr->fd) < 0))
330 8 0 if (lsnr->accept_w.fd >= 0) {
331 0 8 if (unlikely(close(lsnr->accept_w.fd) < 0))
338 2 6 if (lsnr->tls_ctx_ref) {
346 0 8 while (feer_server_recycle_idle_conn(server))
349 7 1 if (server->active_conns <= 0 && server->shutdown_cb_cv) {
7 0 if (server->active_conns <= 0 && server->shutdown_cb_cv) {
360 6020 2012 if (items > 1) {
362 3 6017 if (!(val > 0.0))
367 7996 33 RETVAL = server->read_timeout;
377 16 3 if (items > 1) {
379 1 15 if (val < 0.0)
384 0 18 RETVAL = server->header_timeout;
394 4 3 if (items > 1) {
396 1 3 if (val < 0.0)
401 0 6 RETVAL = server->write_timeout;
426 0 4 RETVAL = server->use_reverse_proxy;
443 0 0 RETVAL = server->psgix_io;
460 0 4 RETVAL = server->use_proxy_protocol;
484 0 10 RETVAL = server->use_epoll_exclusive ? 1 : 0;
503 6004 12016 : ix == 1 ? &server->write_priority
504 6008 6008 : &server->read_priority;
505 18012 8 if (items > 1) {
507 2 18010 if (new_priority < EV_MINPRI) new_priority = EV_MINPRI;
508 2 18010 if (new_priority > EV_MAXPRI) new_priority = EV_MAXPRI;
512 17991 29 RETVAL = *field;
522 6 8 if (items > 1) {
524 2 4 if (new_max < 1) new_max = 1;
528 0 14 RETVAL = server->max_accept_per_loop;
536 3 8 RETVAL = server->active_conns;
545 12 7 if (items > 1) {
547 0 12 if (new_max < 0) new_max = 0; // 0 means unlimited
551 0 19 RETVAL = server->max_connections;
561 0 0 if (items > 1) {
563 0 0 if (new_max == 0) new_max = MAX_READ_BUF;
566 0 0 RETVAL = server->max_read_buf;
576 2 0 if (items > 1) {
578 1 1 if (new_max == 0) new_max = MAX_BODY_LEN;
581 0 2 RETVAL = server->max_body_len;
591 4 3 if (items > 1) {
593 1 3 if (new_max == 0) new_max = MAX_URI_LEN;
596 0 7 RETVAL = server->max_uri_len;
606 7 3 if (items > 1) {
608 1 6 if (SvNV(val) < 0.0)
612 0 9 RETVAL = server->wbuf_low_water;
639 0 0 if (items > 1)
641 0 0 RETVAL = 0;
650 0 3 RETVAL = server->total_requests;
658 1 0 IV new_max_connection_reqs = 0;
661 1 0 if (items > 1) {
663 0 1 if (new_max_connection_reqs < 0) {
669 0 1 RETVAL = server->max_connection_reqs;
685 157 51 if (server->request_cb_cv)
687 0 208 if (server->shutdown_cb_cv)
689 199 208 for (i = 0; i < server->n_listeners; i++) {
694 0 199 if (lsnr->epoll_fd >= 0) {
699 199 0 if (lsnr->server_name)
701 199 0 if (lsnr->server_port)
704 77 122 if (lsnr->tls_ctx_ref) {
710 151 57 if (server->watchers_initialized && --date_timer_refs <= 0) {
112 39 if (server->watchers_initialized && --date_timer_refs <= 0) {
727 100 1 if (items < 3 || (items - 1) % 2 != 0)
0 100 if (items < 3 || (items - 1) % 2 != 0)
730 202 98 for (i = 1; i < items; i += 2) {
733 97 105 if (strcmp(key, "cert_file") == 0)
735 97 8 else if (strcmp(key, "key_file") == 0)
737 6 2 else if (strcmp(key, "listener") == 0)
739 0 2 else if (strcmp(key, "h2") == 0)
745 3 95 if (!cert_file) croak("set_tls: cert_file is required");
746 3 92 if (!key_file) croak("set_tls: key_file is required");
748 3 89 if (server->n_listeners == 0)
752 0 89 if (listener_idx < -1)
755 83 6 if (listener_idx < 0)
757 2 87 if (listener_idx >= server->n_listeners)
764 5 82 if (!new_ctx)
766 1 81 if (lsnr->tls_ctx_ref)
783 0 55 RETVAL = 1;
799 0 15 RETVAL = 0;
811 0 136 I_EV_API("Feersum");
136 0 I_EV_API("Feersum");
0 136 I_EV_API("Feersum");
814 0 136 if (env_fl_max) {