@@ -811,12 +811,15 @@
811 811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
812 812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
813 813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
814 814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Read cleartext bytes that have been received from the client and
815 815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** decrypted by the SSL server codec.
816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the expected payload size unknown, i.e. if the HTTP Content-Length: header
817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** field has not been parsed, the noLoop argument should be 1, or SSL_read() may
818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** block and wait for more data than is eventually going to arrive (on Windows).
816 819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- size_t ssl_read_server(void *pServerArg, char *zBuf, size_t nBuf){
820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size_t ssl_read_server(void *pServerArg, char *zBuf, size_t nBuf, int noLoop){
818 821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n;
819 822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
size_t rc = 0;
820 823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SslServerConn *pServer = (SslServerConn*)pServerArg;
821 824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nBuf>0x7fffffff ){ fossil_fatal("SSL read too big"); }
822 825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
else if( BIO_eof(pServer->bio) ) return 0;
@@ -824,18 +827,12 @@
824 827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = SSL_read(pServer->ssl, zBuf + rc, (int)(nBuf - rc));
825 828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( n<=0 ){
826 829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
827 830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if(n>0){
828 831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc += n;
829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef _WIN32
831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Windows (XP and 10 tested with openssl 1.1.1m and 3.0.1) does
832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** not require reading in a loop, returning all data in a single
833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** call. If we read in a loop on Windows, SSL reads fail. Details:
834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** https://fossil-scm.org/forum/forumpost/2f818850abb72719 */
835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( noLoop ) break;
833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
837 834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
838 835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
839 836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
840 837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
841 838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
842 839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!