Commit af110583 authored by Justin Erenkrantz's avatar Justin Erenkrantz
Browse files

Call apr_file_write_full instead to achieve the same effect.

apr_file_write_full is *guaranteed* to either write everything or return
an error.  It'll only write short if it received an error.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@95371 13f79535-47bb-0310-9956-ffa450edef68
parent 054db102
Loading
Loading
Loading
Loading
+4 −10
Changes for modules/generators/mod_cgi.c: 4 added lines, 10 removed lines.
Original line number Diff line number Diff line
@@ -698,7 +698,7 @@ static int cgi_handler(request_rec *r)
     */
    if (ap_should_client_block(r)) {
        int len_read, dbsize;
        apr_size_t bytes_written, bytes_to_write;
        apr_size_t bytes_written;
        apr_status_t rv;

        if (conf->logname) {
@@ -721,15 +721,9 @@ static int cgi_handler(request_rec *r)
            /* Keep writing data to the child until done or too much time
             * elapses with no progress or an error occurs.
             */
            bytes_written = 0;
            do {
                bytes_to_write = len_read - bytes_written;
                rv = apr_file_write(script_out, argsbuffer + bytes_written, 
                                    &bytes_to_write);
                bytes_written += bytes_to_write;
            } while (rv == APR_SUCCESS &&
                     bytes_written < (apr_size_t)len_read);
            if (rv != APR_SUCCESS || bytes_written < (apr_size_t)len_read) {
            rv = apr_file_write_full(script_out, argsbuffer, len_read,
                                     &bytes_written);
            if (rv != APR_SUCCESS) {
                /* silly script stopped reading, soak up remaining message */
                while (ap_get_client_block(r, argsbuffer,
                                           HUGE_STRING_LEN) > 0) {