Lines 381-403
Link Here
|
381 |
apr_status_t rv; |
381 |
apr_status_t rv; |
382 |
DWORD transferred; |
382 |
DWORD transferred; |
383 |
|
383 |
|
384 |
handle_info = (fcgid_namedpipe_handle *) ipc_handle->ipc_handle_info; |
384 |
handle_info = (fcgid_namedpipe_handle *)ipc_handle->ipc_handle_info; |
385 |
|
385 |
|
386 |
for (bucket_request = APR_BRIGADE_FIRST(birgade_send); |
386 |
while ((bucket_request = APR_BRIGADE_FIRST(birgade_send)) != APR_BRIGADE_SENTINEL(birgade_send)) |
387 |
bucket_request != APR_BRIGADE_SENTINEL(birgade_send); |
|
|
388 |
bucket_request = APR_BUCKET_NEXT(bucket_request)) |
389 |
{ |
387 |
{ |
|
|
388 |
APR_BUCKET_REMOVE(bucket_request); //first extract the bucket so we can handle it and free it later |
389 |
|
390 |
const char *write_buf; |
390 |
const char *write_buf; |
391 |
apr_size_t write_buf_len; |
391 |
apr_size_t write_buf_len; |
392 |
apr_size_t has_write; |
392 |
apr_size_t has_write; |
393 |
|
393 |
|
394 |
if (APR_BUCKET_IS_METADATA(bucket_request)) |
394 |
if (APR_BUCKET_IS_METADATA(bucket_request)) { |
|
|
395 |
apr_bucket_destroy(bucket_request); |
395 |
continue; |
396 |
continue; |
|
|
397 |
} |
396 |
|
398 |
|
397 |
if ((rv = apr_bucket_read(bucket_request, &write_buf, &write_buf_len, |
399 |
if ((rv = apr_bucket_read(bucket_request, &write_buf, &write_buf_len, |
398 |
APR_BLOCK_READ)) != APR_SUCCESS) { |
400 |
APR_BLOCK_READ)) != APR_SUCCESS) { |
399 |
ap_log_rerror(APLOG_MARK, APLOG_WARNING, rv, ipc_handle->request, |
401 |
ap_log_rerror(APLOG_MARK, APLOG_WARNING, rv, ipc_handle->request, |
400 |
"mod_fcgid: can't read request from bucket"); |
402 |
"mod_fcgid: can't read request from bucket"); |
|
|
403 |
apr_bucket_destroy(bucket_request); |
401 |
return rv; |
404 |
return rv; |
402 |
} |
405 |
} |
403 |
|
406 |
|
Lines 416-421
Link Here
|
416 |
ap_log_rerror(APLOG_MARK, APLOG_WARNING, |
419 |
ap_log_rerror(APLOG_MARK, APLOG_WARNING, |
417 |
APR_FROM_OS_ERROR(rv), ipc_handle->request, |
420 |
APR_FROM_OS_ERROR(rv), ipc_handle->request, |
418 |
"mod_fcgid: can't write to pipe"); |
421 |
"mod_fcgid: can't write to pipe"); |
|
|
422 |
apr_bucket_destroy(bucket_request); |
419 |
return rv; |
423 |
return rv; |
420 |
} else { |
424 |
} else { |
421 |
/* |
425 |
/* |
Lines 428-439
Link Here
|
428 |
if (!GetOverlappedResult(handle_info->handle_pipe, |
432 |
if (!GetOverlappedResult(handle_info->handle_pipe, |
429 |
&handle_info->overlap_write, |
433 |
&handle_info->overlap_write, |
430 |
&transferred, |
434 |
&transferred, |
431 |
FALSE /* don't wait */ ) |
435 |
FALSE /* don't wait */) |
432 |
|| transferred == 0) |
436 |
|| transferred == 0) |
433 |
{ |
437 |
{ |
434 |
ap_log_rerror(APLOG_MARK, APLOG_WARNING, |
438 |
ap_log_rerror(APLOG_MARK, APLOG_WARNING, |
435 |
apr_get_os_error(), ipc_handle->request, |
439 |
apr_get_os_error(), ipc_handle->request, |
436 |
"mod_fcgid: get overlap result error"); |
440 |
"mod_fcgid: get overlap result error"); |
|
|
441 |
apr_bucket_destroy(bucket_request); |
437 |
return APR_ESPIPE; |
442 |
return APR_ESPIPE; |
438 |
} |
443 |
} |
439 |
has_write += transferred; |
444 |
has_write += transferred; |
Lines 442-451
Link Here
|
442 |
ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, |
447 |
ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, |
443 |
ipc_handle->request, |
448 |
ipc_handle->request, |
444 |
"mod_fcgid: write timeout to pipe"); |
449 |
"mod_fcgid: write timeout to pipe"); |
|
|
450 |
apr_bucket_destroy(bucket_request); |
445 |
return APR_ESPIPE; |
451 |
return APR_ESPIPE; |
446 |
} |
452 |
} |
447 |
} |
453 |
} |
448 |
} |
454 |
} |
|
|
455 |
apr_bucket_destroy(bucket_request); |
449 |
} |
456 |
} |
450 |
|
457 |
|
451 |
return APR_SUCCESS; |
458 |
return APR_SUCCESS; |