eitd/sectionsdclient: remove unused commands

Origin commit data
------------------
Branch: ni/coolstream
Commit: faacdd32df
Author: [CST] Focus <focus.cst@gmail.com>
Date: 2012-02-03 (Fri, 03 Feb 2012)


------------------
No further description and justification available within origin commit message!

------------------
This commit was generated by Migit
This commit is contained in:
[CST] Focus
2012-02-03 16:48:30 +04:00
parent 8cd790f92b
commit 10426f9321
4 changed files with 3 additions and 507 deletions

View File

@@ -53,21 +53,8 @@ struct sectionsd
enum commands
{
/* actualEPGchannelName=0,*/
dummy1,
dummy3, //actualEventListTVshort, // commandEventListTV
/*currentNextInformation,*/
dummy2,
dumpStatusinformation, // commandDumpStatusInformation
/*allEventsChannelName,*/
allEventsChannelIDSearch, // commandAllEventsChannelIDSearch
dummy4, // setHoursToCache,
dummy5, // setHoursExtendedCache,
dummy6, // setEventsAreOldInMinutes,
dummy7, // dumpAllServices, // commandDumpAllServices
dummy8, // actualEventListRadioshort, // commandEventListRadio
dummy9, // getNextEPG, // commandGetNextEPG
dummy10,// getNextShort, // commandGetNextShort
pauseScanning, // commandPauseScanning // for the grabbers ;)
getIsScanningActive, // commandGetIsScanningActive
actualEPGchannelID, // commandActualEPGchannelID
@@ -79,11 +66,9 @@ struct sectionsd
ComponentTagsUniqueKey, // commandComponentTagsUniqueKey
allEventsChannelID_, // commandAllEventsChannelID
timesNVODservice, // commandTimesNVODservice
getEPGPrevNext, // commandGetEPGPrevNext
getIsTimeSet, // commandGetIsTimeSet
serviceChanged, // commandserviceChanged
LinkageDescriptorsUniqueKey, // commandLinkageDescriptorsUniqueKey
pauseSorting, // commandPauseSorting
CMD_registerEvents, // commandRegisterEventClient
CMD_unregisterEvents, // commandUnRegisterEventClient
#ifdef ENABLE_PPT
@@ -91,20 +76,11 @@ struct sectionsd
#else
dummy11_setPrivatePid,
#endif
setSectionsdScanMode, // commandSetSectionsdScanMode
freeMemory, // commandFreeMemory
readSIfromXML, // commandReadSIfromXML
writeSI2XML, // commandWriteSI2XML
LoadLanguages, // commandLoadLanguages
SaveLanguages, // commandSaveLanguages
SetLanguages, // commandSetLanguages
GetLanguages, // commandGetLanguages
SetLanguageMode, // commandSetLanguageMode
GetLanguageMode, // commandGetLanguageMode
setConfig, // commandSetConfig
Restart, // commandRestart
ping,
numberOfCommands // <- no actual command, end of command marker
};

View File

@@ -120,27 +120,6 @@ bool CSectionsdClient::getIsTimeSet()
}
}
#if 0
void CSectionsdClient::setEventsAreOldInMinutes(const unsigned short minutes)
{
send(sectionsd::setEventsAreOldInMinutes, (char*)&minutes, sizeof(minutes));
readResponse();
close_connection();
}
#endif
void CSectionsdClient::setPauseSorting(const bool doPause)
{
int PauseIt = (doPause) ? 1 : 0;
send(sectionsd::pauseSorting, (char*)&PauseIt, sizeof(PauseIt));
readResponse();
close_connection();
}
void CSectionsdClient::setPauseScanning(const bool doPause)
{
int PauseIt = (doPause) ? 1 : 0;
@@ -738,15 +717,6 @@ void CSectionsdClient::setPrivatePid(const unsigned short pid)
close_connection();
}
#endif
#if 0
void CSectionsdClient::setSectionsdScanMode(const int scanMode)
{
send(sectionsd::setSectionsdScanMode, (char*)&scanMode, sizeof(scanMode));
readResponse();
close_connection();
}
#endif
void CSectionsdClient::freeMemory()
{

View File

@@ -174,14 +174,10 @@ class CSectionsdClient : private CBasicClient
bool getIsTimeSet();
// void setEventsAreOldInMinutes(const unsigned short minutes);
void setPauseScanning(const bool doPause);
bool getIsScanningActive();
void setPauseSorting(const bool doPause);
void setServiceChanged(const t_channel_id channel_id, const bool requestEvent);
CChannelEventList getChannelEvents(const bool tv_mode = true, t_channel_id* = NULL, int size = 0);
@@ -198,8 +194,6 @@ class CSectionsdClient : private CBasicClient
void setPrivatePid(const unsigned short pid);
// void setSectionsdScanMode(const int scanMode);
void freeMemory();
void readSIfromXML(const char * epgxmlname);

View File

@@ -96,7 +96,8 @@ static bool sectionsd_ready = false;
static bool reader_ready = true;
static unsigned int max_events;
#define HOUSEKEEPING_SLEEP (5 * 60) // sleep 5 minutes
//#define HOUSEKEEPING_SLEEP (5 * 60) // sleep 5 minutes
#define HOUSEKEEPING_SLEEP (1 * 60) // sleep 5 minutes
#define META_HOUSEKEEPING (24 * 60 * 60) / HOUSEKEEPING_SLEEP // meta housekeeping after XX housekeepings - every 24h -
// Timeout bei tcp/ip connections in ms
@@ -311,7 +312,6 @@ struct OrderFirstEndTimeServiceIDEventUniqueKey
{
return
p1->times.begin()->startzeit + (long)p1->times.begin()->dauer == p2->times.begin()->startzeit + (long)p2->times.begin()->dauer ?
// ( p1->serviceID == p2->serviceID ? p1->uniqueKey() < p2->uniqueKey() : p1->serviceID < p2->serviceID )
(p1->service_id == p2->service_id ? p1->uniqueKey() > p2->uniqueKey() : p1->service_id < p2->service_id)
:
( p1->times.begin()->startzeit + (long)p1->times.begin()->dauer < p2->times.begin()->startzeit + (long)p2->times.begin()->dauer ) ;
@@ -1218,81 +1218,6 @@ static const SIevent &findNextSIevent(const event_id_t uniqueKey, SItime &zeit)
return nullEvt;
}
// Sucht das naechste UND vorhergehende Event anhand unique key und Startzeit
static void findPrevNextSIevent(const event_id_t uniqueKey, SItime &zeit, SIevent &prev, SItime &prev_zeit, SIevent &next, SItime &next_zeit)
{
prev = nullEvt;
next = nullEvt;
bool prev_ok = false;
bool next_ok = false;
MySIeventsOrderUniqueKey::iterator eFirst = mySIeventsOrderUniqueKey.find(uniqueKey);
if (eFirst != mySIeventsOrderUniqueKey.end())
{
if (eFirst->second->times.size() > 1)
{
// Wir haben ein NVOD-Event
// d.h. wir suchen die aktuelle Zeit und nehmen die naechste davon, falls existent
for (SItimes::iterator t = eFirst->second->times.begin(); t != eFirst->second->times.end(); ++t)
if (t->startzeit == zeit.startzeit)
{
if (t != eFirst->second->times.begin())
{
--t;
prev_zeit = *t;
prev = *(eFirst->second);
prev_ok = true;
++t;
}
++t;
if (t != eFirst->second->times.end())
{
next_zeit = *t;
next = *(eFirst->second);
next_ok = true;
}
if ( prev_ok && next_ok )
return ; // beide gefunden...
else
break;
}
}
MySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey::iterator eNext = mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.find(eFirst->second);
if ( (!prev_ok) && (eNext != mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.begin() ) )
{
--eNext;
if ((*eNext)->get_channel_id() == eFirst->second->get_channel_id())
{
prev_zeit = *((*eNext)->times.begin());
prev = *(*eNext);
}
++eNext;
}
++eNext;
if ( (!next_ok) && (eNext != mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.end()) )
{
if ((*eNext)->get_channel_id() == eFirst->second->get_channel_id())
{
next_zeit = *((*eNext)->times.begin());
next = *(*eNext);
}
}
// printf("evt_id >%llx<, time %x - evt_id >%llx<, time %x\n", prev.uniqueKey(), prev_zeit.startzeit, next.uniqueKey(), next_zeit.startzeit);
}
}
//---------------------------------------------------------------------
// connection-thread
// handles incoming requests
@@ -1392,75 +1317,6 @@ static void commandGetIsScanningActive(int connfd, char* /*data*/, const unsigne
dputs("[sectionsd] Fehler/Timeout bei write");
}
static void commandDumpAllServices(int connfd, char* /*data*/, const unsigned /*dataLength*/)
{
dputs("Request of service list.\n");
long count=0;
#define MAX_SIZE_SERVICELIST 64*1024
char *serviceList = new char[MAX_SIZE_SERVICELIST]; // 65kb should be enough and dataLength is unsigned short
if (!serviceList)
{
fprintf(stderr, "low on memory!\n");
return ;
}
*serviceList = 0;
readLockServices();
#define MAX_SIZE_DATEN 200
char daten[MAX_SIZE_DATEN];
for (MySIservicesOrderUniqueKey::iterator s = mySIservicesOrderUniqueKey.begin(); s != mySIservicesOrderUniqueKey.end(); ++s)
{
count += 1 + snprintf(daten, MAX_SIZE_DATEN,
PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS
" %hu %hhu %d %d %d %d %u ",
s->first,
s->second->service_id, s->second->serviceTyp,
s->second->eitScheduleFlag(), s->second->eitPresentFollowingFlag(),
s->second->runningStatus(), s->second->freeCAmode(),
s->second->nvods.size());
/** soll es in count ?
+ strlen(s->second->serviceName.c_str()) + 1
+ strlen(s->second->providerName.c_str()) + 1
+ 3; **/
if (count < MAX_SIZE_SERVICELIST)
{
strcat(serviceList, daten);
strcat(serviceList, "\n");
strcat(serviceList, s->second->serviceName.c_str());
strcat(serviceList, "\n");
strcat(serviceList, s->second->providerName.c_str());
strcat(serviceList, "\n");
} else {
dprintf("warning: commandDumpAllServices: serviceList cut\n");
break;
}
}
unlockServices();
struct sectionsd::msgResponseHeader msgResponse;
msgResponse.dataLength = strlen(serviceList) + 1;
if (msgResponse.dataLength > MAX_SIZE_SERVICELIST)
printf("warning: commandDumpAllServices: length=%d\n", msgResponse.dataLength);
if (msgResponse.dataLength == 1)
msgResponse.dataLength = 0;
if (writeNbytes(connfd, (const char *)&msgResponse, sizeof(msgResponse), WRITE_TIMEOUT_IN_SECONDS) == true)
{
if (msgResponse.dataLength)
writeNbytes(connfd, serviceList, msgResponse.dataLength, WRITE_TIMEOUT_IN_SECONDS);
}
else
dputs("[sectionsd] Fehler/Timeout bei write");
delete[] serviceList;
return ;
}
static void sendAllEvents(int connfd, t_channel_id serviceUniqueKey, bool oldFormat = true, char search = 0, std::string search_text = "")
{
#define MAX_SIZE_EVENTLIST 64*1024
@@ -2342,44 +2198,6 @@ out:
delete[] msgData;
}
static void commandGetNextEPG(int connfd, char *data, const unsigned dataLength)
{
struct sectionsd::msgResponseHeader responseHeader;
responseHeader.dataLength = 0;
if (dataLength != 8 + 4) {
writeNbytes(connfd, (const char *)&responseHeader, sizeof(responseHeader), WRITE_TIMEOUT_IN_SECONDS);
return ;
}
event_id_t * uniqueEventKey = (event_id_t *)data;
time_t *starttime = (time_t *)(data + 8);
dprintf("Request of next epg for 0x%llx %s", *uniqueEventKey, ctime(starttime));
readLockEvents();
SItime zeit(*starttime, 0);
const SIevent &nextEvt = findNextSIevent(*uniqueEventKey, zeit);
if (nextEvt.service_id != 0)
{
dprintf("next epg found.\n");
sendEPG(connfd, nextEvt, zeit);
// this call is made in sendEPG()
// unlockEvents();
return;
}
unlockEvents();
dprintf("next epg not found!\n");
writeNbytes(connfd, (const char *)&responseHeader, sizeof(responseHeader), WRITE_TIMEOUT_IN_SECONDS);
return ;
}
static void commandActualEPGchannelID(int connfd, char *data, const unsigned dataLength)
{
if (dataLength != sizeof(t_channel_id))
@@ -2434,69 +2252,6 @@ static void commandActualEPGchannelID(int connfd, char *data, const unsigned dat
return ;
}
static void commandGetEPGPrevNext(int connfd, char *data, const unsigned dataLength)
{
struct sectionsd::msgResponseHeader responseHeader;
responseHeader.dataLength = 0;
char* msgData = NULL;
if (dataLength != 8 + 4) {
writeNbytes(connfd, (const char *)&responseHeader, sizeof(responseHeader), WRITE_TIMEOUT_IN_SECONDS);
return;
}
event_id_t * uniqueEventKey = (event_id_t *)data;
time_t *starttime = (time_t *)(data + 8);
SItime zeit(*starttime, 0);
SItime prev_zeit(0, 0);
SItime next_zeit(0, 0);
SIevent prev_evt;
SIevent next_evt;
dprintf("Request of Prev/Next EPG for 0x%llx %s", *uniqueEventKey, ctime(starttime));
readLockEvents();
findPrevNextSIevent(*uniqueEventKey, zeit, prev_evt, prev_zeit, next_evt, next_zeit);
responseHeader.dataLength =
12 + 1 + // Unique-Key + del
8 + 1 + // start time + del
12 + 1 + // Unique-Key + del
8 + 1 + 1; // start time + del
msgData = new char[responseHeader.dataLength];
if (!msgData)
{
fprintf(stderr, "low on memory!\n");
unlockEvents();
responseHeader.dataLength = 0; // empty response
goto out;
}
sprintf(msgData, "%012llx\xFF%08lx\xFF%012llx\xFF%08lx\xFF",
prev_evt.uniqueKey(),
prev_zeit.startzeit,
next_evt.uniqueKey(),
next_zeit.startzeit
);
unlockEvents();
out:
if (writeNbytes(connfd, (const char *)&responseHeader, sizeof(responseHeader), WRITE_TIMEOUT_IN_SECONDS)) {
if (responseHeader.dataLength)
writeNbytes(connfd, msgData, responseHeader.dataLength, WRITE_TIMEOUT_IN_SECONDS);
} else
dputs("[sectionsd] Fehler/Timeout bei write");
if (msgData)
delete[] msgData;
return ;
}
bool channel_in_requested_list(t_channel_id * clist, t_channel_id chid, int len)
{
if(len == 0) return true;
@@ -2698,58 +2453,12 @@ out:
delete[] msgData;
}
static void commandGetNextShort(int connfd, char *data, const unsigned dataLength)
{
struct sectionsd::msgResponseHeader responseHeader;
responseHeader.dataLength = 0;
if (dataLength != 8 + 4) {
writeNbytes(connfd, (const char *)&responseHeader, sizeof(responseHeader), WRITE_TIMEOUT_IN_SECONDS);
return;
}
event_id_t * uniqueEventKey = (event_id_t *)data;
time_t *starttime = (time_t *)(data + 8);
SItime zeit(*starttime, 0);
dprintf("Request of next short for 0x%llx %s", *uniqueEventKey, ctime(starttime));
readLockEvents();
const SIevent &nextEvt = findNextSIevent(*uniqueEventKey, zeit);
if (nextEvt.service_id != 0)
{
dprintf("next short found.\n");
sendShort(connfd, nextEvt, zeit);
// this call is made in sendShort()
// unlockEvents();
return;
}
unlockEvents();
dprintf("next short not found!\n");
writeNbytes(connfd, (const char *)&responseHeader, sizeof(responseHeader), WRITE_TIMEOUT_IN_SECONDS);
}
static void commandEventListTV(int connfd, char* /*data*/, const unsigned /*dataLength*/)
{
dputs("Request of TV event list.\n");
sendEventList(connfd, 0x01, 0x04);
}
static void commandEventListTVids(int connfd, char* data, const unsigned dataLength)
{
dputs("Request of TV event list (IDs).\n");
sendEventList(connfd, 0x01, 0x04, 0, (t_channel_id *) data, dataLength/sizeof(t_channel_id));
}
static void commandEventListRadio(int connfd, char* /*data*/, const unsigned /*dataLength*/)
{
dputs("Request of radio event list.\n");
sendEventList(connfd, 0x02);
}
static void commandEventListRadioIDs(int connfd, char* data, const unsigned dataLength)
{
sendEventList(connfd, 0x02, 0, 0, (t_channel_id *) data, dataLength/sizeof(t_channel_id));
@@ -3493,136 +3202,6 @@ static void commandAllEventsChannelIDSearch(int connfd, char *data, const unsign
return;
}
static void commandLoadLanguages(int connfd, char* /*data*/, const unsigned /*dataLength*/)
{
struct sectionsd::msgResponseHeader responseHeader;
bool retval = SIlanguage::loadLanguages();
responseHeader.dataLength = sizeof(retval);
if (writeNbytes(connfd, (const char *)&responseHeader,
sizeof(responseHeader), WRITE_TIMEOUT_IN_SECONDS) == true) {
writeNbytes(connfd, (const char *)&retval,
responseHeader.dataLength, WRITE_TIMEOUT_IN_SECONDS);
}
else
dputs("[sectionsd] Fehler/Timeout bei write");
}
static void commandSaveLanguages(int connfd, char* /*data*/, const unsigned /*dataLength*/)
{
struct sectionsd::msgResponseHeader responseHeader;
bool retval = SIlanguage::saveLanguages();
responseHeader.dataLength = sizeof(retval);
if (writeNbytes(connfd, (const char *)&responseHeader,
sizeof(responseHeader), WRITE_TIMEOUT_IN_SECONDS) == true) {
writeNbytes(connfd, (const char *)&retval,
responseHeader.dataLength, WRITE_TIMEOUT_IN_SECONDS);
}
else
dputs("[sectionsd] Fehler/Timeout bei write");
}
static void commandSetLanguages(int connfd, char* data, const unsigned dataLength)
{
bool retval = true;
if (dataLength % 3) {
retval = false;
} else {
std::vector<std::string> languages;
for (unsigned int i = 0 ; i < dataLength ; ) {
char tmp[4];
tmp[0] = data[i++];
tmp[1] = data[i++];
tmp[2] = data[i++];
tmp[3] = '\0';
languages.push_back(tmp);
}
SIlanguage::setLanguages(languages);
}
struct sectionsd::msgResponseHeader responseHeader;
responseHeader.dataLength = sizeof(retval);
if (writeNbytes(connfd, (const char *)&responseHeader,
sizeof(responseHeader), WRITE_TIMEOUT_IN_SECONDS) == true) {
writeNbytes(connfd, (const char *)&retval, responseHeader.dataLength,
WRITE_TIMEOUT_IN_SECONDS);
} else {
dputs("[sectionsd] Fehler/Timeout bei write");
}
}
static void commandGetLanguages(int connfd, char* /* data */, const unsigned /* dataLength */)
{
std::string retval;
std::vector<std::string> languages = SIlanguage::getLanguages();
for (std::vector<std::string>::iterator it = languages.begin() ;
it != languages.end() ; it++) {
retval.append(*it);
}
struct sectionsd::msgResponseHeader responseHeader;
responseHeader.dataLength = retval.length();
if (writeNbytes(connfd, (const char *)&responseHeader,
sizeof(responseHeader), WRITE_TIMEOUT_IN_SECONDS) == true) {
writeNbytes(connfd, (const char *)retval.c_str(),
responseHeader.dataLength, WRITE_TIMEOUT_IN_SECONDS);
} else {
dputs("[sectionsd] Fehler/Timeout bei write");
}
}
static void commandSetLanguageMode(int connfd, char* data , const unsigned dataLength)
{
bool retval = true;
CSectionsdClient::SIlanguageMode_t tmp(CSectionsdClient::ALL);
if (dataLength != sizeof(tmp)) {
retval = false;
} else {
tmp = *(CSectionsdClient::SIlanguageMode_t *)data;
SIlanguage::setMode(tmp);
}
struct sectionsd::msgResponseHeader responseHeader;
responseHeader.dataLength = sizeof(retval);
if (writeNbytes(connfd, (const char *)&responseHeader,
sizeof(responseHeader), WRITE_TIMEOUT_IN_SECONDS) == true) {
writeNbytes(connfd, (const char *)&retval,
responseHeader.dataLength, WRITE_TIMEOUT_IN_SECONDS);
} else {
dputs("[sectionsd] Fehler/Timeout bei write");
}
}
static void commandGetLanguageMode(int connfd, char* /* data */, const unsigned /* dataLength */)
{
CSectionsdClient::SIlanguageMode_t retval(CSectionsdClient::ALL);
retval = SIlanguage::getMode();
struct sectionsd::msgResponseHeader responseHeader;
responseHeader.dataLength = sizeof(retval);
if (writeNbytes(connfd, (const char *)&responseHeader,
sizeof(responseHeader), WRITE_TIMEOUT_IN_SECONDS) == true) {
writeNbytes(connfd, (const char *)&retval,
responseHeader.dataLength, WRITE_TIMEOUT_IN_SECONDS);
} else {
dputs("[sectionsd] Fehler/Timeout bei write");
}
}
struct s_cmd_table
{
void (*cmd)(int connfd, char *, const unsigned);
@@ -3630,21 +3209,8 @@ struct s_cmd_table
};
static s_cmd_table connectionCommands[sectionsd::numberOfCommands] = {
//commandActualEPGchannelName,
{ commandDummy2, "commandDummy1" },
{ commandEventListTV, "commandEventListTV" },
//commandCurrentNextInfoChannelName,
{ commandDummy2, "commandDummy2" },
{ commandDumpStatusInformation, "commandDumpStatusInformation" },
//commandAllEventsChannelName,
{ commandAllEventsChannelIDSearch, "commandAllEventsChannelIDSearch" },
{ commandDummy2, "commandSetHoursToCache" },
{ commandDummy2, "commandSetHoursExtendedCache" },
{ commandDummy2, "commandSetEventsAreOldInMinutes" },
{ commandDumpAllServices, "commandDumpAllServices" },
{ commandEventListRadio, "commandEventListRadio" },
{ commandGetNextEPG, "commandGetNextEPG" },
{ commandGetNextShort, "commandGetNextShort" },
{ commandPauseScanning, "commandPauseScanning" },
{ commandGetIsScanningActive, "commandGetIsScanningActive" },
{ commandActualEPGchannelID, "commandActualEPGchannelID" },
@@ -3656,11 +3222,9 @@ static s_cmd_table connectionCommands[sectionsd::numberOfCommands] = {
{ commandComponentTagsUniqueKey, "commandComponentTagsUniqueKey" },
{ commandAllEventsChannelID, "commandAllEventsChannelID" },
{ commandTimesNVODservice, "commandTimesNVODservice" },
{ commandGetEPGPrevNext, "commandGetEPGPrevNext" },
{ commandGetIsTimeSet, "commandGetIsTimeSet" },
{ commandserviceChanged, "commandserviceChanged" },
{ commandLinkageDescriptorsUniqueKey, "commandLinkageDescriptorsUniqueKey" },
{ commandDummy2, "commandPauseSorting" },
{ commandRegisterEventClient, "commandRegisterEventClient" },
{ commandUnRegisterEventClient, "commandUnRegisterEventClient" },
#ifdef ENABLE_PPT
@@ -3668,19 +3232,10 @@ static s_cmd_table connectionCommands[sectionsd::numberOfCommands] = {
#else
{ commandDummy2, "commandSetPrivatePid" },
#endif
{ commandDummy2, "commandSetSectionsdScanMode" },
{ commandFreeMemory, "commandFreeMemory" },
{ commandReadSIfromXML, "commandReadSIfromXML" },
{ commandWriteSI2XML, "commandWriteSI2XML" },
{ commandLoadLanguages, "commandLoadLanguages" },
{ commandSaveLanguages, "commandSaveLanguages" },
{ commandSetLanguages, "commandSetLanguages" },
{ commandGetLanguages, "commandGetLanguages" },
{ commandSetLanguageMode, "commandSetLanguageMode" },
{ commandGetLanguageMode, "commandGetLanguageMode" },
{ commandSetConfig, "commandSetConfig" },
{ commandDummy1, "commandRestart" },
{ commandDummy1, "commandPing" }
};
bool sectionsd_parse_command(CBasicMessage::Header &rmsg, int connfd)
@@ -5111,6 +4666,7 @@ void sectionsd_main_thread(void */*data*/)
struct sched_param parm;
printf("$Id: sectionsd.cpp,v 1.305 2009/07/30 12:41:39 seife Exp $\n");
printf("SIevent size: %d\n", sizeof(SIevent));
/* "export NO_SLOW_ADDEVENT=true" to disable this */
slow_addevent = (getenv("NO_SLOW_ADDEVENT") == NULL);
if (slow_addevent)