File tree Expand file tree Collapse file tree 2 files changed +21
-2
lines changed Expand file tree Collapse file tree 2 files changed +21
-2
lines changed Original file line number Diff line number Diff line change @@ -1253,11 +1253,18 @@ func (r *Request) TraceInfo() TraceInfo {
12531253
12541254 // Calculate the total time accordingly,
12551255 // when connection is reused
1256+ var requestStartTime time.Time
12561257 if ct .gotConnInfo .Reused {
1257- ti . TotalTime = ct .endTime . Sub ( ct . getConn )
1258+ requestStartTime = ct .getConn
12581259 } else {
1259- ti . TotalTime = ct .endTime . Sub ( ct . dnsStart )
1260+ requestStartTime = ct .dnsStart
12601261 }
1262+ // DNS start and get conn time may be zero if the request is invalid.
1263+ // See issue #1016.
1264+ if requestStartTime .IsZero () {
1265+ requestStartTime = r .Time
1266+ }
1267+ ti .TotalTime = ct .endTime .Sub (requestStartTime )
12611268
12621269 // Only calculate on successful connections
12631270 if ! 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+
18331845 t .Run ("enable trace and debug on request" , func (t * testing.T ) {
18341846 c , logBuf := dcldb ()
18351847 c .SetBaseURL (ts .URL )
You can’t perform that action at this time.
0 commit comments