Branch Coverage

Feersum.xs
Criterion Covered Total %
branch 179 248 72.1


line true false branch
67 168 52 if (server->n_listeners == 0) {
72 142 52 for (int j = 0; j < server->n_listeners; j++) {
73 0 142 if (server->listeners[j].fd == -1) {
81 52 0 if (!lsnr) {
82 52 0 if (server->n_listeners < FEER_MAX_LISTENERS) {
100 0 220 if (getsockname(fd, (struct sockaddr*)&addr, &addr_len) == -1) {
112 0 220 if (setsockopt(fd, IPPROTO_TCP, TCP_DEFER_ACCEPT, &(int){1}, sizeof(int)) < 0)
128 168 52 if (!server->watchers_initialized) {
143 30 22 } else if (!ev_is_active(&server->ep)) {
150 127 93 if (!ev_is_active(&date_timer)) {
167 17 17 for (int i = 0; i < server->n_listeners; i++) {
172 2 15 if (lsnr->epoll_fd >= 0) {
173 0 2 if (unlikely(close(lsnr->epoll_fd) < 0))
189 13 4 if (server->watchers_initialized) {
191 13 0 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 242 0 if (unlikely(!SvOK(cb) || !SvROK(cb)))
0 242 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 0 RETVAL = server->psgix_io;
439 0 4 RETVAL = server->use_proxy_protocol;
463 0 10 RETVAL = server->use_epoll_exclusive ? 1 : 0;
482 6004 12016 : ix == 1 ? &server->write_priority
483 6008 6008 : &server->read_priority;
484 18012 8 if (items > 1) {
486 2 18010 if (new_priority < EV_MINPRI) new_priority = EV_MINPRI;
487 2 18010 if (new_priority > EV_MAXPRI) new_priority = EV_MAXPRI;
491 17992 28 RETVAL = *field;
501 6 8 if (items > 1) {
503 2 4 if (new_max < 1) new_max = 1;
507 0 14 RETVAL = server->max_accept_per_loop;
515 3 8 RETVAL = server->active_conns;
524 12 7 if (items > 1) {
526 0 12 if (new_max < 0) new_max = 0; // 0 means unlimited
530 0 19 RETVAL = server->max_connections;
540 0 0 if (items > 1) {
542 0 0 if (new_max == 0) new_max = MAX_READ_BUF;
545 0 0 RETVAL = server->max_read_buf;
555 2 0 if (items > 1) {
557 1 1 if (new_max == 0) new_max = MAX_BODY_LEN;
560 0 2 RETVAL = server->max_body_len;
570 4 3 if (items > 1) {
572 1 3 if (new_max == 0) new_max = MAX_URI_LEN;
575 0 7 RETVAL = server->max_uri_len;
585 7 3 if (items > 1) {
587 1 6 if (SvNV(val) < 0.0)
591 0 9 RETVAL = server->wbuf_low_water;
620 0 0 if (items > 1)
622 0 0 RETVAL = 0;
631 0 3 RETVAL = server->total_requests;
640 1 0 if (items > 1) {
642 0 1 if (n < 0)
647 0 1 RETVAL = server->max_connection_reqs;
664 203 214 for (int i = 0; i < server->n_listeners; i++) {
669 0 203 if (lsnr->epoll_fd >= 0) {
680 155 59 if (server->watchers_initialized && --date_timer_refs <= 0) {
114 41 if (server->watchers_initialized && --date_timer_refs <= 0) {
698 170 1 if (items < 3 || (items - 1) % 2 != 0)
0 170 if (items < 3 || (items - 1) % 2 != 0)
701 410 168 for (i = 1; i < items; i += 2) {
704 167 243 if (strcmp(key, "cert_file") == 0)
706 167 76 else if (strcmp(key, "key_file") == 0)
708 6 70 else if (strcmp(key, "listener") == 0)
710 1 69 else if (strcmp(key, "h2") == 0)
712 67 2 else if (strcmp(key, "sni") == 0)
718 3 165 if (!cert_file) croak("set_tls: cert_file is required");
719 3 162 if (!key_file) croak("set_tls: key_file is required");
721 3 159 if (server->n_listeners == 0)
725 0 159 if (listener_idx < -1)
728 153 6 if (listener_idx < 0)
730 2 157 if (listener_idx >= server->n_listeners)
738 67 90 if (sni_name) {
740 0 67 if (sni_name_len == 0)
742 0 67 if (sni_name_len >= 256)
744 0 67 if (!lsnr->tls_ctx_ref)
746 0 67 if (lsnr->n_sni_entries >= FEER_MAX_SNI_ENTRIES)
752 1 66 if (h2)
758 5 151 if (!new_ctx)
761 66 85 if (sni_name) {
764 724 66 for (i = 0; (size_t)i < name_len; i++)
771 63 3 for (i = 0; i < lsnr->n_sni_entries; i++) {
772 63 0 if (strcmp(lsnr->sni_entries[i].hostname, lower) == 0) {
778 3 63 if (!e) {
789 1 84 if (lsnr->tls_ctx_ref)
807 0 58 RETVAL = 1;
823 0 16 RETVAL = 0;
838 0 140 I_EV_API("Feersum");
140 0 I_EV_API("Feersum");
0 140 I_EV_API("Feersum");
841 0 140 if (env_fl_max) {