Matthew Donald scripsit: > Sockets (SSL or otherwise) are layer-3 objects while content is a layer-7 > object. To get an accurate end-of-content marker, you'll need to parse the > output, buts since you are using the https protocol, that's going to be easy. > Essentially, parse out the "Content-Length" header and read that many bytes > past the end of the http headers.
True, except that in various circumstances the "Content-Length" header may be absent (e.g. special Transfer-Encoding, or a chunked response). For the full story see http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4 Regards Chris Gray > On 11 January 2014 19:46, M. V. <bored_to_deat...@yahoo.com> wrote: >> Hi everybody, >> I'm writing an application that creates multiple non-blocking SSL connections to an https server, in each one I send a request and read the >> server's response. my problem is, whatever I do, I can't determine when the >> response data is finished. here's part of my code responsible for sending >> and receiving data: >> .... >> fd_set connectionfds;struct timeval timeout2; >> FD_ZERO(&connectionfds); >> FD_SET(socket_server, &connectionfds); >> timeout2.tv_usec = 0; >> timeout2.tv_sec = 1;while(1){ >> r=BIO_read(io,buf,BUFSIZZ-1); >> if (r>0){ >> //gather data >> continue; >> } >> else if (SSL_get_error(ssl, r)==SSL_ERROR_WANT_READ){ >> int ret = select(socket_server + 1, &connectionfds, NULL, NULL, >> &timeout2); >> if (ret <= 0){ >> break; >> } >> continue; >> } >> else{ >> break; >> }}// use whole gathered data.... >> my problem with above code is, if I set select timeout to a small time, I >> can't guarantee that all data is received (because some servers are really >> slow), and if I set timeout to a long time (5-10 seconds), my socket is getting stucked in wait-state for a long time and I can't use the response >> before that. I tried to make this work by using "BIO_should_read()" or "BIO_pending()" functions, but none of them is giving me what I want. so, >> Is there a way to determine when exactly there is nothing else to read on >> the SSL socket? >> Thank you. ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager majord...@openssl.org