|  line  | 
 true  | 
 false  | 
 branch  | 
 
| 
65
 | 
 25  | 
 0  | 
 unless ref $self  | 
 
| 
123
 | 
 0  | 
 0  | 
 $svc_name ? :  | 
 
| 
124
 | 
 0  | 
 0  | 
 unless ($svc)  | 
 
| 
148
 | 
 0  | 
 17  | 
 unless $$self{'primary_res_hdrs'} ||= $primary_res_hdrs  | 
 
| 
151
 | 
 15  | 
 2  | 
 if (defined $urls)  | 
 
| 
156
 | 
 0  | 
 17  | 
 unless $uri =~ m[^http://(.+?)(?::(\d+))?(/.*)?$]  | 
 
| 
163
 | 
 0  | 
 17  | 
 if ($$self{'currently_reproxying'})  | 
 
| 
169
 | 
 0  | 
 17  | 
 unless $$self{'reproxy_uris'}  | 
 
| 
170
 | 
 0  | 
 17  | 
 unless @{[] unless $$self{'reproxy_uris'};}  | 
 
| 
173
 | 
 0  | 
 17  | 
 if ($primary_res_hdrs and my $expected_size = $primary_res_hdrs->header('X-REPROXY-EXPECTED-SIZE'))  | 
 
| 
186
 | 
 1  | 
 1  | 
 if ($$self{'currently_reproxying'}) { }  | 
 
| 
203
 | 
 0  | 
 129  | 
 unless my $backend = $$self{'backend'}  | 
 
| 
213
 | 
 129  | 
 0  | 
 defined $$backend{'service'} ? :  | 
 
| 
228
 | 
 0  | 
 16  | 
 unless (defined $datref)  | 
 
| 
239
 | 
 0  | 
 16  | 
 if (my $range = $$self{'req_headers'}->header('Range'))  | 
 
| 
242
 | 
 0  | 
 16  | 
 if (my $host = $$self{'req_headers'}->header('Host'))  | 
 
| 
246
 | 
 1  | 
 15  | 
 $$self{'req_headers'}->request_method eq 'HEAD' ? :  | 
 
| 
268
 | 
 15  | 
 1  | 
 if $code >= 200 and $code <= 299  | 
 
| 
269
 | 
 0  | 
 1  | 
 if $code == 416  | 
 
| 
274
 | 
 15  | 
 0  | 
 unless defined $$self{'reproxy_expected_size'}  | 
 
| 
278
 | 
 1  | 
 15  | 
 if (&$bad_code() or &$bad_size())  | 
 
| 
286
 | 
 0  | 
 15  | 
 if $$self{'service'}->run_hook('reproxy_response_received', $be)  | 
 
| 
304
 | 
 0  | 
 6  | 
 if $$self{'service'}->run_hook('start_file_reproxy', $self, \$file)  | 
 
| 
307
 | 
 0  | 
 6  | 
 if (my $expected_size = $hd->header('X-REPROXY-EXPECTED-SIZE'))  | 
 
| 
317
 | 
 0  | 
 6  | 
 if $$self{'closed'}  | 
 
| 
321
 | 
 0  | 
 6  | 
 unless ($size)  | 
 
| 
325
 | 
 0  | 
 6  | 
 if (defined $$self{'reproxy_expected_size'} and $$self{'reproxy_expected_size'} != $size)  | 
 
| 
332
 | 
 6  | 
 0  | 
 if (-f _)  | 
 
| 
339
 | 
 0  | 
 6  | 
 if ($status == 416)  | 
 
| 
341
 | 
 0  | 
 0  | 
 $size ? :  | 
 
| 
346
 | 
 0  | 
 6  | 
 if $hd->response_code == 204  | 
 
| 
350
 | 
 6  | 
 0  | 
 if ($status == 200) { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($status == 206) { }  | 
 
| 
368
 | 
 0  | 
 6  | 
 if ($$self{'req_headers'}->request_method eq 'HEAD' or $not_satisfiable)  | 
 
| 
378
 | 
 0  | 
 6  | 
 if ($$self{'closed'})  | 
 
| 
379
 | 
 0  | 
 0  | 
 if $fh  | 
 
| 
384
 | 
 0  | 
 6  | 
 unless ($fh)  | 
 
| 
390
 | 
 0  | 
 6  | 
 if ($status == 206)  | 
 
| 
405
 | 
 127  | 
 152  | 
 unless @_  | 
 
| 
408
 | 
 17  | 
 135  | 
 unless $backend  | 
 
| 
420
 | 
 28  | 
 107  | 
 if ($$self{'unread_data_waiting'})  | 
 
| 
425
 | 
 106  | 
 29  | 
 unless $$self{'bureason'}  | 
 
| 
450
 | 
 130  | 
 0  | 
 unless $$self{'unread_data_waiting'}  | 
 
| 
470
 | 
 21  | 
 121  | 
 unless $self->SUPER::http_response_sent  | 
 
| 
474
 | 
 0  | 
 121  | 
 if (my $be = $$self{'backend'})  | 
 
| 
513
 | 
 0  | 
 135  | 
 if $$self{'backend_requested'}  | 
 
| 
533
 | 
 1  | 
 25  | 
 if $$self{'closed'}  | 
 
| 
539
 | 
 1  | 
 24  | 
 if (my $backend = $$self{'backend'}) { }  | 
 
| 
542
 | 
 1  | 
 0  | 
 $reason ? :  | 
 
| 
556
 | 
 0  | 
 142  | 
 $not_done_reading ? :  | 
 
| 
569
 | 
 1  | 
 0  | 
 if $$self{'bureason'}  | 
 
| 
586
 | 
 0  | 
 6  | 
 if ($$self{'backend_stalled'} and my $backend = $$self{'backend'})  | 
 
| 
603
 | 
 100  | 
 141  | 
 unless ($$self{'req_headers'})  | 
 
| 
605
 | 
 88  | 
 12  | 
 if $self->read_request_headers  | 
 
| 
611
 | 
 4  | 
 137  | 
 unless ($$self{'is_buffering'} or $$self{'read_ahead'} < 32768)  | 
 
| 
619
 | 
 8  | 
 129  | 
 if (my $cus = $$self{'chunked_upload_state'})  | 
 
| 
624
 | 
 0  | 
 8  | 
 if ($$self{'read_ahead'} > 1048576)  | 
 
| 
638
 | 
 89  | 
 40  | 
 if $remain and $remain < $read_size  | 
 
| 
645
 | 
 1  | 
 128  | 
 unless defined $bref  | 
 
| 
650
 | 
 1  | 
 127  | 
 unless ($remain)  | 
 
| 
664
 | 
 0  | 
 127  | 
 unless $len  | 
 
| 
667
 | 
 127  | 
 0  | 
 if $remain  | 
 
| 
674
 | 
 0  | 
 127  | 
 if (my $session = $$self{'upload_session'})  | 
 
| 
678
 | 
 0  | 
 0  | 
 if ($cl and $remain and ($$self{'last_upload_packet'} || 0) != $now)  | 
 
| 
684
 | 
 0  | 
 0  | 
 if ($udp_sock)  | 
 
| 
698
 | 
 0  | 
 127  | 
 if ($$self{'responded'})  | 
 
| 
702
 | 
 0  | 
 0  | 
 if $done_reading  | 
 
| 
715
 | 
 84  | 
 43  | 
 if ($done_reading)  | 
 
| 
716
 | 
 0  | 
 84  | 
 if $$self{'content_length_remain'} < 0  | 
 
| 
724
 | 
 39  | 
 88  | 
 if ($backend)  | 
 
| 
740
 | 
 47  | 
 41  | 
 if $$self{'bureason'}  | 
 
| 
745
 | 
 6  | 
 35  | 
 if not $done_reading and $$self{'read_ahead'} < $$self{'service'}{'buffer_backend_connect'}  | 
 
| 
749
 | 
 2  | 
 33  | 
 if $$self{'service'}{'buffer_uploads'} and $self->decide_to_buffer_to_disk  | 
 
| 
754
 | 
 0  | 
 33  | 
 if $svc->run_hook('proxy_read_request', $self)  | 
 
| 
766
 | 
 0  | 
 143  | 
 unless ($req_hd)  | 
 
| 
775
 | 
 0  | 
 143  | 
 if $svc->run_hook('start_proxy_request', $self)  | 
 
| 
776
 | 
 0  | 
 143  | 
 if $svc->run_hook('start_http_request', $self)  | 
 
| 
778
 | 
 2  | 
 141  | 
 if ($self->handle_chunked_upload) { }  | 
 
| 
788
 | 
 1  | 
 140  | 
 if (defined $length and $length < 0)  | 
 
| 
794
 | 
 85  | 
 55  | 
 if $$self{'content_length_remain'}  | 
 
| 
799
 | 
 0  | 
 142  | 
 if $$svc{'upload_status_listeners'} and $self->handle_upload_tracking  | 
 
| 
807
 | 
 2  | 
 140  | 
 if ($$self{'chunked_upload_state'}) { }  | 
 
| 
 | 
 61  | 
 79  | 
 elsif ($$self{'content_length_remain'} and $$self{'service'}{'buffer_backend_connect'}) { }  | 
 
| 
820
 | 
 6  | 
 73  | 
 if $$svc{'reproxy_cache'} and $self->satisfy_request_from_cache  | 
 
| 
830
 | 
 141  | 
 2  | 
 unless $te and $te eq 'chunked'  | 
 
| 
831
 | 
 0  | 
 2  | 
 unless $$self{'service'}{'buffer_uploads'}  | 
 
| 
836
 | 
 1  | 
 1  | 
 if ($eh and $eh =~ /\b100-continue\b/)  | 
 
| 
852
 | 
 0  | 
 12  | 
 if ($max_size and $$self{'request_body_length'} > $max_size)  | 
 
| 
884
 | 
 23  | 
 7  | 
 unless my $reproxy = $cache->get($key)  | 
 
| 
888
 | 
 1  | 
 6  | 
 if time > $timeout  | 
 
| 
891
 | 
 18  | 
 6  | 
 ref $_ eq 'SCALAR' ? :  | 
 
| 
 | 
 0  | 
 6  | 
 unless $headers  | 
 
| 
893
 | 
 4  | 
 2  | 
 if (my $ims = $req_hd->header('If-Modified-Since'))  | 
 
| 
901
 | 
 4  | 
 0  | 
 if ($ims eq $lm)  | 
 
| 
929
 | 
 0  | 
 0  | 
 unless $req_hd->request_uri =~ /[\?&]client_up_sess=(\w{5,50})\b/  | 
 
| 
935
 | 
 0  | 
 0  | 
 if ($req_hd->request_uri =~ m[^/__upload_status\?])  | 
 
| 
938
 | 
 0  | 
 0  | 
 $status ? :  | 
 
| 
970
 | 
 27  | 
 34  | 
 if ($$self{'service'}{'buffer_uploads'} and $$self{'service'}{'buffer_upload_threshold_size'})  | 
 
| 
972
 | 
 26  | 
 1  | 
 if ($req_hd->content_length >= $$self{'service'}{'buffer_upload_threshold_size'})  | 
 
| 
974
 | 
 2  | 
 24  | 
 if ($ENV{'PERLBAL_DEBUG_BUFFERED_UPLOADS'})  | 
 
| 
987
 | 
 6  | 
 29  | 
 if $$self{'service'}{'buffer_uploads'}  | 
 
| 
996
 | 
 0  | 
 6  | 
 unless $$self{'is_buffering'}  | 
 
| 
997
 | 
 0  | 
 6  | 
 if defined $$self{'bureason'}  | 
 
| 
1009
 | 
 1  | 
 5  | 
 if ($$self{'service'}{'buffer_upload_threshold_rate'} > 0 and $rate < $$self{'service'}{'buffer_upload_threshold_rate'})  | 
 
| 
1016
 | 
 1  | 
 5  | 
 if ($$self{'service'}{'buffer_upload_threshold_time'} > 0 and $etime > $$self{'service'}{'buffer_upload_threshold_time'})  | 
 
| 
1022
 | 
 4  | 
 2  | 
 unless ($reason)  | 
 
| 
1032
 | 
 2  | 
 0  | 
 if ($ENV{'PERLBAL_DEBUG_BUFFERED_UPLOADS'})  | 
 
| 
1044
 | 
 0  | 
 29  | 
 if $$self{'is_writing'}  | 
 
| 
1047
 | 
 2  | 
 27  | 
 if ($$self{'chunked_upload_state'})  | 
 
| 
1052
 | 
 0  | 
 29  | 
 if ($clen != $$self{'buoutpos'})  | 
 
| 
1059
 | 
 28  | 
 1  | 
 if $$self{'bufh'}  | 
 
| 
1068
 | 
 0  | 
 38  | 
 unless $self and $be  | 
 
| 
1073
 | 
 37  | 
 1  | 
 if ($$self{'buoutpos'} < $clen)  | 
 
| 
1075
 | 
 0  | 
 37  | 
 if ($sent < 0)  | 
 
| 
1076
 | 
 0  | 
 0  | 
 if $! == 32  | 
 
| 
1077
 | 
 0  | 
 0  | 
 if $! == 104  | 
 
| 
1085
 | 
 29  | 
 9  | 
 if ($$self{'buoutpos'} >= $clen)  | 
 
| 
1098
 | 
 0  | 
 152  | 
 if $$self{'read_ahead'} >= 1048576  | 
 
| 
1099
 | 
 0  | 
 152  | 
 if $$self{'is_writing'}  | 
 
| 
1100
 | 
 62  | 
 90  | 
 unless $$self{'is_buffering'} and $$self{'read_ahead'}  | 
 
| 
1103
 | 
 29  | 
 61  | 
 unless ($$self{'bufilename'})  | 
 
| 
1115
 | 
 0  | 
 29  | 
 unless ($$self{'bufh'})  | 
 
| 
1133
 | 
 0  | 
 61  | 
 unless ($$self{'bufh'})  | 
 
| 
1145
 | 
 34  | 
 27  | 
 if $$self{'content_length_remain'} or $$self{'chunked_upload_state'}  | 
 
| 
1155
 | 
 0  | 
 61  | 
 unless ($bytes > 0)  | 
 
| 
1166
 | 
 0  | 
 61  | 
 if ($bytes < $len)  | 
 
| 
1173
 | 
 12  | 
 49  | 
 if ($$self{'chunked_upload_state'}) { }  | 
 
| 
 | 
 27  | 
 22  | 
 elsif ($$self{'read_ahead'} <= 0 and $$self{'content_length_remain'} <= 0) { }  | 
 
| 
1175
 | 
 0  | 
 12  | 
 if ($$self{'unread_data_waiting'} and $$self{'read_ahead'} < 1048576)  | 
 
| 
1180
 | 
 0  | 
 12  | 
 if ($$self{'read_ahead'} == 0 and $$self{'chunked_upload_state'}->hit_zero_chunk)  | 
 
| 
1203
 | 
 1  | 
 29  | 
 unless $$self{'bufh'}  | 
 
| 
1213
 | 
 0  | 
 29  | 
 if ($@)  | 
 
| 
1220
 | 
 0  | 
 0  | 
 if ($_[0] != 0 and $!)  | 
 
| 
1227
 | 
 0  | 
 29  | 
 if ($@)  | 
 
| 
1236
 | 
 0  | 
 0  | 
 unless $$svc{'enable_error_retries'}  | 
 
| 
1238
 | 
 0  | 
 0  | 
 if ++$$self{'retry_count'} > @sched  | 
 
| 
1250
 | 
 0  | 
 0  | 
 if ($delay) { }  | 
 
| 
1252
 | 
 0  | 
 0  | 
 if $$self{'closed'}  | 
 
| 
1265
 | 
 0  | 
 0  | 
 if ($$self{'backend'}) { }  | 
 
| 
1269
 | 
 0  | 
 0  | 
 if $$self{'write_buf_size'} > 0  | 
 
| 
1272
 | 
 0  | 
 0  | 
 if $$self{'high_priority'}  | 
 
| 
1273
 | 
 0  | 
 0  | 
 if $$self{'low_priority'}  | 
 
| 
1274
 | 
 0  | 
 0  | 
 if $$self{'responded'}  | 
 
| 
1275
 | 
 0  | 
 0  | 
 if defined $$self{'content_length_remain'}  | 
 
| 
1277
 | 
 0  | 
 0  | 
 if $$self{'currently_reproxying'}  |