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.

Reply via email to