Fabian Keil via curl-library <curl-library@cool.haxx.se> wrote on 2021-03-26:

> Fabian Keil via curl-library <curl-library@cool.haxx.se> wrote on
> 2021-03-26:
> 
> > Daniel Stenberg <dan...@haxx.se> wrote on 2021-03-26:
> > 
> > > On Fri, 26 Mar 2021, Fabian Keil via curl-library wrote:
> > > 
> > > > Apparently the rate limit only kicks in after the request has been
> > > > sent and as a result the (small) response is then received delayed.
> > 
> > > Proposed fix: https://github.com/curl/curl/pull/6797
> > 
> > Thanks for the quick fix.
> 
> Looks like there's a regression.
> 
> If the --limit-rate value is smaller than the CONNECT request
> curl now hangs after the first write until Privoxy's connection
> timeout is triggered:

Thanks for the update pushed to bagder/http-post-speed-limit.

With the commit 9334e4de31a added, one of my tests for Privoxy
reliably triggers a DEBUGASSERT in curl.

fk@t520 ~/git/curl $gdb101 src/curl tests/curl.core 
[...]
Core was generated by `../src/curl --output log/curl6.out --include 
--trace-ascii log/trace6 --trace-ti'.
Program terminated with signal SIGABRT, Aborted.
#0  0x00000008022e014a in thr_kill () from /lib/libc.so.7
(gdb) where
#0  0x00000008022e014a in thr_kill () from /lib/libc.so.7
#1  0x00000008022e0114 in __raise (s=6) at /usr/src/lib/libc/gen/raise.c:52
#2  0x00000008022e0089 in abort () at /usr/src/lib/libc/stdlib/abort.c:65
#3  0x0000000802359961 in __assert (func=<optimized out>, file=<optimized out>, 
line=<optimized out>, failedexpr=<optimized out>) at 
/usr/src/lib/libc/gen/assert.c:51
#4  0x000000000048698c in Curl_buffer_send (in=0x7fffffff57e0, 
data=0x803100808, bytes_written=0x803101bf0, included_body_bytes=35008, 
socketindex=0) at http.c:1271
#5  0x000000000048948b in Curl_http_bodysend (data=0x803100808, 
conn=0x80301dc08, r=0x7fffffff57e0, httpreq=HTTPREQ_POST) at http.c:2659
#6  0x000000000048aab4 in Curl_http (data=0x803100808, done=0x7fffffff591c) at 
http.c:3218
#7  0x000000000043d75d in multi_do (data=0x803100808, done=0x7fffffff591c) at 
multi.c:1393
#8  0x000000000043e775 in multi_runsingle (multi=0x8030e21c8, 
nowp=0x7fffffff5a00, data=0x803100808) at multi.c:1885
#9  0x000000000043f967 in curl_multi_perform (multi=0x8030e21c8, 
running_handles=0x7fffffff5a54) at multi.c:2398
#10 0x000000000042c49e in easy_transfer (multi=0x8030e21c8) at easy.c:606
#11 0x000000000042c694 in easy_perform (data=0x803100808, events=false) at 
easy.c:696
#12 0x000000000042c6d8 in curl_easy_perform (data=0x803100808) at easy.c:715
#13 0x00000000004226ac in serial_transfers (global=0x7fffffff5c00, 
share=0x803054008) at tool_operate.c:2379
#14 0x0000000000422b40 in run_all_transfers (global=0x7fffffff5c00, 
share=0x803054008, result=CURLE_OK) at tool_operate.c:2553
#15 0x0000000000422e8d in operate (global=0x7fffffff5c00, argc=15, 
argv=0x7fffffff5cd0) at tool_operate.c:2669
#16 0x0000000000418bea in main (argc=15, argv=0x7fffffff5cd0) at tool_main.c:277
(gdb) f 4
#4  0x000000000048698c in Curl_buffer_send (in=0x7fffffff57e0, 
data=0x803100808, bytes_written=0x803101bf0, included_body_bytes=35008, 
socketindex=0) at http.c:1271
1271          DEBUGASSERT((size_t)overflow < sendsize);
(gdb) p overflow
$1 = 30912
(gdb) p sendsize
$2 = 16384
(gdb) p *bytes_written
$3 = 118
(gdb) p *in
$4 = {
  bufr = 0x803224088 "POST /6 HTTP/1.1\r\nHost: 127.0.0.1:24984\r\nUser-Agent: 
curl/7.76.0-DEV\r\nAccept: */*\r\nContent-Length: 35008\r\nContent-Type: 
application/x-www-form-urlencoded\r\n\r\nblafaselpaddingpaddingpaddingpaddingpadding"...,
 leng = 35165, allc = 65536, toobig = 1048576, init = 200167898}

The values for overflow, sendsize and *bytes_written seem to
be stable, I tried three times and got the same ones.

The test <command> is:
--limit-rate 4k -d "blafasel%repeat[5000 x padding]%" --insecure 
https://%HOSTIP:%HTTPSPORT/%TESTNUMBER

Fabian

Attachment: pgpjGbT1sleUG.pgp
Description: OpenPGP digital signature

-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html

Reply via email to