FreeStrBuf(&NW->port);
FreeStrBuf(&NW->secret);
FreeStrBuf(&NW->Url);
+ ((struct CitContext*)NW->IO.CitContext)->state = CON_IDLE;
+ ((struct CitContext*)NW->IO.CitContext)->kill_me = 1;
FreeAsyncIOContents(&NW->IO);
free(NW);
}
{
AsyncNetworker *NW = (AsyncNetworker *)IO->Data;
- network_talking_to(ChrPtr(NW->node), NTT_REMOVE);
+ network_talking_to(SKEY(NW->node), NTT_REMOVE);
DeleteNetworker(IO->Data);
return eAbort;
*/
if (server_shutting_down)
{
- close(NW->IO.IOB.OtherFD);
+ FDIOBufferDelete(&NW->IO.IOB);
unlink(ChrPtr(NW->tempFileName));
return eAbort;
}
{
NW->State ++;
- close(NW->IO.IOB.OtherFD);
+ FDIOBufferDelete(&NW->IO.IOB);
if (link(ChrPtr(NW->SpoolFileName), ChrPtr(NW->tempFileName)) != 0) {
syslog(LOG_ALERT,
{
NW->State ++;
- close(NW->IO.IOB.OtherFD);
+ FDIOBufferDelete(&NW->IO.IOB);
if (link(ChrPtr(NW->SpoolFileName), ChrPtr(NW->tempFileName)) != 0) {
syslog(LOG_ALERT,
{
NW->State ++;
- close(NW->IO.IOB.OtherFD);
+ FDIOBufferDelete(&NW->IO.IOB);
rc = NWC_DispatchWriteDone(&NW->IO);
NW->State --;
return rc;
ChrPtr(NW->host),
ChrPtr(NW->port));
- return InitEventIO(IO, NW,
- NWC_ConnTimeout,
- NWC_ReadTimeouts[0],
- 1);
+ return EvConnectSock(IO,
+ NWC_ConnTimeout,
+ NWC_ReadTimeouts[0],
+ 1);
}
void RunNetworker(AsyncNetworker *NW)
{
- CitContext *SubC;
-
ParseURL(&NW->IO.ConnectMe, NW->Url, 504);
- NW->IO.Data = NW;
- NW->IO.SendDone = NWC_DispatchWriteDone;
- NW->IO.ReadDone = NWC_DispatchReadDone;
- NW->IO.Terminate = NWC_Terminate;
- NW->IO.LineReader = NWC_ReadServerStatus;
- NW->IO.ConnFail = NWC_ConnFail;
- NW->IO.DNSFail = NWC_DNSFail;
- NW->IO.Timeout = NWC_Timeout;
- NW->IO.ShutdownAbort = NWC_Shutdown;
-
- NW->IO.SendBuf.Buf = NewStrBufPlain(NULL, 1024);
- NW->IO.RecvBuf.Buf = NewStrBufPlain(NULL, 1024);
- NW->IO.IOBuf = NewStrBuf();
-
- NW->IO.NextState = eReadMessage;
- SubC = CloneContext (&networker_client_CC);
- SubC->session_specific_data = (char*) NW;
- NW->IO.CitContext = SubC;
+ InitIOStruct(&NW->IO,
+ NW,
+ eReadMessage,
+ NWC_ReadServerStatus,
+ NWC_DNSFail,
+ NWC_DispatchWriteDone,
+ NWC_DispatchReadDone,
+ NWC_Terminate,
+ NWC_ConnFail,
+ NWC_Timeout,
+ NWC_Shutdown);
+
+ safestrncpy(((CitContext *)NW->IO.CitContext)->cs_host,
+ ChrPtr(NW->host),
+ sizeof(((CitContext *)NW->IO.CitContext)->cs_host));
if (NW->IO.ConnectMe->IsIP) {
QueueEventContext(&NW->IO,
syslog(LOG_DEBUG, "network: no neighbor nodes are configured - not polling.\n");
return;
}
+ become_session(&networker_client_CC);
+
CfgData = NewStrBufPlain(working_ignetcfg, -1);
Line = NewStrBufPlain(NULL, StrLength(CfgData));
Done = 0;
ChrPtr(NW->secret),
ChrPtr(NW->host),
ChrPtr(NW->port));
- if (!network_talking_to(ChrPtr(NW->node), NTT_CHECK))
+ if (!network_talking_to(SKEY(NW->node), NTT_CHECK))
{
- network_talking_to(ChrPtr(NW->node), NTT_ADD);
+ network_talking_to(SKEY(NW->node), NTT_ADD);
RunNetworker(NW);
continue;
}