That’s what I was trying to point out. Your design is not correct. The Body is a Reader, not a Buffer - the length of the request/body may be indeterminate - that is, a stream. Attempting to get the length of an underlying buffer is not only probably not possible, but not correct in many situations.
There is a reason the Body is a ReaderCloser and not a buffer. It is part of the http specification. > On Feb 5, 2019, at 9:00 PM, Burak Serdar <bser...@ieee.org> wrote: > > On Tue, Feb 5, 2019 at 7:00 PM Robert Engels <reng...@ix.netcom.com > <mailto:reng...@ix.netcom.com>> wrote: >> >> Shouldn’t you just be taking the content length from the header if >> forwarding the same body. There is no need for the length of the body. > > True. What I was suggesting is a fix for the general case. > >> >>> On Feb 5, 2019, at 6:53 PM, Burak Serdar <bser...@ieee.org> wrote: >>> >>>> On Tue, Feb 5, 2019 at 5:18 PM Dan Kortschak <d...@kortschak.io> wrote: >>>> >>>> Personally, I think this is a bug in the behaviour of NewRequest. See h >>>> ttps://github.com/golang/go/issues/18117 for some additional context. >>> >>> Agreed. One solution could be to have: >>> >>> type HasLen interface { >>> int Len() >>> } >>> >>> Then have NopCloser return a nopCloser with len if the underlying >>> implementation has len, with the obvious changes to NewRequest.Ugly, >>> but can be done without API changes. >>> >>> >>> >>>> >>>>> On Tue, 2019-02-05 at 05:18 -0800, matteo.biage...@gmail.com wrote: >>>>> I've the following situation: >>>>> I proxy a request to another server and when I made a POST and create >>>>> a new >>>>> request, the contentLength is zero: >>>>> >>>>> req2, _ := http.NewRequest(req.Method, newApiUrl , req.Body) >>>>> fmt.Println("New request from body:", req2.ContentLength) // >>>>> print 0 >>>>> >>>>> Checking in the source code of the NewRequest func Body don't respect >>>>> some >>>>> interface and populate the ContentLength field. >>>>> >>>>> Could be a bug? Which could be a valid approach in order to create a >>>>> new >>>>> request from an existing one and correct set the Body length? >>>>> >>>>> A working example here: >>>>> >>>>> https://play.golang.org/p/SvCDLj0NrXb >>>>> >>>>> Thanks! >>>>> >>>> >>>> -- >>>> 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. >>>> For more options, visit https://groups.google.com/d/optout. >>> >>> -- >>> 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. >>> For more options, visit https://groups.google.com/d/optout. >> >> -- >> 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 >> <mailto:golang-nuts+unsubscr...@googlegroups.com>. >> For more options, visit https://groups.google.com/d/optout >> <https://groups.google.com/d/optout>. > > -- > 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 > <mailto:golang-nuts+unsubscr...@googlegroups.com>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- 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. For more options, visit https://groups.google.com/d/optout.