Branch Coverage

Feersum.xs
Criterion Covered Total %
branch 181 248 72.9


line true false branch
65 173 51 if (server->n_listeners == 0) {
70 141 51 for (int j = 0; j < server->n_listeners; j++) {
71 0 141 if (server->listeners[j].fd == -1) {
79 51 0 if (!lsnr) {
80 51 0 if (server->n_listeners < FEER_MAX_LISTENERS) {
98 0 224 if (getsockname(fd, (struct sockaddr*)&addr, &addr_len) == -1) {
110 0 224 if (setsockopt(fd, IPPROTO_TCP, TCP_DEFER_ACCEPT, &(int){1}, sizeof(int)) < 0)
126 173 51 if (!server->watchers_initialized) {
141 29 22 } else if (!ev_is_active(&server->ep)) {
148 128 96 if (!ev_is_active(&date_timer)) {
165 20 20 for (int i = 0; i < server->n_listeners; i++) {
170 2 18 if (lsnr->epoll_fd >= 0) {
171 0 2 if (unlikely(close(lsnr->epoll_fd) < 0))
187 16 4 if (server->watchers_initialized) {
189 13 3 if (--date_timer_refs <= 0) {
200 0 2 if (server->shutting_down) {
205 2 2 for (int i = 0; i < server->n_listeners; i++) {
207 1 1 if (!(lsnr->pause_flags & FEER_PAUSE_USER)) {
209 1 0 if (ev_is_active(&lsnr->accept_w))
215 1 1 if (paused_any)
225 0 2 if (server->shutting_down) {
230 2 2 for (int i = 0; i < server->n_listeners; i++) {
232 1 1 if (lsnr->pause_flags & FEER_PAUSE_USER) {
236 1 0 if (!lsnr->pause_flags && lsnr->fd >= 0)
1 0 if (!lsnr->pause_flags && lsnr->fd >= 0)
241 1 1 if (resumed_any)
252 3 1 for (int i = 0; i < server->n_listeners; i++) {
253 2 1 if (!(server->listeners[i].pause_flags & FEER_PAUSE_USER)) {
268 246 0 if (unlikely(!SvOK(cb) || !SvROK(cb)))
0 246 if (unlikely(!SvOK(cb) || !SvROK(cb)))
282 9 0 if (!IsCodeRef(cb))
0 9 if (!IsCodeRef(cb))
284 1 8 if (unlikely(server->shutting_down))
290 8 8 for (int i = 0; i < server->n_listeners; i++) {
295 0 8 if (lsnr->epoll_fd >= 0) {
296 0 0 if (unlikely(close(lsnr->epoll_fd) < 0))
301 0 0 if (lsnr->fd >= 0) {
302 0 0 if (unlikely(close(lsnr->fd) < 0))
309 8 0 if (lsnr->accept_w.fd >= 0) {
310 0 8 if (unlikely(close(lsnr->accept_w.fd) < 0))
323 0 8 while (feer_server_recycle_idle_conn(server))
326 7 1 if (server->active_conns <= 0 && server->shutdown_cb_cv) {
7 0 if (server->active_conns <= 0 && server->shutdown_cb_cv) {
337 6020 2012 if (items > 1) {
339 3 6017 if (!(val > 0.0))
344 7996 33 RETVAL = server->read_timeout;
354 16 3 if (items > 1) {
356 1 15 if (val < 0.0)
361 0 18 RETVAL = server->header_timeout;
371 4 3 if (items > 1) {
373 1 3 if (val < 0.0)
378 0 6 RETVAL = server->write_timeout;
403 0 4 RETVAL = server->use_reverse_proxy;
420 0 2 RETVAL = server->psgix_io;
437 0 4 RETVAL = server->use_proxy_protocol;
461 0 10 RETVAL = server->use_epoll_exclusive ? 1 : 0;
481 6004 12016 : ix == 1 ? &server->write_priority
482 6008 6008 : &server->read_priority;
483 18012 8 if (items > 1) {
485 2 18010 if (new_priority < EV_MINPRI) new_priority = EV_MINPRI;
486 2 18010 if (new_priority > EV_MAXPRI) new_priority = EV_MAXPRI;
490 17992 28 RETVAL = *field;
500 6 8 if (items > 1) {
502 2 4 if (new_max < 1) new_max = 1;
506 0 14 RETVAL = server->max_accept_per_loop;
514 3 8 RETVAL = server->active_conns;
523 12 7 if (items > 1) {
525 0 12 if (new_max < 0) new_max = 0; // 0 means unlimited
529 0 19 RETVAL = server->max_connections;
539 0 0 if (items > 1) {
541 0 0 if (new_max == 0) new_max = MAX_READ_BUF;
544 0 0 RETVAL = server->max_read_buf;
554 2 0 if (items > 1) {
556 1 1 if (new_max == 0) new_max = MAX_BODY_LEN;
559 0 2 RETVAL = server->max_body_len;
569 4 3 if (items > 1) {
571 1 3 if (new_max == 0) new_max = MAX_URI_LEN;
574 0 7 RETVAL = server->max_uri_len;
584 7 3 if (items > 1) {
586 1 6 if (SvNV(val) < 0.0)
590 0 9 RETVAL = server->wbuf_low_water;
619 0 0 if (items > 1)
621 0 0 RETVAL = 0;
630 0 3 RETVAL = server->total_requests;
639 1 0 if (items > 1) {
641 0 1 if (n < 0)
646 0 1 RETVAL = server->max_connection_reqs;
663 204 220 for (int i = 0; i < server->n_listeners; i++) {
668 0 204 if (lsnr->epoll_fd >= 0) {
679 157 63 if (server->watchers_initialized && --date_timer_refs <= 0) {
115 42 if (server->watchers_initialized && --date_timer_refs <= 0) {
697 171 1 if (items < 3 || (items - 1) % 2 != 0)
0 171 if (items < 3 || (items - 1) % 2 != 0)
700 412 169 for (i = 1; i < items; i += 2) {
703 168 244 if (strcmp(key, "cert_file") == 0)
705 168 76 else if (strcmp(key, "key_file") == 0)
707 6 70 else if (strcmp(key, "listener") == 0)
709 1 69 else if (strcmp(key, "h2") == 0)
711 67 2 else if (strcmp(key, "sni") == 0)
717 3 166 if (!cert_file) croak("set_tls: cert_file is required");
718 3 163 if (!key_file) croak("set_tls: key_file is required");
720 3 160 if (server->n_listeners == 0)
724 0 160 if (listener_idx < -1)
727 154 6 if (listener_idx < 0)
729 2 158 if (listener_idx >= server->n_listeners)
737 67 91 if (sni_name) {
739 0 67 if (sni_name_len == 0)
741 0 67 if (sni_name_len >= 256)
743 0 67 if (!lsnr->tls_ctx_ref)
745 0 67 if (lsnr->n_sni_entries >= FEER_MAX_SNI_ENTRIES)
751 1 66 if (h2)
757 5 152 if (!new_ctx)
760 66 86 if (sni_name) {
763 724 66 for (i = 0; (size_t)i < name_len; i++)
770 63 3 for (i = 0; i < lsnr->n_sni_entries; i++) {
771 63 0 if (strcmp(lsnr->sni_entries[i].hostname, lower) == 0) {
777 3 63 if (!e) {
788 1 85 if (lsnr->tls_ctx_ref)
806 0 59 RETVAL = 1;
822 0 17 RETVAL = 0;
837 0 141 I_EV_API("Feersum");
141 0 I_EV_API("Feersum");
0 141 I_EV_API("Feersum");
840 0 141 if (env_fl_max) {