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);
}
* here we start with the lookup of one host.
*/
- InitC_ares_dns(IO);
-
syslog(LOG_DEBUG, "NWC: %s\n", __FUNCTION__);
syslog(LOG_DEBUG,
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;
}
if (poll) {
NW->Url = NewStrBufPlain(NULL, StrLength(Line));
- StrBufPrintf(NW->Url, "citadel://:%s@%s:%s",
- ChrPtr(NW->secret),
- ChrPtr(NW->host),
- ChrPtr(NW->port));
+ if ((StrLength (NW->host) > NULL) && (!strcmp(ChrPtr(NW->host), "0.0.0.0")))
+ StrBufPrintf(NW->Url, "citadel://:%s@%s:%s",
+ ChrPtr(NW->secret),
+ ChrPtr(NW->host),
+ ChrPtr(NW->port));
+ else
+ StrBufPrintf(NW->Url, "citadel://:%s@%s:%s",
+ ChrPtr(NW->secret),
+ ChrPtr(NW->node),
+ ChrPtr(NW->port));
+
if (!network_talking_to(SKEY(NW->node), NTT_CHECK))
{
network_talking_to(SKEY(NW->node), NTT_ADD);