00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <fastcgi++/protocol.hpp>
00023
00024 bool Fastcgipp::Protocol::processParamHeader(const char* data, size_t dataSize, const char*& name, size_t& nameSize, const char*& value, size_t& valueSize)
00025 {
00026 if(*data>>7)
00027 {
00028 nameSize=readBigEndian(*(uint32_t*)data) & 0x7fffffff;
00029 data+=sizeof(uint32_t);
00030 }
00031 else nameSize=*data++;
00032
00033 if(*data>>7)
00034 {
00035 valueSize=readBigEndian(*(uint32_t*)data) & 0x7fffffff;
00036 data+=sizeof(uint32_t);
00037 }
00038 else valueSize=*data++;
00039 name=data;
00040 value=name+nameSize;
00041 if(name+nameSize+valueSize > data+dataSize) return false;
00042 return true;
00043 }
00044
00045 Fastcgipp::Protocol::ManagementReply<14, 2, 8> Fastcgipp::Protocol::maxConnsReply("FCGI_MAX_CONNS", "10");
00046 Fastcgipp::Protocol::ManagementReply<13, 2, 1> Fastcgipp::Protocol::maxReqsReply("FCGI_MAX_REQS", "50");
00047 Fastcgipp::Protocol::ManagementReply<15, 1, 8> Fastcgipp::Protocol::mpxsConnsReply("FCGI_MPXS_CONNS", "1");
00048
00049 char* Fastcgipp::Protocol::recordTypeLabels[] = { "INVALID", "BEGIN_REQUEST", "ABORT_REQUEST", "END_REQUEST", "PARAMS", "IN", "OUT", "ERR", "DATA", "GET_VALUES", "GET_VALUES_RESULT", "UNKNOWN_TYPE" };