<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 12px; "><p>All,</p><p>I'm hoping that someone can assist with this. </p><p>I'm using Stunnel on 2 different systems: Mac and FC 13 to front-end my web server for a custom database system. It works flawlessly except for uploading large binary files.<br></p><p>The problem comes when trying to upload say a 2.5MB image file. The number of bytes actually transferred to the exec program is usually under 1K or right at about 33K. Using Firefox on Windows works all the time. I can observe the transfer by watching the stunnel.log file. When the data is piped into the openSSL engine, the number of bytes written to socket is being picked up by the exec program and processed so the loss is between the browser and the output side of Stunnel. <br></p><p>The message itself is a multi-part message that is not mime-encoded. The part with the image is set in the boundary properly and contains the JPEG binary. (Thanks to HTTPwatch!) <br></p><p>My Stunnel Version is: <br></p><p>[root@linux log]# stunnel -version <br>stunnel 4.33 on i386-redhat-linux-gnu with OpenSSL 1.0.0a-fips 1 Jun <br>2010 <br>Threading:PTHREAD SSL:ENGINE Sockets:POLL,IPv6 Auth:LIBWRAP <br></p><p>Global options <br>debug           = daemon.notice <br>pid             = /var/run/stunnel.pid <br>RNDbytes        = 64 <br>RNDfile         = /dev/urandom <br>RNDoverwrite    = yes <br></p><p>Service-level options <br>cert            = /etc/stunnel/stunnel.pem <br>ciphers         = ALL:!aNULL:!eNULL:!SSLv2 <br>session         = 300 seconds <br>stack           = 65536 bytes <br>sslVersion      = SSLv3 for client, all for server <br>TIMEOUTbusy     = 300 seconds <br>TIMEOUTclose    = 60 seconds <br>TIMEOUTconnect  = 10 seconds <br>TIMEOUTidle     = 43200 seconds <br>verify          = none <br></p><p>My configuration file on the Linux box is: <br></p><p>cert = /etc/stunnel/server.crt <br>key = /etc/stunnel/server.key <br>debug = 7 <br>output = /var/log/stunnel.log <br>;socket = l:SO_LINGER=1:60 <br>;socket = r:TCP_NODELAY=1 <br>client = no <br>sslVersion = SSLv3 <br>[https] <br>libwrap = no <br>accept = 443 <br>exec = /usr/qmsys/bin/qm <br>execargs = /usr/qmsys/bin/qm -b7 -quiet -aPAVUK "P.HTTP" <br>options = DONT_INSERT_EMPTY_FRAGMENTS <br>TIMEOUTidle = 30 <br>TIMEOUTbusy = 5 <br>TIMEOUTclose = 0 <br></p><p>*** A RANDOM SUCCESSFUL TRANSFER *** <br>2010.10.15 10:03:12 LOG7[946:3078133552]: Service https accepted FD=0 from 24.171.161.99:1998 <br>2010.10.15 10:03:12 LOG7[946:3078241136]: Service https started <br>2010.10.15 10:03:12 LOG7[946:3078241136]: FD=0 in non-blocking mode <br>2010.10.15 10:03:12 LOG5[946:3078241136]: Service https accepted connection from 24.171.161.99:1998 <br>2010.10.15 10:03:12 LOG7[946:3078241136]: SSL state (accept): before accept initialization <br>2010.10.15 10:03:12 LOG7[946:3078241136]: SSL state (accept): SSLv3  read client hello A <br>2010.10.15 10:03:12 LOG7[946:3078241136]: SSL state (accept): SSLv3 write server hello A <br>2010.10.15 10:03:12 LOG7[946:3078241136]: SSL state (accept): SSLv3 write change cipher spec A <br>2010.10.15 10:03:12 LOG7[946:3078241136]: SSL state (accept): SSLv3 write finished A <br>2010.10.15 10:03:12 LOG7[946:3078241136]: SSL state (accept): SSLv3 flush data <br>2010.10.15 10:03:12 LOG7[946:3078241136]: SSL state (accept): SSLv3 read finished A <br>2010.10.15 10:03:12 LOG7[946:3078241136]:    8 items in the session cache <br>2010.10.15 10:03:12 LOG7[946:3078241136]:    0 client connects (SSL_connect()) <br>2010.10.15 10:03:12 LOG7[946:3078241136]:    0 client connects that finished <br>2010.10.15 10:03:12 LOG7[946:3078241136]:    0 client renegotiations requested <br>2010.10.15 10:03:12 LOG7[946:3078241136]:   35 server connects (SSL_accept()) <br>2010.10.15 10:03:12 LOG7[946:3078241136]:   35 server connects that finished <br>2010.10.15 10:03:12 LOG7[946:3078241136]:    0 server renegotiations requested <br>2010.10.15 10:03:12 LOG7[946:3078241136]:   27 session cache hits </p><p>2010.10.15 10:03:12 LOG7[946:3078241136]:    0 external session cache hits <br>2010.10.15 10:03:12 LOG7[946:3078241136]:    0 session cache misses <br>2010.10.15 10:03:12 LOG7[946:3078241136]:    0 session cache timeouts <br>2010.10.15 10:03:12 LOG6[946:3078241136]: SSL accepted: previous session reused <br>2010.10.15 10:03:12 LOG6[946:3078241136]: Local mode child started (PID=1179) <br>2010.10.15 10:03:12 LOG7[946:3078241136]: Remote FD=13 initialized <br>2010.10.15 10:03:13 LOG7[946:3078241136]: Socket closed on read <br>2010.10.15 10:03:13 LOG7[946:3078241136]: SSL write shutdown <br>2010.10.15 10:03:13 LOG7[946:3078241136]: SSL alert (write): warning: close notify <br>2010.10.15 10:03:13 LOG6[946:3078241136]: SSL_shutdown successfully sent close_notify <br>2010.10.15 10:03:13 LOG6[946:3078241136]: s_poll_wait timeout: connection close <br>2010.10.15 10:03:13 LOG5[946:3078241136]: Connection closed: 2895 bytes sent to SSL, 2469539 bytes sent to socket <br>2010.10.15 10:03:13 LOG7[946:3078241136]: Service https finished (0 left) <br>2010.10.15 10:03:13 LOG7[946:3078133552]: Cleaning up the signal pipe <br>2010.10.15 10:03:13 LOG6[946:3078133552]: Child process 1179 finished with code 0 <br>2010.10.15 10:03:13 LOG7[946:3078133552]: Signal pipe is empty <br></p><p>*** MOST OF THE TIME - AN UNSUCCESSFUL TRANSFER *** <br></p><p>2010.10.15 10:05:01 LOG7[946:3078133552]: Service https accepted FD=0 from 24.171.161.99:1985 <br>2010.10.15 10:05:01 LOG7[946:3077921648]: Service https started <br>2010.10.15 10:05:01 LOG7[946:3077921648]: FD=0 in non-blocking mode <br>2010.10.15 10:05:01 LOG5[946:3077921648]: Service https accepted connection from 24.171.161.99:1985 <br>2010.10.15 10:05:01 LOG7[946:3077921648]: SSL state (accept): before/ accept initialization <br>2010.10.15 10:05:01 LOG7[946:3077921648]: SSL state (accept): SSLv3 read client hello A <br>2010.10.15 10:05:01 LOG7[946:3077921648]: SSL state (accept): SSLv3 write server hello A <br>2010.10.15 10:05:01 LOG7[946:3077921648]: SSL state (accept): SSLv3 write change cipher spec A <br>2010.10.15 10:05:01 LOG7[946:3077921648]: SSL state (accept): SSLv3 write finished A <br>2010.10.15 10:05:01 LOG7[946:3077921648]: SSL state (accept): SSLv3 flush data <br>2010.10.15 10:05:01 LOG7[946:3077921648]: SSL state (accept): SSLv3 read finished A <br>2010.10.15 10:05:01 LOG7[946:3077921648]:    9 items in the session cache <br>2010.10.15 10:05:01 LOG7[946:3077921648]:    0 client connects (SSL_connect()) <br>2010.10.15 10:05:01 LOG7[946:3077921648]:    0 client connects that finished <br>2010.10.15 10:05:01 LOG7[946:3077921648]:    0 client renegotiations requested <br>2010.10.15 10:05:01 LOG7[946:3077921648]:   44 server connects (SSL_accept()) <br>2010.10.15 10:05:01 LOG7[946:3077921648]:   44 server connects that finished <br>2010.10.15 10:05:01 LOG7[946:3077921648]:    0 server renegotiations requested <br>2010.10.15 10:05:01 LOG7[946:3077921648]:   35 session cache hits <br>2010.10.15 10:05:01 LOG7[946:3077921648]:    0 external session cache hits <br>2010.10.15 10:05:01 LOG7[946:3077921648]:    0 session cache misses <br>2010.10.15 10:05:01 LOG7[946:3077921648]:    0 session cache timeouts <br>2010.10.15 10:05:01 LOG6[946:3077921648]: SSL accepted: previous session reused <br>2010.10.15 10:05:01 LOG6[946:3077921648]: Local mode child started (PID=1213) <br>2010.10.15 10:05:01 LOG7[946:3077921648]: Remote FD=13 initialized <br>2010.10.15 10:05:04 LOG7[946:3077921648]: Socket closed on read <br>2010.10.15 10:05:04 LOG7[946:3077921648]: SSL write shutdown <br>2010.10.15 10:05:04 LOG7[946:3077921648]: SSL alert (write): warning: close notify <br>2010.10.15 10:05:04 LOG6[946:3077921648]: SSL_shutdown successfully sent close_notify <br>2010.10.15 10:05:04 LOG6[946:3077921648]: s_poll_wait timeout: connection close <br>2010.10.15 10:05:04 LOG5[946:3077921648]: Connection closed: 2895 bytes sent to SSL, 66703 bytes sent to socket <br>2010.10.15 10:05:04 LOG7[946:3077921648]: Service https finished (0 left) <br>2010.10.15 10:05:04 LOG7[946:3078133552]: Cleaning up the signal pipe <br>2010.10.15 10:05:04 LOG6[946:3078133552]: Child process 1213 finished with code 0 <br>2010.10.15 10:05:04 LOG7[946:3078133552]: Signal pipe is empty <br></p><p>*** <br></p><p>All test  cases are the same upload of the same image file. In all tests the number of bytes sent to socket matches what the exec program is receiving in its pipe.<br></p><p>My feeling is that there is a connection issue between the browser and Stunnel. The successful upload of the test occurs sometimes with all browsers and appears to always work with Firefox for Windows. It has a 90% failure rate on Safari for Windows, Safari for Mac, Opera for Windows, Opera for Mac, etc.</p><div><br></div><div>In all cases of testing, the number of bytes "sent to socket" is received by my exec program and consists of a truncated message from the browser. It appears that the data is simply being truncated somewhere in the Stunnel process.</div><p><br></p><p>Any help is always appreciated!  If there are more tests to be run to track down the problem, please advise and I will run them.</p><div>Regards,</div><div><br></div><div>Bill</div><div><br></div></span><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><span class="Apple-style-span" style="font-size: 12px; "><div>Bill Crowell, President</div><div>Pavuk Technologies, LLC</div><div>PO Box 33097</div><div>Charlotte, NC 28233-3097</div><div>Office   +1 704.248.0024 </div><div>Mobile +1 704.607.6077</div><div>Skype  <a href="http://pavuk.com">pavuk.com</a></div></span></div></div></span></div></span></span></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></span><br class="Apple-interchange-newline">
</div>
<br></body></html>