@@ -221,29 +221,30 @@ func dialContext(network string) func(ctx context.Context, network, addr string)
221221func visit (url * url.URL ) {
222222 req := newRequest (httpMethod , url , postBody )
223223
224- var t0 , t1 , t2 , t3 , t4 , t5 , t6 time.Time
224+ var tStart , tDNSStart , tDNSEnd , tConnectStart , tConnectEnd , tTLSStart , tTLSEnd , tConnected , tTTBF , tDone time.Time
225225
226226 trace := & httptrace.ClientTrace {
227- DNSStart : func (_ httptrace.DNSStartInfo ) { t0 = time .Now () },
228- DNSDone : func (_ httptrace.DNSDoneInfo ) { t1 = time .Now () },
227+ GetConn : func (_ string ) { tStart = time .Now () },
228+ DNSStart : func (_ httptrace.DNSStartInfo ) { tDNSStart = time .Now () },
229+ DNSDone : func (_ httptrace.DNSDoneInfo ) { tDNSEnd = time .Now () },
229230 ConnectStart : func (_ , _ string ) {
230- if t1 .IsZero () {
231+ if tConnectStart .IsZero () {
231232 // connecting to IP
232- t1 = time .Now ()
233+ tConnectStart = time .Now ()
233234 }
234235 },
235236 ConnectDone : func (net , addr string , err error ) {
236237 if err != nil {
237238 log .Fatalf ("unable to connect to host %v: %v" , addr , err )
238239 }
239- t2 = time .Now ()
240+ tConnectEnd = time .Now ()
240241
241242 printf ("\n %s%s\n " , color .GreenString ("Connected to " ), color .CyanString (addr ))
242243 },
243- GotConn : func (_ httptrace. GotConnInfo ) { t3 = time .Now () },
244- GotFirstResponseByte : func () { t4 = time .Now () },
245- TLSHandshakeStart : func () { t5 = time .Now () },
246- TLSHandshakeDone : func (_ tls. ConnectionState , _ error ) { t6 = time .Now () },
244+ TLSHandshakeStart : func () { tTLSStart = time .Now () },
245+ TLSHandshakeDone : func (_ tls. ConnectionState , _ error ) { tTLSEnd = time .Now () },
246+ GotConn : func (_ httptrace. GotConnInfo ) { tConnected = time .Now () },
247+ GotFirstResponseByte : func () { tTTBF = time .Now () },
247248 }
248249 req = req .WithContext (httptrace .WithClientTrace (context .Background (), trace ))
249250
@@ -300,10 +301,18 @@ func visit(url *url.URL) {
300301 bodyMsg := readResponseBody (req , resp )
301302 resp .Body .Close ()
302303
303- t7 := time .Now () // after read body
304- if t0 .IsZero () {
305- // we skipped DNS
306- t0 = t1
304+ tDone = time .Now () // after read body
305+ if tDNSStart .IsZero () {
306+ tDNSStart = tStart
307+ tDNSEnd = tStart
308+ }
309+ if tConnectStart .IsZero () {
310+ tConnectStart = tStart
311+ tConnectEnd = tStart
312+ }
313+ if tTLSStart .IsZero () {
314+ tTLSStart = tStart
315+ tTLSEnd = tStart
307316 }
308317
309318 // print status line and headers
@@ -341,27 +350,27 @@ func visit(url *url.URL) {
341350 switch url .Scheme {
342351 case "https" :
343352 printf (colorize (HTTPSTemplate ),
344- fmta (t1 .Sub (t0 )), // dns lookup
345- fmta (t2 .Sub (t1 )), // tcp connection
346- fmta (t6 .Sub (t5 )), // tls handshake
347- fmta (t4 .Sub (t3 )), // server processing
348- fmta (t7 .Sub (t4 )), // content transfer
349- fmtb (t1 .Sub (t0 )), // namelookup
350- fmtb (t2 .Sub (t0 )), // connect
351- fmtb (t3 .Sub (t0 )), // pretransfer
352- fmtb (t4 .Sub (t0 )), // starttransfer
353- fmtb (t7 .Sub (t0 )), // total
353+ fmta (tDNSEnd .Sub (tDNSStart )), // dns lookup
354+ fmta (tConnectEnd .Sub (tConnectStart )), // tcp connection
355+ fmta (tTLSEnd .Sub (tTLSStart )), // tls handshake
356+ fmta (tTTBF .Sub (tConnected )), // server processing
357+ fmta (tDone .Sub (tTTBF )), // content transfer
358+ fmtb (tDNSEnd .Sub (tStart )), // namelookup
359+ fmtb (tConnectEnd .Sub (tStart )), // connect
360+ fmtb (tConnected .Sub (tStart )), // pretransfer
361+ fmtb (tTTBF .Sub (tStart )), // starttransfer
362+ fmtb (tDone .Sub (tStart )), // total
354363 )
355364 case "http" :
356365 printf (colorize (HTTPTemplate ),
357- fmta (t1 .Sub (t0 )), // dns lookup
358- fmta (t3 .Sub (t1 )), // tcp connection
359- fmta (t4 .Sub (t3 )), // server processing
360- fmta (t7 .Sub (t4 )), // content transfer
361- fmtb (t1 .Sub (t0 )), // namelookup
362- fmtb (t3 .Sub (t0 )), // connect
363- fmtb (t4 .Sub (t0 )), // starttransfer
364- fmtb (t7 .Sub (t0 )), // total
366+ fmta (tDNSEnd .Sub (tDNSStart )), // dns lookup
367+ fmta (tConnectEnd .Sub (tConnectStart )), // tcp connection
368+ fmta (tTTBF .Sub (tConnected )), // server processing
369+ fmta (tDone .Sub (tTTBF )), // content transfer
370+ fmtb (tDNSEnd .Sub (tStart )), // namelookup
371+ fmtb (tConnectEnd .Sub (tStart )), // connect
372+ fmtb (tTTBF .Sub (tStart )), // starttransfer
373+ fmtb (tDone .Sub (tStart )), // total
365374 )
366375 }
367376
0 commit comments