mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04:00
Bugfixes for ZeroConf under OSX.
- Added Timeouts for Resolve and QueryIP, as these can continue indefinitely. - Added more debugging. - rotated port number using ntohs(). - Filtered Self. - Allowed Other SSL IDs of Self to connect. - Fixed QueryIP to use hosttarget instead of servicename. - fixed Id order in mPeerMgr->addFriend(). - fixed p3ZeroConf initialisation call. git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-dhtmods@4752 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
c69da728d7
commit
73471b2618
@ -2157,7 +2157,9 @@ int RsServer::StartupRetroShare()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef RS_ENABLE_ZEROCONF
|
#ifdef RS_ENABLE_ZEROCONF
|
||||||
p3ZeroConf *mZeroConf = new p3ZeroConf(ownId, ownId, mLinkMgr, mNetMgr);
|
p3ZeroConf *mZeroConf = new p3ZeroConf(
|
||||||
|
AuthGPG::getAuthGPG()->getGPGOwnId(), ownId,
|
||||||
|
mLinkMgr, mNetMgr, mPeerMgr);
|
||||||
mNetMgr->addNetAssistConnect(2, mZeroConf);
|
mNetMgr->addNetAssistConnect(2, mZeroConf);
|
||||||
mNetMgr->addNetListener(mZeroConf);
|
mNetMgr->addNetListener(mZeroConf);
|
||||||
|
|
||||||
|
@ -47,6 +47,8 @@
|
|||||||
#define ZC_SERVICE_STOPPED 0
|
#define ZC_SERVICE_STOPPED 0
|
||||||
#define ZC_SERVICE_ACTIVE 1
|
#define ZC_SERVICE_ACTIVE 1
|
||||||
|
|
||||||
|
#define ZC_MAX_QUERY_TIME 30
|
||||||
|
#define ZC_MAX_RESOLVE_TIME 30
|
||||||
|
|
||||||
p3ZeroConf::p3ZeroConf(std::string gpgid, std::string sslid, pqiConnectCb *cb, p3NetMgr *nm, p3PeerMgr *pm)
|
p3ZeroConf::p3ZeroConf(std::string gpgid, std::string sslid, pqiConnectCb *cb, p3NetMgr *nm, p3PeerMgr *pm)
|
||||||
:pqiNetAssistConnect(sslid, cb), mNetMgr(nm), mPeerMgr(pm), mZcMtx("p3ZeroConf")
|
:pqiNetAssistConnect(sslid, cb), mNetMgr(nm), mPeerMgr(pm), mZcMtx("p3ZeroConf")
|
||||||
@ -64,10 +66,14 @@ p3ZeroConf::p3ZeroConf(std::string gpgid, std::string sslid, pqiConnectCb *cb, p
|
|||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mRegisterStatus == ZC_SERVICE_STOPPED;
|
mRegisterStatus = ZC_SERVICE_STOPPED;
|
||||||
mBrowseStatus == ZC_SERVICE_STOPPED;
|
mRegisterStatusTS = time(NULL);
|
||||||
mResolveStatus == ZC_SERVICE_STOPPED;
|
mBrowseStatus = ZC_SERVICE_STOPPED;
|
||||||
mQueryStatus == ZC_SERVICE_STOPPED;
|
mBrowseStatusTS = time(NULL);
|
||||||
|
mResolveStatus = ZC_SERVICE_STOPPED;
|
||||||
|
mResolveStatusTS = time(NULL);
|
||||||
|
mQueryStatus = ZC_SERVICE_STOPPED;
|
||||||
|
mQueryStatusTS = time(NULL);
|
||||||
|
|
||||||
createTxtRecord();
|
createTxtRecord();
|
||||||
}
|
}
|
||||||
@ -149,29 +155,42 @@ void p3ZeroConf::createTxtRecord()
|
|||||||
mTextOkay = true;
|
mTextOkay = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int procPeerTxtRecord(int txtLen, const unsigned char *txtRecord, std::string peerGpgId, std::string peerSslId)
|
int procPeerTxtRecord(int txtLen, const unsigned char *txtRecord, std::string &peerGpgId, std::string &peerSslId)
|
||||||
{
|
{
|
||||||
int txtRemaining = txtLen;
|
int txtRemaining = txtLen;
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
bool setGpg = false;
|
bool setGpg = false;
|
||||||
bool setSsl = false;
|
bool setSsl = false;
|
||||||
|
|
||||||
|
std::cerr << "procPeerTxtRecord() processing";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
|
||||||
while(txtRemaining > 0)
|
while(txtRemaining > 0)
|
||||||
{
|
{
|
||||||
uint8_t len = txtRecord[idx];
|
uint8_t len = txtRecord[idx];
|
||||||
idx++;
|
idx++;
|
||||||
txtRemaining -= 1;
|
txtRemaining -= 1;
|
||||||
|
|
||||||
std::string record(txtRecord, idx, len);
|
std::string record((const char *) txtRecord, idx, len);
|
||||||
|
|
||||||
|
std::cerr << "procPeerTxtRecord() record: " << record;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
|
||||||
if (0 == strncmp(record.c_str(), "gpgid=", 6))
|
if (0 == strncmp(record.c_str(), "gpgid=", 6))
|
||||||
{
|
{
|
||||||
peerGpgId = record.substr(6, -1);
|
peerGpgId = record.substr(6, -1);
|
||||||
setGpg = true;
|
setGpg = true;
|
||||||
|
|
||||||
|
std::cerr << "procPeerTxtRecord() found peerGpgId: " << peerGpgId;
|
||||||
|
std::cerr << std::endl;
|
||||||
}
|
}
|
||||||
else if (0 == strncmp(record.c_str(), "sslid=", 6))
|
else if (0 == strncmp(record.c_str(), "sslid=", 6))
|
||||||
{
|
{
|
||||||
peerSslId = record.substr(6, -1);
|
peerSslId = record.substr(6, -1);
|
||||||
setSsl = true;
|
setSsl = true;
|
||||||
|
|
||||||
|
std::cerr << "procPeerTxtRecord() found peerSslId: " << peerSslId;
|
||||||
|
std::cerr << std::endl;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -340,8 +359,8 @@ void p3ZeroConf::checkServiceFDs()
|
|||||||
{
|
{
|
||||||
RsStackMutex stack(mZcMtx); /****** STACK LOCK MUTEX *******/
|
RsStackMutex stack(mZcMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
std::cerr << "p3ZeroConf::checkServiceFDs()";
|
//std::cerr << "p3ZeroConf::checkServiceFDs()";
|
||||||
std::cerr << std::endl;
|
//std::cerr << std::endl;
|
||||||
|
|
||||||
if (mRegisterStatus == ZC_SERVICE_ACTIVE)
|
if (mRegisterStatus == ZC_SERVICE_ACTIVE)
|
||||||
{
|
{
|
||||||
@ -356,19 +375,37 @@ void p3ZeroConf::checkServiceFDs()
|
|||||||
if (mResolveStatus == ZC_SERVICE_ACTIVE)
|
if (mResolveStatus == ZC_SERVICE_ACTIVE)
|
||||||
{
|
{
|
||||||
locked_checkFD(mResolveRef);
|
locked_checkFD(mResolveRef);
|
||||||
|
|
||||||
|
time_t age = time(NULL) - mResolveStatusTS;
|
||||||
|
if (age > ZC_MAX_RESOLVE_TIME)
|
||||||
|
{
|
||||||
|
std::cerr << "p3ZeroConf::checkServiceFDs() Killing very old Resolve request";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
locked_stopResolve();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (mQueryStatus == ZC_SERVICE_ACTIVE)
|
if (mQueryStatus == ZC_SERVICE_ACTIVE)
|
||||||
{
|
{
|
||||||
locked_checkFD(mQueryRef);
|
locked_checkFD(mQueryRef);
|
||||||
|
|
||||||
|
time_t age = time(NULL) - mQueryStatusTS;
|
||||||
|
if (age > ZC_MAX_QUERY_TIME)
|
||||||
|
{
|
||||||
|
std::cerr << "p3ZeroConf::checkServiceFDs() Killing very old Query request";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
locked_stopQueryIp();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void p3ZeroConf::locked_checkFD(DNSServiceRef ref)
|
void p3ZeroConf::locked_checkFD(DNSServiceRef ref)
|
||||||
{
|
{
|
||||||
std::cerr << "p3ZeroConf::locked_checkFD() Start";
|
//std::cerr << "p3ZeroConf::locked_checkFD() Start";
|
||||||
std::cerr << std::endl;
|
//std::cerr << std::endl;
|
||||||
|
|
||||||
int sockfd = DNSServiceRefSockFD(ref);
|
int sockfd = DNSServiceRefSockFD(ref);
|
||||||
|
|
||||||
@ -406,8 +443,8 @@ void p3ZeroConf::locked_checkFD(DNSServiceRef ref)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cerr << "p3ZeroConf::locked_checkFD() End";
|
//std::cerr << "p3ZeroConf::locked_checkFD() End";
|
||||||
std::cerr << std::endl;
|
//std::cerr << std::endl;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -475,7 +512,7 @@ int p3ZeroConf::checkLocationResults()
|
|||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
|
|
||||||
time_t now = time(NULL);
|
time_t now = time(NULL);
|
||||||
mPeerMgr->addFriend(lr.gpgId, lr.sslId, RS_NET_MODE_UDP, RS_VIS_STATE_STD, now);
|
mPeerMgr->addFriend(lr.sslId, lr.gpgId, RS_NET_MODE_UDP, RS_VIS_STATE_STD, now);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -500,7 +537,7 @@ int p3ZeroConf::checkQueryAction()
|
|||||||
zcResolveResult rr = mResolveResults.front();
|
zcResolveResult rr = mResolveResults.front();
|
||||||
mResolveResults.pop_front();
|
mResolveResults.pop_front();
|
||||||
|
|
||||||
locked_startQueryIp(rr.interfaceIndex, rr.fullname, rr.gpgId, rr.sslId);
|
locked_startQueryIp(rr.interfaceIndex, rr.hosttarget, rr.gpgId, rr.sslId);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -625,6 +662,7 @@ int p3ZeroConf::locked_startRegister()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
mRegisterStatus = ZC_SERVICE_ACTIVE;
|
mRegisterStatus = ZC_SERVICE_ACTIVE;
|
||||||
|
mRegisterStatusTS = time(NULL);
|
||||||
mRegistered = true;
|
mRegistered = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -667,6 +705,7 @@ void p3ZeroConf::locked_stopRegister()
|
|||||||
DNSServiceRefDeallocate(mRegisterRef);
|
DNSServiceRefDeallocate(mRegisterRef);
|
||||||
|
|
||||||
mRegisterStatus = ZC_SERVICE_STOPPED;
|
mRegisterStatus = ZC_SERVICE_STOPPED;
|
||||||
|
mRegisterStatusTS = time(NULL);
|
||||||
mRegistered = false;
|
mRegistered = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -710,6 +749,7 @@ int p3ZeroConf::locked_startBrowse()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
mBrowseStatus = ZC_SERVICE_ACTIVE;
|
mBrowseStatus = ZC_SERVICE_ACTIVE;
|
||||||
|
mBrowseStatusTS = time(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@ -748,7 +788,18 @@ void p3ZeroConf::callbackBrowse(DNSServiceRef /* sdRef */, DNSServiceFlags flags
|
|||||||
std::cerr << " replyDomain: " << replyDomain;
|
std::cerr << " replyDomain: " << replyDomain;
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
|
|
||||||
|
if (flags & kDNSServiceFlagsAdd)
|
||||||
|
{
|
||||||
|
std::cerr << "p3ZeroConf::callbackBrowse() Add Flags => so newly found Service => BrowseResults";
|
||||||
|
std::cerr << std::endl;
|
||||||
mBrowseResults.push_back(br);
|
mBrowseResults.push_back(br);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::cerr << "p3ZeroConf::callbackBrowse() Missing Add Flag => so Service now dropped, Ignoring";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -764,6 +815,7 @@ int p3ZeroConf::locked_stopBrowse()
|
|||||||
|
|
||||||
DNSServiceRefDeallocate(mBrowseRef);
|
DNSServiceRefDeallocate(mBrowseRef);
|
||||||
mBrowseStatus = ZC_SERVICE_STOPPED;
|
mBrowseStatus = ZC_SERVICE_STOPPED;
|
||||||
|
mBrowseStatusTS = time(NULL);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -807,6 +859,7 @@ void p3ZeroConf::locked_startResolve(uint32_t idx, std::string name,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
mResolveStatus = ZC_SERVICE_ACTIVE;
|
mResolveStatus = ZC_SERVICE_ACTIVE;
|
||||||
|
mResolveStatusTS = time(NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -835,7 +888,7 @@ void p3ZeroConf::callbackResolve( DNSServiceRef /* sdRef */, DNSServiceFlags fla
|
|||||||
rr.interfaceIndex = interfaceIndex;
|
rr.interfaceIndex = interfaceIndex;
|
||||||
rr.fullname = fullname;
|
rr.fullname = fullname;
|
||||||
rr.hosttarget = hosttarget;
|
rr.hosttarget = hosttarget;
|
||||||
rr.port = port;
|
rr.port = ntohs(port);
|
||||||
rr.txtLen = txtLen;
|
rr.txtLen = txtLen;
|
||||||
//rr.txtRecord = NULL; //malloc(rr.txtLen);
|
//rr.txtRecord = NULL; //malloc(rr.txtLen);
|
||||||
//memcpy(rr.txtRecord, txtRecord, txtLen);
|
//memcpy(rr.txtRecord, txtRecord, txtLen);
|
||||||
@ -846,7 +899,7 @@ void p3ZeroConf::callbackResolve( DNSServiceRef /* sdRef */, DNSServiceFlags fla
|
|||||||
std::cerr << " interfaceIndex: " << interfaceIndex;
|
std::cerr << " interfaceIndex: " << interfaceIndex;
|
||||||
std::cerr << " fullname: " << fullname;
|
std::cerr << " fullname: " << fullname;
|
||||||
std::cerr << " hosttarget: " << hosttarget;
|
std::cerr << " hosttarget: " << hosttarget;
|
||||||
std::cerr << " port: " << port;
|
std::cerr << " port: " << ntohs(port);
|
||||||
std::cerr << " txtLen: " << txtLen;
|
std::cerr << " txtLen: " << txtLen;
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
|
|
||||||
@ -883,6 +936,19 @@ void p3ZeroConf::callbackResolve( DNSServiceRef /* sdRef */, DNSServiceFlags fla
|
|||||||
/* returns if we are interested in the peer */
|
/* returns if we are interested in the peer */
|
||||||
int p3ZeroConf::locked_checkResolvedPeer(const zcResolveResult &rr)
|
int p3ZeroConf::locked_checkResolvedPeer(const zcResolveResult &rr)
|
||||||
{
|
{
|
||||||
|
/* if self - drop it */
|
||||||
|
if ((rr.gpgId == mOwnGpgId) && (rr.sslId == mOwnSslId))
|
||||||
|
{
|
||||||
|
std::cerr << "p3ZeroConf::locked_checkpeer() Found Self on LAN:";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << "gpgid = " << rr.gpgId;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << "sslid = " << rr.sslId;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* check if peerGpgId is in structure already */
|
/* check if peerGpgId is in structure already */
|
||||||
std::map<std::string, zcPeerDetails>::iterator it;
|
std::map<std::string, zcPeerDetails>::iterator it;
|
||||||
it = mPeerDetails.find(rr.gpgId);
|
it = mPeerDetails.find(rr.gpgId);
|
||||||
@ -891,7 +957,7 @@ int p3ZeroConf::locked_checkResolvedPeer(const zcResolveResult &rr)
|
|||||||
/* possibility we don't have any SSL ID's for this person
|
/* possibility we don't have any SSL ID's for this person
|
||||||
* check against AuthGPG()
|
* check against AuthGPG()
|
||||||
*/
|
*/
|
||||||
if (AuthGPG::getAuthGPG()->isGPGAccepted(rr.gpgId))
|
if ((AuthGPG::getAuthGPG()->isGPGAccepted(rr.gpgId)) || (rr.gpgId == mOwnGpgId))
|
||||||
{
|
{
|
||||||
zcPeerDetails newFriend;
|
zcPeerDetails newFriend;
|
||||||
newFriend.gpgId = rr.gpgId;
|
newFriend.gpgId = rr.gpgId;
|
||||||
@ -928,6 +994,17 @@ int p3ZeroConf::locked_checkResolvedPeer(const zcResolveResult &rr)
|
|||||||
|
|
||||||
it->second.mLocations[rr.sslId] = loc;
|
it->second.mLocations[rr.sslId] = loc;
|
||||||
|
|
||||||
|
|
||||||
|
std::cerr << "p3ZeroConf::locked_checkpeer() Adding New Location for:";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << "gpgid = " << rr.gpgId;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << "sslid = " << rr.sslId;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << "port = " << rr.port;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
|
||||||
|
|
||||||
/* install item in ADD Queue */
|
/* install item in ADD Queue */
|
||||||
zcLocationResult locResult(rr.gpgId, rr.sslId);
|
zcLocationResult locResult(rr.gpgId, rr.sslId);
|
||||||
mLocationResults.push_back(locResult);
|
mLocationResults.push_back(locResult);
|
||||||
@ -936,6 +1013,16 @@ int p3ZeroConf::locked_checkResolvedPeer(const zcResolveResult &rr)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::cerr << "p3ZeroConf::locked_checkpeer() Updating Location for:";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << "gpgid = " << rr.gpgId;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << "sslid = " << rr.sslId;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << "port = " << rr.port;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
|
||||||
lit->second.mStatus |= ZC_STATUS_FOUND;
|
lit->second.mStatus |= ZC_STATUS_FOUND;
|
||||||
lit->second.mPort = rr.port;
|
lit->second.mPort = rr.port;
|
||||||
lit->second.mFullName = rr.fullname;
|
lit->second.mFullName = rr.fullname;
|
||||||
@ -950,7 +1037,6 @@ int p3ZeroConf::locked_checkResolvedPeer(const zcResolveResult &rr)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int p3ZeroConf::locked_stopResolve()
|
int p3ZeroConf::locked_stopResolve()
|
||||||
{
|
{
|
||||||
std::cerr << "p3ZeroConf::locked_stopResolve()";
|
std::cerr << "p3ZeroConf::locked_stopResolve()";
|
||||||
@ -963,6 +1049,7 @@ int p3ZeroConf::locked_stopResolve()
|
|||||||
|
|
||||||
DNSServiceRefDeallocate(mResolveRef);
|
DNSServiceRefDeallocate(mResolveRef);
|
||||||
mResolveStatus = ZC_SERVICE_STOPPED;
|
mResolveStatus = ZC_SERVICE_STOPPED;
|
||||||
|
mResolveStatusTS = time(NULL);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -979,7 +1066,7 @@ void p3ZeroConf_CallbackQueryIp( DNSServiceRef sdRef, DNSServiceFlags flags,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void p3ZeroConf::locked_startQueryIp(uint32_t idx, std::string fullname, std::string gpgId, std::string sslId)
|
void p3ZeroConf::locked_startQueryIp(uint32_t idx, std::string hosttarget, std::string gpgId, std::string sslId)
|
||||||
{
|
{
|
||||||
if (mQueryStatus == ZC_SERVICE_ACTIVE)
|
if (mQueryStatus == ZC_SERVICE_ACTIVE)
|
||||||
{
|
{
|
||||||
@ -988,6 +1075,12 @@ void p3ZeroConf::locked_startQueryIp(uint32_t idx, std::string fullname, std::st
|
|||||||
|
|
||||||
std::cerr << "p3ZeroConf::locked_startQueryIp()";
|
std::cerr << "p3ZeroConf::locked_startQueryIp()";
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
|
std::cerr << "\thosttarget: " << hosttarget;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << "\tgpgId: " << gpgId;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << "\tsslId: " << sslId;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
|
||||||
|
|
||||||
DNSServiceRef *sdRef = &mQueryRef;
|
DNSServiceRef *sdRef = &mQueryRef;
|
||||||
@ -998,7 +1091,7 @@ void p3ZeroConf::locked_startQueryIp(uint32_t idx, std::string fullname, std::st
|
|||||||
void *context = (void *) this;
|
void *context = (void *) this;
|
||||||
|
|
||||||
DNSServiceErrorType errcode = DNSServiceQueryRecord(sdRef, flags, idx,
|
DNSServiceErrorType errcode = DNSServiceQueryRecord(sdRef, flags, idx,
|
||||||
fullname.c_str(), rrtype, rrclass, callBack, context);
|
hosttarget.c_str(), rrtype, rrclass, callBack, context);
|
||||||
|
|
||||||
if (errcode != kDNSServiceErr_NoError)
|
if (errcode != kDNSServiceErr_NoError)
|
||||||
{
|
{
|
||||||
@ -1008,7 +1101,11 @@ void p3ZeroConf::locked_startQueryIp(uint32_t idx, std::string fullname, std::st
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
std::cerr << "p3ZeroConf::locked_startQueryIp() Query Active";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
|
||||||
mQueryStatus = ZC_SERVICE_ACTIVE;
|
mQueryStatus = ZC_SERVICE_ACTIVE;
|
||||||
|
mQueryStatusTS = time(NULL);
|
||||||
mQueryGpgId = gpgId;
|
mQueryGpgId = gpgId;
|
||||||
mQuerySslId = sslId;
|
mQuerySslId = sslId;
|
||||||
}
|
}
|
||||||
@ -1118,6 +1215,9 @@ int p3ZeroConf::locked_completeQueryResult(zcQueryResult &qr)
|
|||||||
|
|
||||||
/*** NOW HAVE FOUND ENTRY, exchange info ****/
|
/*** NOW HAVE FOUND ENTRY, exchange info ****/
|
||||||
|
|
||||||
|
std::cerr << "p3ZeroConf::locked_completeQueryResults() Filling in Peer IpAddress";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
|
||||||
qr.addr.sin_port = htons(lit->second.mPort);
|
qr.addr.sin_port = htons(lit->second.mPort);
|
||||||
lit->second.mAddress = qr.addr;
|
lit->second.mAddress = qr.addr;
|
||||||
lit->second.mStatus |= ZC_STATUS_IPADDRESS;
|
lit->second.mStatus |= ZC_STATUS_IPADDRESS;
|
||||||
@ -1145,6 +1245,7 @@ int p3ZeroConf::locked_stopQueryIp()
|
|||||||
|
|
||||||
DNSServiceRefDeallocate(mQueryRef);
|
DNSServiceRefDeallocate(mQueryRef);
|
||||||
mQueryStatus = ZC_SERVICE_STOPPED;
|
mQueryStatus = ZC_SERVICE_STOPPED;
|
||||||
|
mQueryStatusTS = time(NULL);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,8 +260,13 @@ virtual bool setAttachMode(bool on);
|
|||||||
uint32_t mRegisterStatus;
|
uint32_t mRegisterStatus;
|
||||||
uint32_t mBrowseStatus;
|
uint32_t mBrowseStatus;
|
||||||
uint32_t mResolveStatus;
|
uint32_t mResolveStatus;
|
||||||
|
|
||||||
uint32_t mQueryStatus;
|
uint32_t mQueryStatus;
|
||||||
|
|
||||||
|
time_t mRegisterStatusTS;
|
||||||
|
time_t mBrowseStatusTS;
|
||||||
|
time_t mResolveStatusTS;
|
||||||
|
time_t mQueryStatusTS;
|
||||||
|
|
||||||
std::string mQuerySslId;
|
std::string mQuerySslId;
|
||||||
std::string mQueryGpgId;
|
std::string mQueryGpgId;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user