Branch Coverage

Feersum.xs
Criterion Covered Total %
branch 171 236 72.4


line true false branch
50 5 187 if (lsnr->server_name)
55 5 187 if (lsnr->server_port)
70 144 47 if (server->n_listeners == 0) {
77 134 47 for (j = 0; j < server->n_listeners; j++) {
78 0 134 if (server->listeners[j].fd == -1) {
81 0 0 if (lsnr->tls_ctx_ref) {
89 47 0 if (!lsnr) {
90 47 0 if (server->n_listeners < FEER_MAX_LISTENERS) {
109 0 191 if (getsockname(fd, (struct sockaddr*)&addr, &addr_len) == -1) {
121 0 191 if (setsockopt(fd, IPPROTO_TCP, TCP_DEFER_ACCEPT, &(int){1}, sizeof(int)) < 0)
139 144 47 if (!server->watchers_initialized) {
154 25 22 } else if (!ev_is_active(&server->ep)) {
161 109 82 if (!ev_is_active(&date_timer)) {
179 14 14 for (i = 0; i < server->n_listeners; i++) {
184 2 12 if (lsnr->epoll_fd >= 0) {
185 0 2 if (unlikely(close(lsnr->epoll_fd) < 0))
194 10 4 if (server->watchers_initialized) {
196 10 0 if (--date_timer_refs <= 0) {
208 0 2 if (server->shutting_down) {
213 2 2 for (i = 0; i < server->n_listeners; i++) {
215 1 1 if (!lsnr->paused && ev_is_active(&lsnr->accept_w)) {
1 0 if (!lsnr->paused && ev_is_active(&lsnr->accept_w)) {
222 1 1 if (paused_any)
233 0 2 if (server->shutting_down) {
238 2 2 for (i = 0; i < server->n_listeners; i++) {
240 1 1 if (lsnr->paused) {
247 1 1 if (resumed_any)
259 3 1 for (i = 0; i < server->n_listeners; i++) {
260 2 1 if (!server->listeners[i].paused) { RETVAL = 0; break; }
273 210 0 if (unlikely(!SvOK(cb) || !SvROK(cb)))
0 210 if (unlikely(!SvOK(cb) || !SvROK(cb)))
275 72 138 if (server->request_cb_cv)
289 7 0 if (!IsCodeRef(cb))
0 7 if (!IsCodeRef(cb))
291 1 6 if (unlikely(server->shutting_down))
297 6 6 for (i = 0; i < server->n_listeners; i++) {
302 0 6 if (lsnr->epoll_fd >= 0) {
303 0 0 if (unlikely(close(lsnr->epoll_fd) < 0))
308 0 0 if (lsnr->fd >= 0) {
309 0 0 if (unlikely(close(lsnr->fd) < 0))
316 6 0 if (lsnr->accept_w.fd >= 0) {
317 0 6 if (unlikely(close(lsnr->accept_w.fd) < 0))
326 0 6 while (feer_server_recycle_idle_conn(server))
329 5 1 if (server->active_conns <= 0 && server->shutdown_cb_cv) {
5 0 if (server->active_conns <= 0 && server->shutdown_cb_cv) {
340 6018 2012 if (items > 1) {
342 3 6015 if (!(val > 0.0))
347 7996 31 RETVAL = server->read_timeout;
357 16 3 if (items > 1) {
359 1 15 if (val < 0.0)
364 0 18 RETVAL = server->header_timeout;
374 3 3 if (items > 1) {
376 1 2 if (val < 0.0)
381 0 5 RETVAL = server->write_timeout;
406 0 4 RETVAL = server->use_reverse_proxy;
423 0 0 RETVAL = server->psgix_io;
440 0 4 RETVAL = server->use_proxy_protocol;
464 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 17991 29 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 11 7 if (items > 1) {
527 0 11 if (new_max < 0) new_max = 0; // 0 means unlimited
531 0 18 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;
600 0 3 RETVAL = server->total_requests;
608 1 0 IV new_max_connection_reqs = 0;
611 1 0 if (items > 1) {
613 0 1 if (new_max_connection_reqs < 0) {
619 0 1 RETVAL = server->max_connection_reqs;
635 138 46 if (server->request_cb_cv)
637 0 184 if (server->shutdown_cb_cv)
639 177 184 for (i = 0; i < server->n_listeners; i++) {
644 0 177 if (lsnr->epoll_fd >= 0) {
649 177 0 if (lsnr->server_name)
651 177 0 if (lsnr->server_port)
654 67 110 if (lsnr->tls_ctx_ref) {
660 134 50 if (server->watchers_initialized && --date_timer_refs <= 0) {
99 35 if (server->watchers_initialized && --date_timer_refs <= 0) {
677 86 1 if (items < 3 || (items - 1) % 2 != 0)
0 86 if (items < 3 || (items - 1) % 2 != 0)
680 174 84 for (i = 1; i < items; i += 2) {
683 83 91 if (strcmp(key, "cert_file") == 0)
685 83 8 else if (strcmp(key, "key_file") == 0)
687 6 2 else if (strcmp(key, "listener") == 0)
689 0 2 else if (strcmp(key, "h2") == 0)
695 3 81 if (!cert_file) croak("set_tls: cert_file is required");
696 3 78 if (!key_file) croak("set_tls: key_file is required");
698 3 75 if (server->n_listeners == 0)
702 0 75 if (listener_idx < -1)
705 69 6 if (listener_idx < 0)
707 2 73 if (listener_idx >= server->n_listeners)
714 5 68 if (!new_ctx)
716 1 67 if (lsnr->tls_ctx_ref)
733 0 49 RETVAL = 1;
749 0 14 RETVAL = 0;
761 0 122 I_EV_API("Feersum");
122 0 I_EV_API("Feersum");
0 122 I_EV_API("Feersum");
764 0 122 if (env_fl_max) {