Branch Coverage

Feersum.xs
Criterion Covered Total %
branch 187 256 73.0


line true false branch
50 2 216 if (lsnr->server_name)
55 2 216 if (lsnr->server_port)
70 165 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) {
86 52 0 if (!lsnr) {
87 52 0 if (server->n_listeners < FEER_MAX_LISTENERS) {
106 0 217 if (getsockname(fd, (struct sockaddr*)&addr, &addr_len) == -1) {
118 0 217 if (setsockopt(fd, IPPROTO_TCP, TCP_DEFER_ACCEPT, &(int){1}, sizeof(int)) < 0)
134 165 52 if (!server->watchers_initialized) {
149 30 22 } else if (!ev_is_active(&server->ep)) {
156 126 91 if (!ev_is_active(&date_timer)) {
174 17 17 for (i = 0; i < server->n_listeners; i++) {
179 2 15 if (lsnr->epoll_fd >= 0) {
180 0 2 if (unlikely(close(lsnr->epoll_fd) < 0))
190 16 1 if (lsnr->server_name) {
194 16 1 if (lsnr->server_port) {
200 13 4 if (server->watchers_initialized) {
202 13 0 if (--date_timer_refs <= 0) {
214 0 2 if (server->shutting_down) {
219 2 2 for (i = 0; i < server->n_listeners; i++) {
221 1 1 if (!lsnr->paused && ev_is_active(&lsnr->accept_w)) {
1 0 if (!lsnr->paused && ev_is_active(&lsnr->accept_w)) {
228 1 1 if (paused_any)
239 0 2 if (server->shutting_down) {
244 2 2 for (i = 0; i < server->n_listeners; i++) {
246 1 1 if (lsnr->paused) {
253 1 1 if (resumed_any)
265 3 1 for (i = 0; i < server->n_listeners; i++) {
266 2 1 if (!server->listeners[i].paused) { RETVAL = 0; break; }
279 239 0 if (unlikely(!SvOK(cb) || !SvROK(cb)))
0 239 if (unlikely(!SvOK(cb) || !SvROK(cb)))
281 81 158 if (server->request_cb_cv)
295 9 0 if (!IsCodeRef(cb))
0 9 if (!IsCodeRef(cb))
297 1 8 if (unlikely(server->shutting_down))
303 8 8 for (i = 0; i < server->n_listeners; i++) {
308 0 8 if (lsnr->epoll_fd >= 0) {
309 0 0 if (unlikely(close(lsnr->epoll_fd) < 0))
314 0 0 if (lsnr->fd >= 0) {
315 0 0 if (unlikely(close(lsnr->fd) < 0))
322 8 0 if (lsnr->accept_w.fd >= 0) {
323 0 8 if (unlikely(close(lsnr->accept_w.fd) < 0))
335 0 8 while (feer_server_recycle_idle_conn(server))
338 7 1 if (server->active_conns <= 0 && server->shutdown_cb_cv) {
7 0 if (server->active_conns <= 0 && server->shutdown_cb_cv) {
349 6020 2012 if (items > 1) {
351 3 6017 if (!(val > 0.0))
356 7996 33 RETVAL = server->read_timeout;
366 16 3 if (items > 1) {
368 1 15 if (val < 0.0)
373 0 18 RETVAL = server->header_timeout;
383 4 3 if (items > 1) {
385 1 3 if (val < 0.0)
390 0 6 RETVAL = server->write_timeout;
415 0 4 RETVAL = server->use_reverse_proxy;
432 0 0 RETVAL = server->psgix_io;
449 0 4 RETVAL = server->use_proxy_protocol;
473 0 10 RETVAL = server->use_epoll_exclusive ? 1 : 0;
492 6004 12016 : ix == 1 ? &server->write_priority
493 6008 6008 : &server->read_priority;
494 18012 8 if (items > 1) {
496 2 18010 if (new_priority < EV_MINPRI) new_priority = EV_MINPRI;
497 2 18010 if (new_priority > EV_MAXPRI) new_priority = EV_MAXPRI;
501 17991 29 RETVAL = *field;
511 6 8 if (items > 1) {
513 2 4 if (new_max < 1) new_max = 1;
517 0 14 RETVAL = server->max_accept_per_loop;
525 3 8 RETVAL = server->active_conns;
534 12 7 if (items > 1) {
536 0 12 if (new_max < 0) new_max = 0; // 0 means unlimited
540 0 19 RETVAL = server->max_connections;
550 0 0 if (items > 1) {
552 0 0 if (new_max == 0) new_max = MAX_READ_BUF;
555 0 0 RETVAL = server->max_read_buf;
565 2 0 if (items > 1) {
567 1 1 if (new_max == 0) new_max = MAX_BODY_LEN;
570 0 2 RETVAL = server->max_body_len;
580 4 3 if (items > 1) {
582 1 3 if (new_max == 0) new_max = MAX_URI_LEN;
585 0 7 RETVAL = server->max_uri_len;
595 7 3 if (items > 1) {
597 1 6 if (SvNV(val) < 0.0)
601 0 9 RETVAL = server->wbuf_low_water;
630 0 0 if (items > 1)
632 0 0 RETVAL = 0;
641 0 3 RETVAL = server->total_requests;
649 1 0 IV new_max_connection_reqs = 0;
652 1 0 if (items > 1) {
654 0 1 if (new_max_connection_reqs < 0) {
660 0 1 RETVAL = server->max_connection_reqs;
676 158 53 if (server->request_cb_cv)
678 0 211 if (server->shutdown_cb_cv)
680 200 211 for (i = 0; i < server->n_listeners; i++) {
685 0 200 if (lsnr->epoll_fd >= 0) {
690 200 0 if (lsnr->server_name)
692 200 0 if (lsnr->server_port)
698 152 59 if (server->watchers_initialized && --date_timer_refs <= 0) {
113 39 if (server->watchers_initialized && --date_timer_refs <= 0) {
716 105 1 if (items < 3 || (items - 1) % 2 != 0)
0 105 if (items < 3 || (items - 1) % 2 != 0)
719 216 103 for (i = 1; i < items; i += 2) {
722 102 114 if (strcmp(key, "cert_file") == 0)
724 102 12 else if (strcmp(key, "key_file") == 0)
726 6 6 else if (strcmp(key, "listener") == 0)
728 1 5 else if (strcmp(key, "h2") == 0)
730 3 2 else if (strcmp(key, "sni") == 0)
736 3 100 if (!cert_file) croak("set_tls: cert_file is required");
737 3 97 if (!key_file) croak("set_tls: key_file is required");
739 3 94 if (server->n_listeners == 0)
743 0 94 if (listener_idx < -1)
746 88 6 if (listener_idx < 0)
748 2 92 if (listener_idx >= server->n_listeners)
755 3 89 if (sni_name) {
756 0 3 if (!lsnr->tls_ctx_ref)
758 0 3 if (lsnr->n_sni_entries >= FEER_MAX_SNI_ENTRIES)
764 1 2 if (h2)
770 5 86 if (!new_ctx)
773 2 84 if (sni_name) {
777 20 2 for (i = 0; (size_t)i < name_len; i++)
778 0 20 e->hostname[i] = toLOWER(sni_name[i]);
786 1 83 if (lsnr->tls_ctx_ref)
804 0 58 RETVAL = 1;
820 0 16 RETVAL = 0;
835 0 139 I_EV_API("Feersum");
139 0 I_EV_API("Feersum");
0 139 I_EV_API("Feersum");
838 0 139 if (env_fl_max) {