14 boost::lock_guard<boost::mutex> terminateLock(terminateMutex);
15 boost::lock_guard<boost::mutex> sleepLock(sleepMutex);
26 boost::lock_guard<boost::mutex> stopLock(stopMutex);
27 boost::lock_guard<boost::mutex> sleepLock(sleepMutex);
42 if(instance) instance->terminate();
47 if(instance) instance->stop();
55 struct sigaction sigAction;
57 sigemptyset(&sigAction.sa_mask);
60 sigaction(SIGPIPE, &sigAction, NULL);
61 sigaction(SIGUSR1, &sigAction, NULL);
62 sigaction(SIGTERM, &sigAction, NULL);
68 using namespace Protocol;
69 Message message(messages.front());
74 const Header& header=*(Header*)message.
data.get();
75 switch(header.getType())
83 processParamHeader(message.data.get()+
sizeof(Header), header.getContentLength(), name, nameSize, value, valueSize);
84 if(nameSize==14 && !memcmp(name,
"FCGI_MAX_CONNS", 14))
90 else if(nameSize==13 && !memcmp(name,
"FCGI_MAX_REQS", 13))
94 transceiver.secureWrite(
sizeof(
maxReqsReply),
id,
false);
96 else if(nameSize==15 && !memcmp(name,
"FCGI_MPXS_CONNS", 15))
108 Block buffer(transceiver.requestWrite(
sizeof(Header)+
sizeof(UnknownType)));
110 Header& sendHeader=*(Header*)buffer.
data;
113 sendHeader.setRequestId(0);
114 sendHeader.setContentLength(
sizeof(UnknownType));
115 sendHeader.setPaddingLength(0);
117 UnknownType& sendBody=*(UnknownType*)(buffer.data+
sizeof(Header));
118 sendBody.setType(header.getType());
120 transceiver.secureWrite(
sizeof(Header)+
sizeof(UnknownType),
id,
false);