예제 #1
0
파일: Socket.cpp 프로젝트: TuffLuck/znc
CSocket::~CSocket() {
	CUser *pUser = nullptr;

	// CWebSock could cause us to have a nullptr pointer here
	if (m_pModule) {
		pUser = m_pModule->GetUser();
		m_pModule->UnlinkSocket(this);
	}

	if (pUser && m_pModule && (m_pModule->GetType() != CModInfo::GlobalModule)) {
		pUser->AddBytesWritten(GetBytesWritten());
		pUser->AddBytesRead(GetBytesRead());
	} else {
		CZNC::Get().AddBytesWritten(GetBytesWritten());
		CZNC::Get().AddBytesRead(GetBytesRead());
	}
}
예제 #2
0
CClient::~CClient() {
	if (!m_spAuth.IsNull()) {
		CClientAuth* pAuth = (CClientAuth*) &(*m_spAuth);
		pAuth->Invalidate();
	}
	if (m_pUser != NULL) {
		m_pUser->AddBytesRead(GetBytesRead());
		m_pUser->AddBytesWritten(GetBytesWritten());
	}
}
예제 #3
0
파일: WebModules.cpp 프로젝트: Affix/znc
CWebSock::~CWebSock() {
	if (!m_spAuth.IsNull()) {
		m_spAuth->Invalidate();
	}

	// we have to account for traffic here because CSocket does
	// not have a valid CModule* pointer.
	CUser *pUser = GetSession()->GetUser();
	if (pUser) {
		pUser->AddBytesWritten(GetBytesWritten());
		pUser->AddBytesRead(GetBytesRead());
	} else {
		CZNC::Get().AddBytesWritten(GetBytesWritten());
		CZNC::Get().AddBytesRead(GetBytesRead());
	}

	// bytes have been accounted for, so make sure they don't get again:
	ResetBytesWritten();
	ResetBytesRead();
}
예제 #4
0
파일: Socket.cpp 프로젝트: BlaXpirit/znc
CSocket::~CSocket() {
	CUser *pUser = nullptr;
	CIRCNetwork* pNetwork = nullptr;

	// CWebSock could cause us to have a nullptr pointer here
	if (m_pModule) {
		pUser = m_pModule->GetUser();
		pNetwork = m_pModule->GetNetwork();
		m_pModule->UnlinkSocket(this);
	}

	if (pNetwork && m_pModule && (m_pModule->GetType() == CModInfo::NetworkModule)) {
		pNetwork->AddBytesWritten(GetBytesWritten());
		pNetwork->AddBytesRead(GetBytesRead());
	} else if (pUser && m_pModule && (m_pModule->GetType() == CModInfo::UserModule)) {
		pUser->AddBytesWritten(GetBytesWritten());
		pUser->AddBytesRead(GetBytesRead());
	} else {
		CZNC::Get().AddBytesWritten(GetBytesWritten());
		CZNC::Get().AddBytesRead(GetBytesRead());
	}
}
예제 #5
0
CIRCSock::~CIRCSock() {
	const vector<CChan*>& vChans = m_pUser->GetChans();
	for (unsigned int a = 0; a < vChans.size(); a++) {
		vChans[a]->Reset();
	}

	m_pUser->IRCDisconnected();

	for (map<CString, CChan*>::iterator a = m_msChans.begin(); a != m_msChans.end(); ++a) {
		delete a->second;
	}

	if (!m_bISpoofReleased) {
		CZNC::Get().ReleaseISpoof();
	}

	Quit();
	m_msChans.clear();
	GetUser()->AddBytesRead(GetBytesRead());
	GetUser()->AddBytesWritten(GetBytesWritten());
}
예제 #6
0
파일: IRCSock.cpp 프로젝트: jimloco/znc
CIRCSock::~CIRCSock() {
	if (!m_bAuthed) {
		NETWORKMODULECALL(OnIRCConnectionError(this), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING);
	}

	const vector<CChan*>& vChans = m_pNetwork->GetChans();
	for (unsigned int a = 0; a < vChans.size(); a++) {
		vChans[a]->Reset();
	}

	m_pNetwork->IRCDisconnected();

	for (map<CString, CChan*>::iterator a = m_msChans.begin(); a != m_msChans.end(); ++a) {
		delete a->second;
	}

	Quit();
	m_msChans.clear();
	m_pNetwork->GetUser()->AddBytesRead(GetBytesRead());
	m_pNetwork->GetUser()->AddBytesWritten(GetBytesWritten());
}