From b5fdc3576be1c5fa17db089eac33f57912817fcf Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 9 Jul 2018 15:03:29 +0300 Subject: ICQ: code cleaning --- protocols/IcqOscarJ/src/fam_01service.cpp | 2 +- protocols/IcqOscarJ/src/icq_proto.h | 12 ++++++------ protocols/IcqOscarJ/src/icqosc_svcs.cpp | 6 ++++-- protocols/IcqOscarJ/src/stdpackets.cpp | 32 +++++++++++++++++-------------- 4 files changed, 29 insertions(+), 23 deletions(-) diff --git a/protocols/IcqOscarJ/src/fam_01service.cpp b/protocols/IcqOscarJ/src/fam_01service.cpp index 9d1c54a498..1ecf131676 100644 --- a/protocols/IcqOscarJ/src/fam_01service.cpp +++ b/protocols/IcqOscarJ/src/fam_01service.cpp @@ -774,7 +774,7 @@ void CIcqProto::handleServUINSettings(int nPort, serverthread_info *info) packDWord(&packet, 0x00000000); sendServPacket(&packet); - m_bIdleAllow = 0; + m_bIdleMode = false; // Change status SetCurrentStatus(m_iDesiredStatus); diff --git a/protocols/IcqOscarJ/src/icq_proto.h b/protocols/IcqOscarJ/src/icq_proto.h index b3d7939aab..03606edf51 100644 --- a/protocols/IcqOscarJ/src/icq_proto.h +++ b/protocols/IcqOscarJ/src/icq_proto.h @@ -151,14 +151,14 @@ struct CIcqProto : public PROTO mir_cs localSeqMutex; mir_cs connectionHandleMutex; - int m_bIdleAllow; + bool m_bIdleMode; DWORD m_dwLocalUIN; - BYTE m_bConnectionLost; + BYTE m_bConnectionLost; - char m_szPassword[PASSWORDMAXLEN+1]; - BYTE m_bRememberPwd; + char m_szPassword[PASSWORDMAXLEN+1]; + BYTE m_bRememberPwd; - int cheekySearchId; + int cheekySearchId; DWORD cheekySearchUin; char* cheekySearchUid; @@ -672,7 +672,7 @@ struct CIcqProto : public PROTO void icq_requestnewfamily(WORD wFamily, void (CIcqProto::*familyhandler)(HNETLIBCONN hConn, char* cookie, size_t cookieLen)); - void icq_setidle(int bAllow); + void icq_setidle(bool bIsIdle); void icq_setstatus(WORD wStatus, const char *szStatusNote = nullptr); DWORD icq_sendGetInfoServ(MCONTACT hContact, DWORD, int); DWORD icq_sendGetAimProfileServ(MCONTACT hContact, char *szUid); diff --git a/protocols/IcqOscarJ/src/icqosc_svcs.cpp b/protocols/IcqOscarJ/src/icqosc_svcs.cpp index 1a5f54c28b..8ee95b8e95 100644 --- a/protocols/IcqOscarJ/src/icqosc_svcs.cpp +++ b/protocols/IcqOscarJ/src/icqosc_svcs.cpp @@ -422,15 +422,17 @@ int CIcqProto::OnIdleChanged(WPARAM, LPARAM lParam) { int bIdle = (lParam & IDF_ISIDLE); int bPrivacy = (lParam & IDF_PRIVACY); - if (bPrivacy) + if (bPrivacy) { + debugLogA("ICQ: idle mode ignored due to the private mode: %08x", lParam); return 0; + } setDword("IdleTS", bIdle ? time(0) : 0); if (m_bTempVisListEnabled) // remove temporary visible users sendEntireListServ(ICQ_BOS_FAMILY, ICQ_CLI_REMOVETEMPVISIBLE, BUL_TEMPVISIBLE); - icq_setidle(bIdle ? 1 : 0); + icq_setidle(bIdle != 0); return 0; } diff --git a/protocols/IcqOscarJ/src/stdpackets.cpp b/protocols/IcqOscarJ/src/stdpackets.cpp index f098af95cb..57f3d9fc88 100644 --- a/protocols/IcqOscarJ/src/stdpackets.cpp +++ b/protocols/IcqOscarJ/src/stdpackets.cpp @@ -216,23 +216,27 @@ void CIcqProto::icq_requestnewfamily(WORD wFamily, void (CIcqProto::*familyhandl sendServPacket(&packet); } -void CIcqProto::icq_setidle(int bAllow) +void CIcqProto::icq_setidle(bool bIsIdle) { - if (bAllow != m_bIdleAllow) { - /* SNAC 1,11 */ - icq_packet packet; - serverPacketInit(&packet, 14); - packFNACHeader(&packet, ICQ_SERVICE_FAMILY, ICQ_CLIENT_SET_IDLE); - if (bAllow == 1) - packDWord(&packet, 0x0000003C); - else - packDWord(&packet, 0x00000000); - - m_bIdleAllow = bAllow; - sendServPacket(&packet); + // if mode isn't changed, don't spam the server + if (bIsIdle == m_bIdleMode) { + debugLogA("ICQ: idle mode wasn't changed (%d)", bIsIdle); + return; } -} + /* SNAC 1,11 */ + debugLogA("ICQ: set idle %d", bIsIdle); + icq_packet packet; + serverPacketInit(&packet, 14); + packFNACHeader(&packet, ICQ_SERVICE_FAMILY, ICQ_CLIENT_SET_IDLE); + if (bIsIdle) + packDWord(&packet, 0x0000003C); + else + packDWord(&packet, 0x00000000); + + m_bIdleMode = bIsIdle; + sendServPacket(&packet); +} void CIcqProto::icq_setstatus(WORD wStatus, const char *szStatusNote) { -- cgit v1.2.3