diff --git a/src/eitd/sectionsd.cpp b/src/eitd/sectionsd.cpp index 0743cb82d..c825adc48 100644 --- a/src/eitd/sectionsd.cpp +++ b/src/eitd/sectionsd.cpp @@ -1180,12 +1180,12 @@ static void commandReadSIfromXML(int connfd, char *data, const unsigned dataLeng static void commandWriteSI2XML(int connfd, char *data, const unsigned dataLength) { - char epgdir[100] = ""; - sendEmptyResponse(connfd, NULL, 0); - - if (dataLength > 100) - return; + if ((!reader_ready) || (dataLength > 100)){ + eventServer->sendEvent(CSectionsdClient::EVT_WRITE_SI_FINISHED, CEventServer::INITID_SECTIONSD); + return; + } + char epgdir[100] = ""; strncpy(epgdir, data, dataLength); epgdir[dataLength] = '\0'; diff --git a/src/eitd/xmlutil.cpp b/src/eitd/xmlutil.cpp index d8c82080f..c5f2a7b58 100644 --- a/src/eitd/xmlutil.cpp +++ b/src/eitd/xmlutil.cpp @@ -243,11 +243,13 @@ void readDVBTimeFilter(void) dvb_time_update = true; } } + void deleteOldfileEvents(char *epgdir) { std::string indexname = std::string(epgdir) + "/index.xml"; xmlDocPtr filter_parser = parseXmlFile(indexname.c_str()); std::string filename; + std::string file; if (filter_parser != NULL) { @@ -255,10 +257,11 @@ void deleteOldfileEvents(char *epgdir) filter = filter->xmlChildrenNode; while (filter) { - filename = xmlGetAttribute(filter, "name"); - unlink(filename.c_str()); - + file = epgdir; + file +="/"; + file +=filename; + unlink(file.c_str()); filter = filter->xmlNextNode; } xmlFreeDoc(filter_parser); @@ -267,6 +270,7 @@ void deleteOldfileEvents(char *epgdir) void *insertEventsfromFile(void * data) { + reader_ready=false; xmlDocPtr event_parser = NULL; xmlNodePtr eventfile = NULL; xmlNodePtr service = NULL; @@ -441,13 +445,6 @@ static void write_indexxml_footer(FILE *fd) fprintf(fd, "\n"); } -// void cp(char * from, char * to) -// { -// char cmd[256]; -// snprintf(cmd, 256, "cp -f %s %s", from, to); -// system(cmd); -// } - void writeEventsToFile(char *epgdir) { FILE * indexfile = NULL;