From: David O. <da...@qc...> - 2017-02-24 17:21:23
|
(In asnwer to the previous question, yes this is debian 8.7 with openssl 1.0.1t) On 24 February 2017 at 06:24, Gustaf Neumann <ne...@wu...> wrote: > There are reports that SSL writes with large content cause problems. > I've uploaded a version of revproxy that avoids memory bloats on huge > files and that chunks POST data. > Thanks, that's working great for me. Have tested it with large POST data, binary data, UTF-8 data and all gets handled perfectly. Only issue I've come across is testing the behaviour when the proxy can't connect to the backend. I'm getting a segfault for every request in that case. Not making much progress debugging since I don't understand socket programming well enough, but it looks like the code doesn't pickup on the ssl connection error (error:00000000:lib(0):func(0):reason(0)) which is reported in the interpreter (gdb) bt #0 0x00007ffff4a0cf10 in Send (sock=0x7fffb800dd80, bufs=0x7fffd77fc950, nbufs=4, UNUSED_timeoutPtr=<optimized out>, UNUSED_flags=<optimized out>) at nsssl.c:584 #1 0x00007ffff7b5239d in DriverSend (interp=0x7fffc8008f70, connChanPtr=0x7fffc80bf740, bufs=0x7fffd77fc950, nbufs=4, flags=0, timeoutPtr=0x7fffd77fc850, flags=0) at connchan.c:628 #2 0x00007ffff7b515c2 in ConnChanOpenObjCmd (clientData=0x7fffc804f750, interp=0x7fffc8008f70, objc=0, objv=0x7fffc80bf7b8) at connchan.c:856 #3 0x00007ffff7b86714 in Ns_SubcmdObjv (subcmdSpec=0x7fffd77fcae0, clientData=0x7fffdc0570b0, interp=0x7fffc8008f70, objc=11, objv=0x7fffc80171b8) at tclobjv.c:1506 #4 0x00007ffff7b522e5 in NsTclConnChanObjCmd (clientData=<optimized out>, interp=<optimized out>, objc=<optimized out>, objv=<optimized out>) at connchan.c:1304 #5 0x00007ffff71bce59 in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #6 0x00007ffff720395e in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #7 0x00007ffff7246ce9 in TclObjInterpProcCore () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #8 0x00007ffff71bce59 in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #9 0x00007ffff720395e in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #10 0x00007ffff7202897 in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #11 0x00007ffff71be6e6 in TclEvalObjEx () from /usr/lib/x86_64-linux-gnu/ libtcl8.5.so #12 0x00007ffff71c5690 in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #13 0x00007ffff71bce59 in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #14 0x00007ffff71bd312 in Tcl_EvalObjv () from /usr/lib/x86_64-linux-gnu/ libtcl8.5.so #15 0x00007ffff71be9a2 in TclEvalObjEx () from /usr/lib/x86_64-linux-gnu/ libtcl8.5.so #16 0x00007ffff724642f in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #17 0x00007ffff71bce59 in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #18 0x00007ffff720395e in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #19 0x00007ffff7246ce9 in TclObjInterpProcCore () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #20 0x00007ffff71bce59 in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #21 0x00007ffff720395e in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #22 0x00007ffff7246ce9 in TclObjInterpProcCore () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #23 0x00007ffff71bce59 in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #24 0x00007ffff71bdb29 in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.5.so #25 0x00007ffff71bd473 in Tcl_EvalEx () from /usr/lib/x86_64-linux-gnu/ libtcl8.5.so #26 0x00007ffff7b87918 in NsTclFilterProc (arg=0x871820, conn=0x6a4e30, why=NS_FILTER_PRE_AUTH) at tclrequest.c:537 #27 0x00007ffff7b5d89f in NsRunFilters (conn=conn@entry=0x6a4e30, why=why@entry=NS_FILTER_PRE_AUTH) at filter.c:161 #28 0x00007ffff7b6ace4 in ConnRun (connPtr=0x6a4e30, UNUSED_argPtr=0x6b3340) at queue.c:1998 #29 NsConnThread (arg=0x6b3340) at queue.c:1714 #30 0x00007ffff74ba86d in NsThreadMain (arg=<optimized out>) at thread.c:232 #31 0x00007ffff74bb8a9 in ThreadMain (arg=<optimized out>) at pthread.c:830 #32 0x00007ffff5e520a4 in start_thread (arg=0x7fffd77fe700) at pthread_create.c:309 #33 0x00007ffff635362d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111 (gdb) frame 4 #4 0x00007ffff7b522e5 in NsTclConnChanObjCmd (clientData=<optimized out>, interp=<optimized out>, objc=<optimized out>, objv=<optimized out>) at connchan.c:1304 1304 return Ns_SubcmdObjv(subcmds, clientData, interp, objc, objv); (gdb) frame 2 #2 0x00007ffff7b515c2 in ConnChanOpenObjCmd (clientData=0x7fffc804f750, interp=0x7fffc8008f70, objc=0, objv=0x7fffc80bf7b8) at connchan.c:856 856 nSent = DriverSend(interp, connChanPtr, buf, 4, 0u, &connChanPtr->sendTimeout); (gdb) print interp $18 = (Tcl_Interp *) 0x7fffc8008f70 (gdb) print *interp $19 = { result = 0x7fffc8009148 "ssl connect failed: error:00000000:lib(0):func(0):reason(0)", freeProc = 0x0, errorLine = 1 } |