mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-05-08 13:56:40 +02:00
upstream: https://github.com/gnosek/fcgiwrap/issues/36 (cherry picked from commit 955c2f7f33145e05a65ed9cdb0191b1443331190) (cherry picked from commit 765e5cb605ea4018cdc600925c777c5678370f03) (cherry picked from commit 57963978da1971fa0583739b14b680ddc911c14d)
59 lines
1.5 KiB
Diff
59 lines
1.5 KiB
Diff
From eb54c65446693366aedfe72f002c6bb4e1a5d748 Mon Sep 17 00:00:00 2001
|
|
From: Richard Stanway <r.stanway@gmail.com>
|
|
Date: Thu, 24 Mar 2016 21:34:17 -0500
|
|
Subject: [PATCH] Add environment variable NO_BUFFERING to disable output
|
|
buffering
|
|
|
|
Fixes #36
|
|
---
|
|
fcgiwrap.8 | 4 ++++
|
|
fcgiwrap.c | 6 ++++++
|
|
2 files changed, 10 insertions(+)
|
|
|
|
diff --git a/fcgiwrap.8 b/fcgiwrap.8
|
|
index bf02c26..892b594 100644
|
|
--- a/fcgiwrap.8
|
|
+++ b/fcgiwrap.8
|
|
@@ -65,6 +65,10 @@
|
|
SCRIPT_FILENAME
|
|
.RS
|
|
complete path to CGI script. When set, overrides DOCUMENT_ROOT and SCRIPT_NAME
|
|
+.RE
|
|
+NO_BUFFERING
|
|
+.RS
|
|
+When set (e.g., to ""), disables output buffering.
|
|
|
|
.SH EXAMPLE
|
|
The fastest way to see \fBfcgiwrap\fP do something is to launch it at the command line
|
|
diff --git a/fcgiwrap.c b/fcgiwrap.c
|
|
index b44d8aa..42e3ec9 100644
|
|
--- a/fcgiwrap.c
|
|
+++ b/fcgiwrap.c
|
|
@@ -191,6 +191,7 @@ struct fcgi_context {
|
|
int fd_stderr;
|
|
unsigned int reply_state;
|
|
pid_t cgi_pid;
|
|
+ int unbuffered;
|
|
};
|
|
|
|
static void fcgi_finish(struct fcgi_context *fc, const char* msg)
|
|
@@ -256,6 +257,10 @@ static const char * fcgi_pass_fd(struct fcgi_context *fc, int *fdp, FCGI_FILE *f
|
|
return "writing CGI reply";
|
|
}
|
|
}
|
|
+
|
|
+ if (fc->unbuffered && FCGI_fflush(ffp)) {
|
|
+ return "flushing CGI reply";
|
|
+ }
|
|
} else {
|
|
if (nread < 0) {
|
|
return "reading CGI reply";
|
|
@@ -590,6 +595,7 @@ static void handle_fcgi_request(void)
|
|
fc.fd_stderr = pipe_err[0];
|
|
fc.reply_state = REPLY_STATE_INIT;
|
|
fc.cgi_pid = pid;
|
|
+ fc.unbuffered = !!getenv("NO_BUFFERING");
|
|
|
|
fcgi_pass(&fc);
|
|
}
|