#define TMP_SHORTER_URL_OFFSET 0xFE
#define TMP_SHORTER_URLS 0xFD
+time_t last_run = 0L;
+
pthread_mutex_t RSSQueueMutex; /* locks the access to the following vars: */
HashList *RSSQueueRooms = NULL; /* rss_room_counter */
HashList *RSSFetchUrls = NULL; /* -> rss_aggregator; ->RefCount access to be locked too. */
}
/*
if (server_shutting_down)
- break; /* TODO */
+ break; / * TODO */
DeleteHashPos(&At);
}
DeleteEntryFromHash(RSSFetchUrls, At);
}
DeleteHashPos(&At);
+ last_run = time(NULL);
}
eNextState FreeNetworkSaveMessage (AsyncIO *IO)
free_recipients(Ctx->recp);
FreeStrBuf(&Ctx->Message);
FreeStrBuf(&Ctx->MsgGUID);
+ ((struct CitContext*)IO->CitContext)->state = CON_IDLE;
+ ((struct CitContext*)IO->CitContext)->kill_me = 1;
free(Ctx);
+ last_run = time(NULL);
return eAbort;
}
{
networker_save_message *Ctx;
+ pthread_mutex_lock(&RSSQueueMutex);
+ Cfg->RefCount ++;
+ pthread_mutex_unlock(&RSSQueueMutex);
+
+
Ctx = (networker_save_message *) malloc(sizeof(networker_save_message));
memset(Ctx, 0, sizeof(networker_save_message));
if ((Cfg->next_poll != 0) && (now < Cfg->next_poll))
return 0;
- Cfg->RefCount = 1;
+ Cfg->RefCount++;
ri = (rss_item*) malloc(sizeof(rss_item));
memset(ri, 0, sizeof(rss_item));
return 0;
}
- evcurl_handle_start(IO);
+ QueueCurlContext(IO);
return 1;
}
eNextState RSSAggregatorTerminate(AsyncIO *IO)
{
rss_aggregator *rncptr = (rss_aggregator *)IO->Data;
- /*
- HashPos *At;
- long HKLen;
- const char *HK;
- void *vData;
- */
+
+ HashPos *At;
+ long HKLen;
+ const char *HK;
+ void *vData;
+
pthread_mutex_lock(&RSSQueueMutex);
rncptr->RefCount --;
if (rncptr->RefCount == 0)
}
pthread_mutex_unlock(&RSSQueueMutex);
-/*
+
At = GetNewHashPos(RSSFetchUrls, 0);
pthread_mutex_lock(&RSSQueueMutex);
pthread_mutex_unlock(&RSSQueueMutex);
DeleteHashPos(&At);
-*/
return eAbort;
}
pthread_mutex_unlock(&RSSQueueMutex);
- FreeStrBuf(&rncptr->Url);
+ FreeStrBuf(&rncptr->Url);
free(rncptr);
rncptr = NULL;
continue;