View | Details | Raw Unified | Return to bug 60353
Collapse All | Expand All

(-) (-6 / +13 lines)
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;

Return to bug 60353