summaryrefslogtreecommitdiff
path: root/protocols/IcqOscarJ
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2018-07-09 15:03:29 +0300
committerGeorge Hazan <ghazan@miranda.im>2018-07-09 15:03:29 +0300
commitb5fdc3576be1c5fa17db089eac33f57912817fcf (patch)
tree749b42e14aa5c877fdc6075b57a948e5467095ed /protocols/IcqOscarJ
parent4b99b5b4abad1cf12ac5c7bbb8788899ba6a48ab (diff)
ICQ: code cleaning
Diffstat (limited to 'protocols/IcqOscarJ')
-rw-r--r--protocols/IcqOscarJ/src/fam_01service.cpp2
-rw-r--r--protocols/IcqOscarJ/src/icq_proto.h12
-rw-r--r--protocols/IcqOscarJ/src/icqosc_svcs.cpp6
-rw-r--r--protocols/IcqOscarJ/src/stdpackets.cpp32
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<CIcqProto>
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<CIcqProto>
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)
{