Hi Ryan,

You can get it via httptrace (https://blog.golang.org/http-tracing)

Example:
  req, _ := http.NewRequest("GET", "http://example.com";, nil)
  trace := &httptrace.ClientTrace{
              GotConn: func(connInfo httptrace.GotConnInfo) {
                              fmt.Printf("Got Conn: %s\n", 
connInfo.Conn.LocalAddr().String()) <------------------------- This has the 
local outgoing port
              },
   }
  req = req.WithContext(httptrace.WithClientTrace(req.Context(), trace))
  if _, err := http.DefaultTransport.RoundTrip(req); err != nil {
             log.Fatal(err)
  }


On Wednesday, October 7, 2020 at 9:09:54 AM UTC-7 ryan...@gmail.com wrote:

> Is it possible to capture the outgoing port for a given HTTP request?
>
> I'm using a knockoff of ab that I wrote in go to send repeated requests to 
> a given web service. Sometimes we get an error and I want to look at a 
> packet trace of it. The problem is it's really hard to find one failed 
> request in 1,000 in a tcp dump. If I can see the source port, that would 
> help me narrow it down.
>
> The code I'm doing is effectively this (forgive any typos, this is a quick 
> & dirty recopy, not a cut & paste):
>
> tlsConfig := &tls.Config{
>     InsecureSkipVerify: true,
> }
>
> transport := &http.Transport{
>     DisableKeepAlives: true,
>     TLSClientCOnfig: tlsCOnfig,
>     ResponseHeaderTimeout: time.Duration(headerTimeout) * time.Second,
> }
>
> client := &http.Client{
>     Timeout: time.Duration(timeOut) * time.second,
>     Transport: transport,
> }
>
> response, err :=client.Get(*targetURL)    // How can I capture the 
> outgoing port from this?
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/ae1b90e8-8562-47d1-92c8-801551f7a257n%40googlegroups.com.

Reply via email to