summaryrefslogtreecommitdiff
path: root/MySpace/server_con.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'MySpace/server_con.cpp')
-rw-r--r--MySpace/server_con.cpp27
1 files changed, 25 insertions, 2 deletions
diff --git a/MySpace/server_con.cpp b/MySpace/server_con.cpp
index 71ebe09..c79ecd3 100644
--- a/MySpace/server_con.cpp
+++ b/MySpace/server_con.cpp
@@ -265,7 +265,7 @@ void try_login(NetMessage &msg, HANDLE connection) {
}
}
-void ParseStatusMessage(HANDLE hContact, PipedStringList &l) {
+int ParseStatusMessage(HANDLE hContact, PipedStringList &l) {
int stat = stat_myspace_to_mir(l.get_int(1));
if(stat == ID_STATUS_IDLE) {
DBWriteContactSettingDword(hContact, MODULE, "IdleTS", (DWORD)time(0));
@@ -276,6 +276,7 @@ void ParseStatusMessage(HANDLE hContact, PipedStringList &l) {
char smsg[512];
if(l.get_string(3, smsg, 512))
DBWriteContactSettingStringUtf(hContact, MODULE, "StatusMsg", smsg);
+ return stat;
}
void __cdecl CheckMailThreadFunc(void*) {
@@ -458,6 +459,17 @@ void __cdecl ServerThreadFunc(void*) {
// start mail checking thread
mir_forkthread(CheckMailThreadFunc, 0);
+ } else if(msg.get_int("bm") == 200) { // action message
+ int uid = msg.get_int("f");
+ if(uid) {
+ HANDLE hContact = FindContact(uid);
+ if(hContact) {
+ char cmv[256];
+ if(msg.get_string("msg", cmv, 256)) {
+ DBWriteContactSettingStringUtf(hContact, MODULE, "MirVer", cmv);
+ }
+ }
+ }
} else if(msg.get_int("bm") == 100) { // status message
int uid = msg.get_int("f");
if(uid) {
@@ -467,7 +479,16 @@ void __cdecl ServerThreadFunc(void*) {
LookupUID(uid);
}
PipedStringList l = msg.get_list("msg");
- ParseStatusMessage(hContact, l);
+ if(ParseStatusMessage(hContact, l) == ID_STATUS_ONLINE && status != ID_STATUS_INVISIBLE) {
+ ClientNetMessage msg;
+ msg.add_int("bm", 200);
+ msg.add_int("sesskey", sesskey);
+ msg.add_int("t", DBGetContactSettingDword(hContact, MODULE, "UID", 0));
+ msg.add_int("f", my_uid);
+ msg.add_int("cv", CLIENT_VER);
+ msg.add_string("msg", mir_ver);
+ SendMessage(msg);
+ }
}
} else if(msg.get_int("bm") == 121) { // action message
int uid = msg.get_int("f");
@@ -495,6 +516,7 @@ void __cdecl ServerThreadFunc(void*) {
pre.flags = PREF_UTF;
pre.szMessage = rmsg;
pre.timestamp = (DWORD)time(0);
+ pre.lParam = EVENTTYPE_ZAP;
CCSDATA css = {0};
css.hContact = hContact;
@@ -528,6 +550,7 @@ void __cdecl ServerThreadFunc(void*) {
pre.flags = PREF_UTF;
pre.szMessage = text;
pre.timestamp = (DWORD)time(0);
+ pre.lParam = EVENTTYPE_MESSAGE;
CCSDATA css = {0};
css.hContact = hContact;