summaryrefslogtreecommitdiff
path: root/main/SAPI.c
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2000-08-19 16:38:19 +0000
committerZeev Suraski <zeev@php.net>2000-08-19 16:38:19 +0000
commitf112b686683e0f83fbcec3904d8c137d1653f989 (patch)
treeae0569baea2a6be56564685b14a3e05e8b76b582 /main/SAPI.c
parent07b5d74022c5471c096b73a708a088fcd975efbd (diff)
downloadphp-git-f112b686683e0f83fbcec3904d8c137d1653f989.tar.gz
Avoid an endless loop situation in case of an error situation while sending headers
Diffstat (limited to 'main/SAPI.c')
-rw-r--r--main/SAPI.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/main/SAPI.c b/main/SAPI.c
index e292abd128..040f23af77 100644
--- a/main/SAPI.c
+++ b/main/SAPI.c
@@ -462,6 +462,11 @@ SAPI_API int sapi_send_headers()
return SUCCESS;
}
+ /* Success-oriented. We set headers_sent to 1 here to avoid an infinite loop
+ * in case of an error situation.
+ */
+ SG(headers_sent) = 1;
+
if (sapi_module.send_headers) {
retval = sapi_module.send_headers(&SG(sapi_headers) SLS_CC);
} else {
@@ -470,7 +475,6 @@ SAPI_API int sapi_send_headers()
switch (retval) {
case SAPI_HEADER_SENT_SUCCESSFULLY:
- SG(headers_sent) = 1;
ret = SUCCESS;
break;
case SAPI_HEADER_DO_SEND:
@@ -490,10 +494,10 @@ SAPI_API int sapi_send_headers()
sapi_free_header(&default_header);
}
sapi_module.send_header(NULL, SG(server_context));
- SG(headers_sent) = 1;
ret = SUCCESS;
break;
case SAPI_HEADER_SEND_FAILED:
+ SG(headers_sent) = 0;
ret = FAILURE;
break;
}