Branch Coverage

Feersum.xs
Criterion Covered Total %
branch 181 248 72.9


line true false branch
67 172 51 if (server->n_listeners == 0) {
72 141 51 for (int j = 0; j < server->n_listeners; j++) {
73 0 141 if (server->listeners[j].fd == -1) {
81 51 0 if (!lsnr) {
82 51 0 if (server->n_listeners < FEER_MAX_LISTENERS) {
100 0 223 if (getsockname(fd, (struct sockaddr*)&addr, &addr_len) == -1) {
112 0 223 if (setsockopt(fd, IPPROTO_TCP, TCP_DEFER_ACCEPT, &(int){1}, sizeof(int)) < 0)
128 172 51 if (!server->watchers_initialized) {
143 29 22 } else if (!ev_is_active(&server->ep)) {
150 127 96 if (!ev_is_active(&date_timer)) {
167 20 20 for (int i = 0; i < server->n_listeners; i++) {
172 2 18 if (lsnr->epoll_fd >= 0) {
173 0 2 if (unlikely(close(lsnr->epoll_fd) < 0))
189 16 4 if (server->watchers_initialized) {
191 13 3 if (--date_timer_refs <= 0) {
202 0 2 if (server->shutting_down) {
207 2 2 for (int i = 0; i < server->n_listeners; i++) {
209 1 1 if (!(lsnr->pause_flags & FEER_PAUSE_USER)) {
211 1 0 if (ev_is_active(&lsnr->accept_w))
217 1 1 if (paused_any)
227 0 2 if (server->shutting_down) {
232 2 2 for (int i = 0; i < server->n_listeners; i++) {
234 1 1 if (lsnr->pause_flags & FEER_PAUSE_USER) {
238 1 0 if (!lsnr->pause_flags && lsnr->fd >= 0)
1 0 if (!lsnr->pause_flags && lsnr->fd >= 0)
243 1 1 if (resumed_any)
254 3 1 for (int i = 0; i < server->n_listeners; i++) {
255 2 1 if (!(server->listeners[i].pause_flags & FEER_PAUSE_USER)) {
270 245 0 if (unlikely(!SvOK(cb) || !SvROK(cb)))
0 245 if (unlikely(!SvOK(cb) || !SvROK(cb)))
284 9 0 if (!IsCodeRef(cb))
0 9 if (!IsCodeRef(cb))
286 1 8 if (unlikely(server->shutting_down))
292 8 8 for (int i = 0; i < server->n_listeners; i++) {
297 0 8 if (lsnr->epoll_fd >= 0) {
298 0 0 if (unlikely(close(lsnr->epoll_fd) < 0))
303 0 0 if (lsnr->fd >= 0) {
304 0 0 if (unlikely(close(lsnr->fd) < 0))
311 8 0 if (lsnr->accept_w.fd >= 0) {
312 0 8 if (unlikely(close(lsnr->accept_w.fd) < 0))
325 0 8 while (feer_server_recycle_idle_conn(server))
328 7 1 if (server->active_conns <= 0 && server->shutdown_cb_cv) {
7 0 if (server->active_conns <= 0 && server->shutdown_cb_cv) {
339 6020 2012 if (items > 1) {
341 3 6017 if (!(val > 0.0))
346 7996 33 RETVAL = server->read_timeout;
356 16 3 if (items > 1) {
358 1 15 if (val < 0.0)
363 0 18 RETVAL = server->header_timeout;
373 4 3 if (items > 1) {
375 1 3 if (val < 0.0)
380 0 6 RETVAL = server->write_timeout;
405 0 4 RETVAL = server->use_reverse_proxy;
422 0 2 RETVAL = server->psgix_io;
439 0 4 RETVAL = server->use_proxy_protocol;
463 0 10 RETVAL = server->use_epoll_exclusive ? 1 : 0;
483 6004 12016 : ix == 1 ? &server->write_priority
484 6008 6008 : &server->read_priority;
485 18012 8 if (items > 1) {
487 2 18010 if (new_priority < EV_MINPRI) new_priority = EV_MINPRI;
488 2 18010 if (new_priority > EV_MAXPRI) new_priority = EV_MAXPRI;
492 17992 28 RETVAL = *field;
502 6 8 if (items > 1) {
504 2 4 if (new_max < 1) new_max = 1;
508 0 14 RETVAL = server->max_accept_per_loop;
516 3 8 RETVAL = server->active_conns;
525 12 7 if (items > 1) {
527 0 12 if (new_max < 0) new_max = 0; // 0 means unlimited
531 0 19 RETVAL = server->max_connections;
541 0 0 if (items > 1) {
543 0 0 if (new_max == 0) new_max = MAX_READ_BUF;
546 0 0 RETVAL = server->max_read_buf;
556 2 0 if (items > 1) {
558 1 1 if (new_max == 0) new_max = MAX_BODY_LEN;
561 0 2 RETVAL = server->max_body_len;
571 4 3 if (items > 1) {
573 1 3 if (new_max == 0) new_max = MAX_URI_LEN;
576 0 7 RETVAL = server->max_uri_len;
586 7 3 if (items > 1) {
588 1 6 if (SvNV(val) < 0.0)
592 0 9 RETVAL = server->wbuf_low_water;
621 0 0 if (items > 1)
623 0 0 RETVAL = 0;
632 0 3 RETVAL = server->total_requests;
641 1 0 if (items > 1) {
643 0 1 if (n < 0)
648 0 1 RETVAL = server->max_connection_reqs;
665 203 219 for (int i = 0; i < server->n_listeners; i++) {
670 0 203 if (lsnr->epoll_fd >= 0) {
681 156 63 if (server->watchers_initialized && --date_timer_refs <= 0) {
114 42 if (server->watchers_initialized && --date_timer_refs <= 0) {
699 170 1 if (items < 3 || (items - 1) % 2 != 0)
0 170 if (items < 3 || (items - 1) % 2 != 0)
702 410 168 for (i = 1; i < items; i += 2) {
705 167 243 if (strcmp(key, "cert_file") == 0)
707 167 76 else if (strcmp(key, "key_file") == 0)
709 6 70 else if (strcmp(key, "listener") == 0)
711 1 69 else if (strcmp(key, "h2") == 0)
713 67 2 else if (strcmp(key, "sni") == 0)
719 3 165 if (!cert_file) croak("set_tls: cert_file is required");
720 3 162 if (!key_file) croak("set_tls: key_file is required");
722 3 159 if (server->n_listeners == 0)
726 0 159 if (listener_idx < -1)
729 153 6 if (listener_idx < 0)
731 2 157 if (listener_idx >= server->n_listeners)
739 67 90 if (sni_name) {
741 0 67 if (sni_name_len == 0)
743 0 67 if (sni_name_len >= 256)
745 0 67 if (!lsnr->tls_ctx_ref)
747 0 67 if (lsnr->n_sni_entries >= FEER_MAX_SNI_ENTRIES)
753 1 66 if (h2)
759 5 151 if (!new_ctx)
762 66 85 if (sni_name) {
765 724 66 for (i = 0; (size_t)i < name_len; i++)
772 63 3 for (i = 0; i < lsnr->n_sni_entries; i++) {
773 63 0 if (strcmp(lsnr->sni_entries[i].hostname, lower) == 0) {
779 3 63 if (!e) {
790 1 84 if (lsnr->tls_ctx_ref)
808 0 58 RETVAL = 1;
824 0 17 RETVAL = 0;
839 0 140 I_EV_API("Feersum");
140 0 I_EV_API("Feersum");
0 140 I_EV_API("Feersum");
842 0 140 if (env_fl_max) {