File tree Expand file tree Collapse file tree 2 files changed +21
-6
lines changed Expand file tree Collapse file tree 2 files changed +21
-6
lines changed Original file line number Diff line number Diff line change @@ -1251,13 +1251,16 @@ func (r *Request) TraceInfo() TraceInfo {
12511251RequestAttempt : r .Attempt ,
12521252}
12531253
1254- // Calculate the total time accordingly,
1255- // when connection is reused
1256- if ct .gotConnInfo .Reused {
1257- ti .TotalTime = ct .endTime .Sub (ct .getConn )
1258- } else {
1259- ti .TotalTime = ct .endTime .Sub (ct .dnsStart )
1254+ // Calculate the total time accordingly when connection is reused,
1255+ // and DNS start and get conn time may be zero if the request is invalid.
1256+ // See issue #1016.
1257+ requestStartTime := r .Time
1258+ if ct .gotConnInfo .Reused && ! ct .getConn .IsZero () {
1259+ requestStartTime = ct .getConn
1260+ } else if ! ct .dnsStart .IsZero () {
1261+ requestStartTime = ct .dnsStart
12601262}
1263+ ti .TotalTime = ct .endTime .Sub (requestStartTime )
12611264
12621265// Only calculate on successful connections
12631266if ! ct .connectDone .IsZero () {
Original file line number Diff line number Diff line change @@ -1830,6 +1830,18 @@ func TestTraceInfo(t *testing.T) {
18301830
18311831})
18321832
1833+ t .Run ("enable trace on invalid request, issue #1016" , func (t * testing.T ) {
1834+ resp , err := client .R ().EnableTrace ().Get ("unknown://url.com" )
1835+ assertNotNil (t , err )
1836+ tr := resp .Request .TraceInfo ()
1837+ assertEqual (t , true , tr .DNSLookup == 0 )
1838+ assertEqual (t , true , tr .ConnTime == 0 )
1839+ assertEqual (t , true , tr .TLSHandshake == 0 )
1840+ assertEqual (t , true , tr .ServerTime == 0 )
1841+ assertEqual (t , true , tr .ResponseTime == 0 )
1842+ assertEqual (t , true , tr .TotalTime > 0 && tr .TotalTime < time .Second )
1843+ })
1844+
18331845t .Run ("enable trace and debug on request" , func (t * testing.T ) {
18341846c , logBuf := dcldb ()
18351847c .SetBaseURL (ts .URL )
You can’t perform that action at this time.
0 commit comments