diff options
author | George Hazan <ghazan@miranda.im> | 2019-02-07 12:21:16 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2019-02-07 12:21:16 +0300 |
commit | 9e78e93aefc5c8e9e0e96d9602da0a53ce506ade (patch) | |
tree | 8972f51d6d394ca5e794c828df54e90777516c07 /protocols | |
parent | e1c39a211d17ea4c04b62b5eca363194a66f5d11 (diff) |
MSN:
- fix for a bug in HtmlDecode;
- massive code cleaning
Diffstat (limited to 'protocols')
-rw-r--r-- | protocols/MSN/src/msn_commands.cpp | 1 | ||||
-rw-r--r-- | protocols/MSN/src/msn_libstr.cpp | 8 | ||||
-rw-r--r-- | protocols/MSN/src/msn_misc.cpp | 20 | ||||
-rw-r--r-- | protocols/MSN/src/stdafx.h | 124 |
4 files changed, 14 insertions, 139 deletions
diff --git a/protocols/MSN/src/msn_commands.cpp b/protocols/MSN/src/msn_commands.cpp index b3829d1d1f..2eb7a6cad3 100644 --- a/protocols/MSN/src/msn_commands.cpp +++ b/protocols/MSN/src/msn_commands.cpp @@ -428,7 +428,6 @@ void CMsnProto::MSN_ProcessURIObject(MCONTACT hContact, ezxml_t xmli) ft->std.hContact = hContact;
ft->tType = SERVER_HTTP;
- ft->p2p_appID = MSN_APPID_FILE;
mir_free(ft->std.szCurrentFile.w);
if (!((originalName = ezxml_child(xmli, "OriginalName")) && (pszFile = (char*)ezxml_attr(originalName, "v"))))
if ((originalName = ezxml_child(xmli, "meta")))
diff --git a/protocols/MSN/src/msn_libstr.cpp b/protocols/MSN/src/msn_libstr.cpp index e2ff878241..77890a1075 100644 --- a/protocols/MSN/src/msn_libstr.cpp +++ b/protocols/MSN/src/msn_libstr.cpp @@ -156,6 +156,14 @@ void HtmlDecode(char *str) else if (!strncmp(p, ">", 4)) { *q = '>'; p += 3; }
else if (!strncmp(p, "<", 4)) { *q = '<'; p += 3; }
else if (!strncmp(p, """, 6)) { *q = '"'; p += 5; }
+ else if (p[1] == '#') {
+ int c;
+ if (sscanf(p, "&#%d;", &c) == 1) {
+ *q = c;
+ p = strchr(p, ';');
+ }
+ else *q = *p;
+ }
else { *q = *p; }
}
else *q = *p;
diff --git a/protocols/MSN/src/msn_misc.cpp b/protocols/MSN/src/msn_misc.cpp index 2946b53418..3f22ea4e3d 100644 --- a/protocols/MSN/src/msn_misc.cpp +++ b/protocols/MSN/src/msn_misc.cpp @@ -900,9 +900,6 @@ filetransfer::filetransfer(CMsnProto* prt) filetransfer::~filetransfer(void)
{
- if (p2p_sessionid)
- proto->debugLogA("Destroying file transfer session %08X", p2p_sessionid);
-
WaitForSingleObject(hLockHandle, 2000);
CloseHandle(hLockHandle);
CloseHandle(hResumeEvt);
@@ -910,17 +907,12 @@ filetransfer::~filetransfer(void) if (fileId != -1)
_close(fileId);
- if (!bCompleted && p2p_appID == MSN_APPID_FILE) {
+ if (!bCompleted) {
std.pszFiles.w = nullptr;
std.totalFiles = 0;
proto->ProtoBroadcastAck(std.hContact, ACKTYPE_FILE, ACKRESULT_FAILED, this);
}
- mir_free(p2p_branch);
- mir_free(p2p_callID);
- mir_free(p2p_dest);
- mir_free(p2p_object);
-
mir_free(std.szCurrentFile.w);
mir_free(std.szWorkingDir.w);
if (std.pszFiles.w != nullptr) {
@@ -984,17 +976,9 @@ int filetransfer::openNext(void) if (fileId != -1) {
std.currentFileSize = _filelengthi64(fileId);
std.currentFileProgress = 0;
-
- p2p_sendmsgid = 0;
- p2p_byemsgid = 0;
tType = SERVER_NOTIFICATION;
- bAccepted = false;
-
- mir_free(p2p_branch); p2p_branch = nullptr;
- mir_free(p2p_callID); p2p_callID = nullptr;
}
- else
- proto->MSN_ShowError("Unable to open file '%s' for the file transfer, error %d", std.szCurrentFile.w, errno);
+ else proto->MSN_ShowError("Unable to open file '%s' for the file transfer, error %d", std.szCurrentFile.w, errno);
}
return fileId;
diff --git a/protocols/MSN/src/stdafx.h b/protocols/MSN/src/stdafx.h index ab5303e074..0155d6e8e8 100644 --- a/protocols/MSN/src/stdafx.h +++ b/protocols/MSN/src/stdafx.h @@ -326,7 +326,7 @@ public: void addString(const char* name, const char* szValue, unsigned flags = 0);
void addLong(const char* name, long lValue, unsigned flags = 0);
void addULong(const char* name, unsigned lValue);
- void addBool(const char* name, bool lValue);
+ void addBool(const char* name, bool lValue);
const char* operator[](const char* fieldName) { return find(fieldName); }
@@ -379,7 +379,7 @@ struct filetransfer void close(void);
void complete(void);
int create(void);
- int openNext(void);
+ int openNext(void);
CMsnProto* proto;
@@ -387,7 +387,6 @@ struct filetransfer bool bCanceled; // flag to interrupt a transfer
bool bCompleted; // was a FT ever completed?
- bool bAccepted; // was a FT ever completed?
int fileId; // handle of file being transferring (r/w)
@@ -396,125 +395,12 @@ struct filetransfer ThreadData *info;
TInfoType tType;
- TInfoType tTypeReq;
- time_t ts;
- clock_t nNotify;
- unsigned cf;
-
- bool p2p_waitack; // wait for ack
- bool p2p_isV2; // P2P V2
-
- unsigned p2p_sessionid; // session id
- unsigned p2p_acksessid; // acknowledged session id
- unsigned p2p_sendmsgid; // send message id
- unsigned p2p_byemsgid; // bye message id
- unsigned p2p_ackID; // number of ack's state
- unsigned p2p_appID; // application id: 1 = avatar, 2 = file transfer
- unsigned p2p_type; // application id: 1 = avatar, 2 = file transfer, 3 = custom emoticon
- char* p2p_branch; // header Branch: field
- char* p2p_callID; // header Call-ID: field
- char* p2p_dest; // destination e-mail address
- char* p2p_object; // MSN object for a transfer
+ unsigned cf;
//---- receiving a file
char* szInvcookie; // cookie for receiving
-
- unsigned __int64 lstFilePtr;
};
-struct directconnection
-{
- directconnection(const char* CallID, const char* Wlid);
- ~directconnection();
-
- char* calcHashedNonce(UUID* nonce);
- char* mNonceToText(void);
- char* mNonceToHash(void) { return calcHashedNonce(mNonce); }
- void xNonceToBin(UUID* nonce);
-
- UUID* mNonce;
- char* xNonce;
-
- char* callId;
- char* wlid;
-
- time_t ts;
-
- bool useHashedNonce;
- bool bAccepted;
-
- CMsnProto* proto;
-};
-
-
-#pragma pack(1)
-
-typedef struct _tag_HFileContext
-{
- unsigned len;
- unsigned ver;
- unsigned __int64 dwSize;
- unsigned type;
- wchar_t wszFileName[MAX_PATH];
- char unknown[30];
- unsigned id;
- char unknown2[64];
-} HFileContext;
-
-struct P2PB_Header
-{
- virtual char* parseMsg(char *buf) = 0;
- virtual char* createMsg(char *buf, const char* wlid, CMsnProto *ppro) = 0;
- virtual bool isV2Hdr(void) = 0;
- virtual void logHeader(CMsnProto *ppro) = 0;
-};
-
-struct P2P_Header : P2PB_Header
-{
- unsigned mSessionID;
- unsigned mID;
- unsigned __int64 mOffset;
- unsigned __int64 mTotalSize;
- unsigned mPacketLen;
- unsigned mFlags;
- unsigned mAckSessionID;
- unsigned mAckUniqueID;
- unsigned __int64 mAckDataSize;
-
- P2P_Header() { memset(&mSessionID, 0, 48); }
- P2P_Header(char *buf) { parseMsg(buf); }
-
- char* parseMsg(char *buf) { memcpy(&mSessionID, buf, 48); return buf + 48; }
- char* createMsg(char *buf, const char* wlid, CMsnProto *ppro);
- bool isV2Hdr(void) { return false; }
- void logHeader(CMsnProto *ppro);
-} ;
-
-struct P2PV2_Header : P2PB_Header
-{
- unsigned mSessionID;
- unsigned mID;
- const char* mCap;
- unsigned __int64 mRemSize;
- unsigned mPacketLen;
- unsigned mPacketNum;
- unsigned mAckUniqueID;
- unsigned char mOpCode;
- unsigned char mTFCode;
-
- P2PV2_Header() { memset(&mSessionID, 0, ((char*)&mTFCode - (char*)&mSessionID) + sizeof(mTFCode)); }
- P2PV2_Header(char *buf) { parseMsg(buf); }
-
- char* parseMsg(char *buf);
- char* createMsg(char *buf, const char* wlid, CMsnProto *ppro);
- bool isV2Hdr(void) { return true; }
- void logHeader(CMsnProto *ppro);
-};
-
-#pragma pack()
-
-bool p2p_IsDlFileOk(filetransfer* ft);
-
/////////////////////////////////////////////////////////////////////////////////////////
// Thread handling functions and datatypes
@@ -986,8 +872,6 @@ typedef struct _tag_MyConnectionType const IN_ADDR GetMyExtIP(void) { return *((PIN_ADDR)&extIP); }
const char* GetMyExtIPStr(void) { return inet_ntoa(GetMyExtIP()); }
const char* GetMyUdpConStr(void) { return conStr[udpConType]; }
- void SetUdpCon(const char* str);
- void CalculateWeight(void);
} MyConnectionType;
struct chunkedmsg
@@ -1027,4 +911,4 @@ struct InviteChatParam }
};
-INT_PTR CALLBACK DlgInviteToChat(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
\ No newline at end of file +INT_PTR CALLBACK DlgInviteToChat(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|