diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2008-05-05 21:44:04 +0200 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2008-05-05 21:44:04 +0200 |
| commit | 72573aa33af3b920f80d5a76beacf681f9a4976a (patch) | |
| tree | 026b225ae091e227ecd21238cb228442c3fb34c3 /fcgiwrap.c | |
| parent | 73e5141bd17ba6f2af220a208d26642a54acf4b8 (diff) | |
Split out passing the request to a separate function
Diffstat (limited to 'fcgiwrap.c')
| -rw-r--r-- | fcgiwrap.c | 23 |
1 files changed, 17 insertions, 6 deletions
@@ -11,6 +11,7 @@ #include <string.h> #include <sys/stat.h> #include <limits.h> +#include <stdbool.h> extern char **environ; static char * const * inherited_environ; @@ -233,25 +234,35 @@ static const char * fcgi_pass_raw_fd(int *fdp, int fd_out, char *buf, size_t buf return NULL; } -static void fcgi_pass(struct fcgi_context *fc) +static bool fcgi_pass_request(struct fcgi_context *fc) { char buf[FCGI_BUF_SIZE]; ssize_t nread; - fd_set rset; - int maxfd = 1 + max_va(fc->fd_stdout, fc->fd_stderr, MAX_VA_SENTINEL); - int nready; - const char *err; /* eat the whole request and pass it to CGI */ while ((nread = FCGI_fread(buf, 1, sizeof(buf), FCGI_stdin)) > 0) { if (write_all(fc->fd_stdin, buf, nread) <= 0) { fcgi_finish(fc, "reading the request"); - return; + return false; } } close(fc->fd_stdin); fc->fd_stdin = -1; + return true; +} + +static void fcgi_pass(struct fcgi_context *fc) +{ + char buf[FCGI_BUF_SIZE]; + fd_set rset; + int maxfd = 1 + max_va(fc->fd_stdout, fc->fd_stderr, MAX_VA_SENTINEL); + int nready; + const char *err; + + if (!fcgi_pass_request(fc)) + return; + /* now pass CGI reply back */ while (fc->fd_stdout >= 0 && fc->fd_stderr >= 0) { FD_ZERO(&rset); |
