Branch Coverage

lib/Plack/Handler/Gazelle.xs
Criterion Covered Total %
branch 132 292 45.2


line true false branch
143 0 0 if (100 <= code && code <= 199) {
146 0 0 else if (200 <= code && code <= 299) {
149 0 0 else if (300 <= code && code <= 399) {
152 0 0 else if (400 <= code && code <= 499) {
165 86 39 for (i = 0; i != len; ++i, ++s)
76 39 for (i = 0; i != len; ++i, ++s)
166 84 2 if (*s == ch)
74 2 if (*s == ch)
176 2 196 if (header->name_len != len)
178 26 2 for (x = header->name, y = name; len != 0; --len, ++x, ++y)
179 20 6 if (TOU(*x) != *y)
26 0 if (TOU(*x) != *y)
194 41 0 (void)SvUPGRADE(dst, SVt_PV);
195 41 0 d = SvGROW(dst, src_len * 3 + 1);
41 0 d = SvGROW(dst, src_len * 3 + 1);
197 66 39 for (i = 0; i < src_len; i++ ) {
198 4 62 if ( src[i] == '%' ) {
199 4 0 if ( !isxdigit(src[i+1]) || !isxdigit(src[i+2]) ) {
2 2 if ( !isxdigit(src[i+1]) || !isxdigit(src[i+2]) ) {
204 0 2 s2 -= s2 <= '9' ? '0'
0 0 s2 -= s2 <= '9' ? '0'
207 0 2 s3 -= s3 <= '9' ? '0'
0 0 s3 -= s3 <= '9' ? '0'
251 1 41 if (ret < 0)
253 0 41 if (minor_version > 1 || minor_version < 0 ) {
268 2 39 if ( store_path_info(aTHX_ env, path, question_at) < 0 ) {
273 2 37 if (question_at != path_len) ++question_at;
277 69 38 for (i = 0; i < num_headers; ++i) {
278 67 2 if (headers[i].name != NULL) {
282 66 1 if (header_is(headers + i, "CONTENT-TYPE", sizeof("CONTENT-TYPE") - 1)) {
285 1 65 } else if (header_is(headers + i, "CONTENT-LENGTH", sizeof("CONTENT-LENGTH") - 1)) {
286 0 1 if (seen_content_length) {
293 0 1 if (seen_transfer_encoding) {
302 0 65 } else if (header_is(headers + i, "TRANSFER-ENCODING", sizeof("TRANSFER-ENCODING") - 1)) {
303 0 0 if (seen_transfer_encoding ) {
310 0 0 if (seen_content_length) {
324 1 64 if (sizeof(tmp) - 5 < headers[i].name_len) {
331 1453 64 n != 0;
333 1423 30 *d = *s == '-' ? '_' : TOU(*s);
1330 93 *d = *s == '-' ? '_' : TOU(*s);
339 0 66 if ( !slot ) croak("ERROR: failed to create hash entry");
340 2 64 if (SvOK(*slot)) {
361 115 0 if (SvGAMAGIC(sv))
0 115 if (SvGAMAGIC(sv))
0 0 if (SvGAMAGIC(sv))
0 0 if (SvGAMAGIC(sv))
393 0 38 if ( do_select == 1) goto WAIT_WRITE;
396 38 0 if ( rv >= 0 ) {
399 0 0 if ( rv < 0 && errno != EINTR && errno != EAGAIN && errno != EWOULDBLOCK ) {
0 0 if ( rv < 0 && errno != EINTR && errno != EAGAIN && errno != EWOULDBLOCK ) {
407 0 0 if ( nfound == 1 ) {
410 0 0 if ( nfound == 0 && errno != EINTR ) {
0 0 if ( nfound == 0 && errno != EINTR ) {
426 46 0 rv = read(fileno, read_buf, read_len);
427 46 0 if ( rv >= 0 ) {
430 0 0 if ( rv < 0 && errno != EINTR && errno != EAGAIN && errno != EWOULDBLOCK ) {
0 0 if ( rv < 0 && errno != EINTR && errno != EAGAIN && errno != EWOULDBLOCK ) {
436 0 0 if ( nfound == 1 ) {
439 0 0 if ( nfound == 0 && errno != EINTR ) {
0 0 if ( nfound == 0 && errno != EINTR ) {
454 0 0 if ( rv >= 0 ) {
457 0 0 if ( rv < 0 && errno != EINTR && errno != EAGAIN && errno != EWOULDBLOCK ) {
0 0 if ( rv < 0 && errno != EINTR && errno != EAGAIN && errno != EWOULDBLOCK ) {
465 0 0 if ( nfound == 1 ) {
468 0 0 if ( nfound == 0 && errno != EINTR ) {
0 0 if ( nfound == 0 && errno != EINTR ) {
480 74 37 for ( i=0; i
8 1 for ( i=0; i
111 37 for ( i=0; i
111 37 for ( i=0; i
495 335 223 } while( dlen >= *dst_len );
540 29 29 while ( l > 0 ) {
548 29 29 while ( len > 0 ) {
641 13480 46 if (fd < 0) {
647 4 42 if ( rv <= 0 ) {
654 42 0 if ( tcp == 1 ) {
669 4 38 if ( reqlen >= 0 ) {
672 4 0 else if ( reqlen == -1 ) {
677 0 0 if ( MAX_HEADER_SIZE - buf_len == 0 ) {
687 0 0 if ( rv <= 0 ) {
696 0 38 if (expect_val != NULL) {
697 0 0 if ( strncmp(SvPV_nolen(*expect_val), "100-continue", SvCUR(*expect_val)) == 0 ) {
699 0 0 if ( rv <= 0 ) {
734 0 0 if (!SvROK(rbuf)) croak("ERROR: buf must be RV");
736 0 0 if (!SvOK(buf)) {
739 0 0 SvUPGRADE(buf, SVt_PV);
745 0 0 d = SvGROW(buf, buf_len + len + 1);
0 0 d = SvGROW(buf, buf_len + len + 1);
747 0 0 SvCUR_set(buf, (rv > 0) ? rv + buf_len : buf_len);
750 0 0 if (rv < 0) XSRETURN_UNDEF;
751 0 0 RETVAL = (unsigned long)rv;
766 0 0 SvUPGRADE(buf, SVt_PV);
769 0 0 if (rv < 0) XSRETURN_UNDEF;
770 0 0 RETVAL = (unsigned long)rv;
791 0 0 if ( !SvOK(buf) ) {
795 0 0 SvUPGRADE(buf, SVt_PV);
798 0 0 if ( buf_len == 0 ){
815 0 0 while ( remain > 0 ) {
818 0 0 if ( rv <= 0 ) {
824 0 0 while ( rv > 0 ) {
825 0 0 if ( (unsigned int)rv >= v[vec_offset].iov_len ) {
839 0 0 if (rv < 0) XSRETURN_UNDEF;
840 0 0 RETVAL = (unsigned long)written;
856 0 0 if ( !SvOK(buf) ) {
860 0 0 SvUPGRADE(buf, SVt_PV);
863 0 0 if ( buf_len == 0 ) {
868 0 0 while ( buf_len > written ) {
870 0 0 if ( rv <= 0 ) {
875 0 0 if (rv < 0) XSRETURN_UNDEF;
876 0 0 RETVAL = (unsigned long)written;
906 1 0 STRLEN val_len = 0;
908 0 1 if( (av_len(headers)+1) % 2 == 1 ) croak("ERROR: Odd number of element in header");
935 2 1 while (i < av_len(headers) + 1 ) {
962 1 1 while ( remain > 0 ) {
965 0 1 if ( rv <= 0 ) {
971 10 1 while ( rv > 0 ) {
972 10 0 if ( (unsigned int)rv >= iv[vec_offset].iov_len ) {
986 0 1 if (rv < 0) XSRETURN_UNDEF;
987 0 1 RETVAL = (unsigned long) written;
1017 37 0 STRLEN key_len = 0;
1027 0 37 if( (av_len(headers)+1) % 2 == 1 ) croak("ERROR: Odd number of element in header");
1032 37 0 if ( status_code < 200 || status_code == 204 || status_code == 304 ) {
37 0 if ( status_code < 200 || status_code == 204 || status_code == 304 ) {
1036 29 8 if ( use_chunked > 0 ) {
1074 37 37 while ( i < av_len(headers) + 1 ) {
1078 0 37 if ( strncasecmp(key,"Connection",key_len) == 0 ) {
1086 0 37 if ( strncasecmp(key,"Date",key_len) == 0 ) {
1088 0 0 for ( s=val, n = val_len, d=date_line+sizeof("Date: ")-1; n !=0; s++, --n, d++) {
1097 0 37 } else if ( strncasecmp(key,"Server",key_len) == 0 ) {
1099 0 0 for ( s=val, n = val_len, d=server_line+sizeof("Server: ")-1; n !=0; s++, --n, d++) {
1107 37 0 } else if ( strncasecmp(key,"Content-Length",key_len) == 0 || strncasecmp(key,"Transfer-Encoding",key_len) == 0) {
0 37 } else if ( strncasecmp(key,"Content-Length",key_len) == 0 || strncasecmp(key,"Transfer-Encoding",key_len) == 0) {
1126 37 0 if ( date_pushed == 0 ) {
1131 29 8 if ( use_chunked > 0 ) {
1142 37 37 for (i=0; i < av_len(body) + 1; i++ ) {
1144 0 37 if (!SvOK(*b)) {
1148 0 37 if ( val_len < 1 ) {
1151 29 8 if ( use_chunked ) {
1160 29 8 if ( use_chunked ) {
1167 29 8 if ( use_chunked && ix == 0 ) {
1176 37 37 while ( remain > 0 ) {
1179 0 37 if ( rv <= 0 ) {
1185 449 37 while ( rv > 0 ) {
1186 449 0 if ( (unsigned int)rv >= v[vec_offset].iov_len ) {
1201 0 37 if (rv < 0) XSRETURN_UNDEF;
1202 13 24 RETVAL = (unsigned long) written;