if (destroy) {
zend_hash_destroy(&req->env);
}
+
+#ifdef _WIN32
+ if (is_impersonate) {
+ RevertToSelf();
+ }
+#endif
+
if ((force || !req->keep) && req->fd >= 0) {
#ifdef _WIN32
HANDLE pipe = (HANDLE)_get_osfhandle(req->fd);
FlushFileBuffers(pipe);
}
DisconnectNamedPipe(pipe);
- if (is_impersonate) {
- RevertToSelf();
- }
#else
if (!force) {
char buf[8];
}
}
CloseHandle(ov.hEvent);
- if (is_impersonate && !ImpersonateNamedPipeClient(pipe)) {
- DisconnectNamedPipe(pipe);
- req->fd = -1;
- } else {
- req->fd = req->listen_socket;
- }
+ req->fd = req->listen_socket;
FCGI_UNLOCK(req->listen_socket);
#else
{
return -1;
}
if (fcgi_read_request(req)) {
+#ifdef _WIN32
+ if (is_impersonate) {
+ pipe = (HANDLE)_get_osfhandle(req->fd);
+ if (!ImpersonateNamedPipeClient(pipe)) {
+ fcgi_close(req, 1, 1);
+ continue;
+ }
+ }
+#endif
return req->fd;
} else {
fcgi_close(req, 1, 1);