From: Gustaf N. <ne...@wu...> - 2015-03-11 10:15:45
|
Hi David, yes, exactlty. It is strange that this did not show up earlier, but since we use naviserver on most sites with openacs, this was not an issue, since ns_return or "ns_writer submitfile" don't reach the nested corking cases as in fastpath + ssl. In sites without ssl, this bug does not show up at all. we should develop test cases for nsssl. Anyhow, we will do some more testing and we should publish a bugfix release soon... if nothing more shows up, maybe this weekend. many thanks for your help! -g Am 10.03.15 um 11:43 schrieb David Osborne: > Could this be the problem? Sees to alleviate the symptoms for me > certainly.. > > diff -r 096278955dc1 nsd/sockfile.c > --- a/nsd/sockfile.c Wed Mar 04 04:29:31 2015 +0100 > +++ b/nsd/sockfile.c Tue Mar 10 10:42:44 2015 +0000 > @@ -386,7 +386,7 @@ > int > Ns_SockCork(Ns_Sock *sock, int cork) > { > - int success = 1; > + int success = 0; > #ifdef TCP_CORK > Sock *sockPtr = (Sock *)sock; > > > > On 9 March 2015 at 16:24, David Osborne <da...@qc... > <mailto:da...@qc...>> wrote: > > Hi again, > > We're getting some Error messages when we're browsing fastpath > pages running tip via https. > Not sure of this is anything to actually to worry about since > there doesn't seem to be any side-effect except for the frequent > error messages in the log. > > *[09/Mar/2015:15:59:06][17560.7fffedf37700][-conn:default:4-] > Error: socket: trying to uncork an uncorked socket 10* > > It appears pretty much every time we click on a link. > > * > * > *Test case: > * > > Building with the tip versions of naviserver and nsssl (but with > the configure.ac <http://configure.ac> change to CCRFLAG/LDRFLAG > we discussed) > > Add the following to the end of the default > /usr/local/ns/conf/nsd-config.tcl: > > ns_section ns/server/default/module/nsssl > ns_param certificate /usr/local/ns/modules/nsssl/server.pem > ns_param address 0.0.0.0 > ns_param port 443 > ns_param ciphers > "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!RC4 > " > ns_param protocols "!SSLv2" > ns_param verify 0 > > ns_param extraheaders { > Strict-Transport-Security "max-age=31536000; includeSubDomains" > X-Frame-Options SAMEORIGIN > X-Content-Type-Options nosniff > } > > List nsssl.so in the module list > > ns_section "ns/server/default/modules" > ns_param nscp nscp.so > ns_param nssock nssock.so > ns_param nslog nslog.so > ns_param nscgi nscgi.so > ns_param nsdb nsdb.so > ns_param nsssl nsssl.so > > Do the following to generate a self-signed cert: > > openssl genrsa 1024 > host.key > openssl req -new -x509 -nodes -sha1 -days 365 -key host.key > host.cert > cat host.cert host.key > server.pem > rm -rf host.cert host.key > openssl dhparam 2048 >> server.pem > > > > Run: > /usr/local/ns/bin/nsd -c -u root -t /usr/local/ns/conf/nsd-config.tcl > > Browsing to https://servername/doc/index.html then clicking on one > of the command names (eg. to take us > https://servername/doc/naviserver/files/ns_adp_break.html) will > cause the error. > > > I tried to catch this in gdb by setting a breakpoint on Ns_Log > with severity Error: > > ... > [09/Mar/2015:15:49:37][17543.7fffef22d700][-sched-] Notice: sched: > starting > [Switching to Thread 0x7fffedf37700 (LWP 17554)] > > Breakpoint 3, Ns_Log (severity=severity@entry=2, > fmt=fmt@entry=0x7ffff7bbabe0 "socket: trying to uncork an uncorked > socket %d") > at log.c:481 > 481 { > (gdb) bt > #0 Ns_Log (severity=severity@entry=2, > fmt=fmt@entry=0x7ffff7bbabe0 "socket: trying to uncork an uncorked > socket %d") > at log.c:481 > #1 0x00007ffff7b91516 in Ns_SockCork > (sock=sock@entry=0x7ffff001c9a0, cork=cork@entry=0) at sockfile.c:405 > #2 0x00007ffff7b9166a in SendFd (sock=sock@entry=0x7ffff001c9a0, > fd=11, offset=10165, length=length@entry=10165, > timeoutPtr=timeoutPtr@entry=0x7fffedf36110, flags=flags@entry=0, > sendProc=sendProc@entry=0x7fffee798b70 <Send>) > at sockfile.c:481 > #3 0x00007ffff7b913e9 in NsSockSendFileBufsIndirect > (sock=0x7ffff001c9a0, bufs=<optimized out>, nbufs=<optimized out>, > timeoutPtr=timeoutPtr@entry=0x7fffedf36110, flags=0, > sendProc=0x7fffee798b70 <Send>) at sockfile.c:309 > #4 0x00007ffff7b75fc7 in NsDriverSendFile (sockPtr=<optimized > out>, bufs=bufs@entry=0x7fffedf363a0, nbufs=nbufs@entry=1, > flags=flags@entry=0) at driver.c:1133 > #5 0x00007ffff7b72ea9 in Ns_ConnSendFileVec > (conn=conn@entry=0x66ecb0, bufs=bufs@entry=0x7fffedf363a0, nbufs=1) > at connio.c:525 > #6 0x00007ffff7b8be86 in ReturnRange (conn=conn@entry=0x66ecb0, > type=type@entry=0x627c90 "text/html", fd=fd@entry=11, > data=data@entry=0x0, len=len@entry=10165) at return.c:988 > #7 0x00007ffff7b8bc64 in ReturnOpen (conn=conn@entry=0x66ecb0, > status=status@entry=200, type=type@entry=0x627c90 "text/html", > chan=chan@entry=0x0, fp=fp@entry=0x0, fd=fd@entry=11, len=10165) > at return.c:881 > #8 0x00007ffff7b8bbe5 in Ns_ConnReturnOpenFd > (conn=conn@entry=0x66ecb0, status=status@entry=200, > type=type@entry=0x627c90 "text/html", fd=fd@entry=11, > len=<optimized out>) at return.c:854 > #9 0x00007ffff7b7c7fd in FastReturn (conn=conn@entry=0x66ecb0, > status=status@entry=200, type=0x627c90 "text/html", > type@entry=0x0, file=0x7fffedf36b00 > "/usr/local/ns/pages/doc/naviserver/files/ns_adp_ctl.html") at > fastpath.c:570 > #10 0x00007ffff7b7c4c3 in Ns_FastPathProc (UNUSED_arg=<optimized > out>, conn=0x66ecb0) at fastpath.c:244 > #11 0x00007ffff7b85059 in Ns_ConnRunRequest > (conn=conn@entry=0x66ecb0) at op.c:293 > #12 0x00007ffff7b89283 in ConnRun (connPtr=0x66ecb0, > argPtr=0x16c6a70) at queue.c:1513 > #13 NsConnThread (arg=0x16c6a70) at queue.c:1229 > #14 0x00007ffff74ea77c in NsThreadMain (arg=<optimized out>) at > thread.c:227 > #15 0x00007ffff74eb6c9 in ThreadMain (arg=<optimized out>) at > pthread.c:809 > #16 0x00007ffff64ed0a4 in start_thread () from > /lib/x86_64-linux-gnu/libpthread.so.0 > #17 0x00007ffff69ebccd in clone () at > ../sysdeps/unix/sysv/linux/x86_64/clone.S:111 > (gdb) frame 0 > #0 Ns_Log (severity=severity@entry=2, > fmt=fmt@entry=0x7ffff7bbabe0 "socket: trying to uncork an uncorked > socket %d") > at log.c:481 > 481 { > (gdb) frame 1 > #1 0x00007ffff7b91516 in Ns_SockCork > (sock=sock@entry=0x7ffff001c9a0, cork=cork@entry=0) at sockfile.c:405 > 405 Ns_Log(Error, "socket: trying to uncork an uncorked socket %d", > (gdb) print *sock > $1 = {driver = 0x654c50, sock = 10, sa = {sin_family = 2, sin_port > = 46046, sin_addr = {s_addr = 191146176}, > sin_zero = "\000\000\000\000\000\000\000"}, arg = 0x7ffff006f510} > |