diff options
author | George Hazan <george.hazan@gmail.com> | 2012-09-11 19:28:53 +0000 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2012-09-11 19:28:53 +0000 |
commit | 274cffbbffa950ddf286092b52f03f76ec61a301 (patch) | |
tree | 5aeb062d27c79d1fbc15eaf033da943630bcbf84 /protocols/MRA/MraFilesQueue.cpp | |
parent | 482be69d327aef60a9a654b8cc6a5e6646d095de (diff) |
slightly refactored MRA
git-svn-id: http://svn.miranda-ng.org/main/trunk@1564 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/MRA/MraFilesQueue.cpp')
-rw-r--r-- | protocols/MRA/MraFilesQueue.cpp | 1505 |
1 files changed, 714 insertions, 791 deletions
diff --git a/protocols/MRA/MraFilesQueue.cpp b/protocols/MRA/MraFilesQueue.cpp index 75b25a4f78..5e12fee80f 100644 --- a/protocols/MRA/MraFilesQueue.cpp +++ b/protocols/MRA/MraFilesQueue.cpp @@ -2,169 +2,144 @@ #include "MraFilesQueue.h"
#include "proto.h"
-
-
-
#define MRA_FT_HELLO "MRA_FT_HELLO"
#define MRA_FT_GET_FILE "MRA_FT_GET_FILE"
-
-
-typedef struct
+struct MRA_FILES_QUEUE : public LIST_MT
{
- LIST_MT lmtListMT;
DWORD dwSendTimeOutInterval;
-} MRA_FILES_QUEUE;
-
-
+};
struct MRA_FILES_QUEUE_FILE
{
LPWSTR lpwszName;
- SIZE_T dwNameLen;
+ size_t dwNameLen;
DWORDLONG dwSize;
};
-
-
-
-typedef struct
+struct MRA_FILES_QUEUE_ITEM : public LIST_MT_ITEM
{
// internal
- LIST_MT_ITEM lmtListMTItem;
- BOOL bIsWorking;
- DWORD dwSendTime;
- // external
- DWORD dwIDRequest;
- DWORD dwFlags;
- HANDLE hContact;
- DWORDLONG dwFilesCount;
- DWORDLONG dwFilesTotalSize;
- MRA_FILES_QUEUE_FILE *pmfqfFiles;
- LPWSTR pwszFilesList;
- LPWSTR pwszDescription;
- MRA_ADDR_LIST malAddrList;
- LPWSTR lpwszPath;
- SIZE_T dwPathSize;
- BOOL bSending;
- HANDLE hConnection;
- HANDLE hListen;
- HANDLE hThread;
- HANDLE hWaitHandle;
- HANDLE hMraMrimProxyData;
-
-} MRA_FILES_QUEUE_ITEM;
-
+ BOOL bIsWorking;
+ DWORD dwSendTime;
+ // external
+ CMraProto *ppro;
+ DWORD dwIDRequest;
+ DWORD dwFlags;
+ HANDLE hContact;
+ DWORDLONG dwFilesCount;
+ DWORDLONG dwFilesTotalSize;
+ MRA_FILES_QUEUE_FILE *pmfqfFiles;
+ LPWSTR pwszFilesList;
+ LPWSTR pwszDescription;
+ MRA_ADDR_LIST malAddrList;
+ LPWSTR lpwszPath;
+ size_t dwPathSize;
+ BOOL bSending;
+ HANDLE hConnection;
+ HANDLE hListen;
+ HANDLE hThread;
+ HANDLE hWaitHandle;
+ HANDLE hMraMrimProxyData;
+};
struct MRA_FILES_THREADPROC_PARAMS
{
HANDLE hFilesQueueHandle;
- MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem;
+ MRA_FILES_QUEUE_ITEM *dat;
};
-//#define MEMALLOC(Size) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(Size+sizeof(SIZE_T)))
-//#define MEMREALLOC(Mem,Size) HeapReAlloc(GetProcessHeap(),(HEAP_ZERO_MEMORY),(LPVOID)Mem,(Size+sizeof(SIZE_T)))
-//#define MEMFREE(Mem) if (Mem) {HeapFree(GetProcessHeap(),0,(LPVOID)Mem);Mem=NULL;}
+//#define mir_calloc(Size) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (Size+sizeof(size_t)))
+//#define mir_realloc(Mem, Size) HeapReAlloc(GetProcessHeap(), (HEAP_ZERO_MEMORY), (LPVOID)Mem, (Size+sizeof(size_t)))
+//#define mir_free(Mem) if (Mem) {HeapFree(GetProcessHeap(), 0, (LPVOID)Mem);Mem = NULL;}
-DWORD MraFilesQueueItemFindByID (HANDLE hFilesQueueHandle,DWORD dwIDRequest,MRA_FILES_QUEUE_ITEM **ppmrafqFilesQueueItem);
-//DWORD MraFilesQueueItemFindByEMail (HANDLE hFilesQueueHandle,LPSTR lpszEMail,SIZE_T dwEMailSize,MRA_FILES_QUEUE_ITEM **ppmrafqFilesQueueItem);
-void MraFilesQueueItemFree (MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem);
-SIZE_T MraFilesQueueGetLocalAddressesList (LPSTR lpszBuff,SIZE_T dwBuffSize,DWORD dwPort);
+DWORD MraFilesQueueItemFindByID(HANDLE hFilesQueueHandle, DWORD dwIDRequest, MRA_FILES_QUEUE_ITEM **ppmrafqFilesQueueItem);
+void MraFilesQueueItemFree(MRA_FILES_QUEUE_ITEM *dat);
-BOOL MraFilesQueueHandCheck (HANDLE hConnection,MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem);
-void MraFilesQueueConnectionReceived (HANDLE hNewConnection,DWORD dwRemoteIP,void *pExtra);
-
-void MraFilesQueueRecvThreadProc (LPVOID lpParameter);
-void MraFilesQueueSendThreadProc (LPVOID lpParameter);
-
-
-
-void MraFilesQueueDlgEnableDirectConsControls(HWND hWndDlg,BOOL bEnabled)
+void MraFilesQueueDlgEnableDirectConsControls(HWND hWndDlg, BOOL bEnabled)
{
- WORD wMraFilesControlsList[]={
- IDC_FILE_SEND_NOOUTCONNECTIONONRECEIVE,
- IDC_FILE_SEND_NOOUTCONNECTIONONSEND,
- IDC_FILE_SEND_IGNORYADDITIONALPORTS,
- IDC_FILE_SEND_HIDE_MY_ADDRESSES,
- IDC_FILE_SEND_ADD_EXTRA_ADDRESS,
+ WORD wMraFilesControlsList[] = {
+ IDC_FILE_SEND_NOOUTCONNECTIONONRECEIVE,
+ IDC_FILE_SEND_NOOUTCONNECTIONONSEND,
+ IDC_FILE_SEND_IGNORYADDITIONALPORTS,
+ IDC_FILE_SEND_HIDE_MY_ADDRESSES,
+ IDC_FILE_SEND_ADD_EXTRA_ADDRESS,
IDC_FILE_SEND_EXTRA_ADDRESS
};
- EnableControlsArray(hWndDlg,(WORD*)&wMraFilesControlsList,SIZEOF(wMraFilesControlsList),bEnabled);
- EnableWindow(GetDlgItem(hWndDlg,IDC_FILE_SEND_EXTRA_ADDRESS),(bEnabled && IS_DLG_BUTTON_CHECKED(hWndDlg,IDC_FILE_SEND_ADD_EXTRA_ADDRESS)));
+ EnableControlsArray(hWndDlg, (WORD*)&wMraFilesControlsList, SIZEOF(wMraFilesControlsList), bEnabled);
+ EnableWindow(GetDlgItem(hWndDlg, IDC_FILE_SEND_EXTRA_ADDRESS), (bEnabled && IS_DLG_BUTTON_CHECKED(hWndDlg, IDC_FILE_SEND_ADD_EXTRA_ADDRESS)));
}
INT_PTR CALLBACK MraFilesQueueDlgProcOpts(HWND hWndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
- switch(msg){
+ CMraProto *ppro = (CMraProto*)GetWindowLongPtr(hWndDlg, GWLP_USERDATA);
+
+ switch (msg) {
case WM_INITDIALOG:
+ TranslateDialogDefault(hWndDlg);
+ SetWindowLongPtr(hWndDlg, GWLP_USERDATA, lParam);
{
WCHAR szBuff[MAX_PATH];
+ CHECK_DLG_BUTTON(hWndDlg, IDC_FILE_SEND_ENABLE_DIRECT_CONN, ppro->mraGetByte(NULL, "FileSendEnableDirectConn", MRA_DEF_FS_ENABLE_DIRECT_CONN));
+ CHECK_DLG_BUTTON(hWndDlg, IDC_FILE_SEND_NOOUTCONNECTIONONRECEIVE, ppro->mraGetByte(NULL, "FileSendNoOutConnOnRcv", MRA_DEF_FS_NO_OUT_CONN_ON_RCV));
+ CHECK_DLG_BUTTON(hWndDlg, IDC_FILE_SEND_NOOUTCONNECTIONONSEND, ppro->mraGetByte(NULL, "FileSendNoOutConnOnSend", MRA_DEF_FS_NO_OUT_CONN_ON_SEND));
+ CHECK_DLG_BUTTON(hWndDlg, IDC_FILE_SEND_IGNORYADDITIONALPORTS, ppro->mraGetByte(NULL, "FileSendIgnoryAdditionalPorts", MRA_DEF_FS_IGNORY_ADDITIONAL_PORTS));
+ CHECK_DLG_BUTTON(hWndDlg, IDC_FILE_SEND_HIDE_MY_ADDRESSES, ppro->mraGetByte(NULL, "FileSendHideMyAddresses", MRA_DEF_FS_HIDE_MY_ADDRESSES));
+ CHECK_DLG_BUTTON(hWndDlg, IDC_FILE_SEND_ADD_EXTRA_ADDRESS, ppro->mraGetByte(NULL, "FileSendAddExtraAddresses", MRA_DEF_FS_ADD_EXTRA_ADDRESSES));
- TranslateDialogDefault(hWndDlg);
-
- CHECK_DLG_BUTTON(hWndDlg,IDC_FILE_SEND_ENABLE_DIRECT_CONN,DB_Mra_GetByte(NULL,"FileSendEnableDirectConn",MRA_DEF_FS_ENABLE_DIRECT_CONN));
- CHECK_DLG_BUTTON(hWndDlg,IDC_FILE_SEND_NOOUTCONNECTIONONRECEIVE,DB_Mra_GetByte(NULL,"FileSendNoOutConnOnRcv",MRA_DEF_FS_NO_OUT_CONN_ON_RCV));
- CHECK_DLG_BUTTON(hWndDlg,IDC_FILE_SEND_NOOUTCONNECTIONONSEND,DB_Mra_GetByte(NULL,"FileSendNoOutConnOnSend",MRA_DEF_FS_NO_OUT_CONN_ON_SEND));
- CHECK_DLG_BUTTON(hWndDlg,IDC_FILE_SEND_IGNORYADDITIONALPORTS,DB_Mra_GetByte(NULL,"FileSendIgnoryAdditionalPorts",MRA_DEF_FS_IGNORY_ADDITIONAL_PORTS));
- CHECK_DLG_BUTTON(hWndDlg,IDC_FILE_SEND_HIDE_MY_ADDRESSES,DB_Mra_GetByte(NULL,"FileSendHideMyAddresses",MRA_DEF_FS_HIDE_MY_ADDRESSES));
- CHECK_DLG_BUTTON(hWndDlg,IDC_FILE_SEND_ADD_EXTRA_ADDRESS,DB_Mra_GetByte(NULL,"FileSendAddExtraAddresses",MRA_DEF_FS_ADD_EXTRA_ADDRESSES));
- if (DB_Mra_GetStaticStringW(NULL,"FileSendExtraAddresses",szBuff,SIZEOF(szBuff),NULL))
- {
- SET_DLG_ITEM_TEXT(hWndDlg,IDC_FILE_SEND_EXTRA_ADDRESS,szBuff);
- }
+ if (ppro->mraGetStaticStringW(NULL, "FileSendExtraAddresses", szBuff, SIZEOF(szBuff), NULL))
+ SET_DLG_ITEM_TEXT(hWndDlg, IDC_FILE_SEND_EXTRA_ADDRESS, szBuff);
- CHECK_DLG_BUTTON(hWndDlg,IDC_FILE_SEND_ENABLE_MRIMPROXY_CONS,DB_Mra_GetByte(NULL,"FileSendEnableMRIMProxyCons",MRA_DEF_FS_ENABLE_MRIM_PROXY_CONS));
+ CHECK_DLG_BUTTON(hWndDlg, IDC_FILE_SEND_ENABLE_MRIMPROXY_CONS, ppro->mraGetByte(NULL, "FileSendEnableMRIMProxyCons", MRA_DEF_FS_ENABLE_MRIM_PROXY_CONS));
- SetDlgItemInt(hWndDlg,IDC_FILE_SEND_BLOCK_SIZE,DB_Mra_GetDword(NULL,"FileSendBlockSize",MRA_DEFAULT_FILE_SEND_BLOCK_SIZE),FALSE);
+ SetDlgItemInt(hWndDlg, IDC_FILE_SEND_BLOCK_SIZE, ppro->mraGetDword(NULL, "FileSendBlockSize", MRA_DEFAULT_FILE_SEND_BLOCK_SIZE), FALSE);
- MraFilesQueueDlgEnableDirectConsControls(hWndDlg,IS_DLG_BUTTON_CHECKED(hWndDlg,IDC_FILE_SEND_ENABLE_DIRECT_CONN));
+ MraFilesQueueDlgEnableDirectConsControls(hWndDlg, IS_DLG_BUTTON_CHECKED(hWndDlg, IDC_FILE_SEND_ENABLE_DIRECT_CONN));
}
- return(TRUE);
+ return TRUE;
+
case WM_COMMAND:
- if (LOWORD(wParam)==IDC_FILE_SEND_ENABLE_DIRECT_CONN)
- {
- MraFilesQueueDlgEnableDirectConsControls(hWndDlg,IS_DLG_BUTTON_CHECKED(hWndDlg,IDC_FILE_SEND_ENABLE_DIRECT_CONN));
- }
+ if (LOWORD(wParam) == IDC_FILE_SEND_ENABLE_DIRECT_CONN)
+ MraFilesQueueDlgEnableDirectConsControls(hWndDlg, IS_DLG_BUTTON_CHECKED(hWndDlg, IDC_FILE_SEND_ENABLE_DIRECT_CONN));
- if (LOWORD(wParam)==IDC_FILE_SEND_ADD_EXTRA_ADDRESS)
- {
- EnableWindow(GetDlgItem(hWndDlg,IDC_FILE_SEND_EXTRA_ADDRESS),IS_DLG_BUTTON_CHECKED(hWndDlg,IDC_FILE_SEND_ADD_EXTRA_ADDRESS));
- }
+ if (LOWORD(wParam) == IDC_FILE_SEND_ADD_EXTRA_ADDRESS)
+ EnableWindow(GetDlgItem(hWndDlg, IDC_FILE_SEND_EXTRA_ADDRESS), IS_DLG_BUTTON_CHECKED(hWndDlg, IDC_FILE_SEND_ADD_EXTRA_ADDRESS));
- if ((LOWORD(wParam)==IDC_FILE_SEND_EXTRA_ADDRESS || LOWORD(wParam)==IDC_FILE_SEND_BLOCK_SIZE) && (HIWORD(wParam)!=EN_CHANGE || (HWND)lParam!=GetFocus())) return(FALSE);
- SendMessage(GetParent(hWndDlg),PSM_CHANGED,0,0);
+ if ((LOWORD(wParam) == IDC_FILE_SEND_EXTRA_ADDRESS || LOWORD(wParam) == IDC_FILE_SEND_BLOCK_SIZE) && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) return FALSE;
+ SendMessage(GetParent(hWndDlg), PSM_CHANGED, 0, 0);
break;
+
case WM_NOTIFY:
- switch (((LPNMHDR)lParam)->code){
+ switch (((LPNMHDR)lParam)->code) {
case PSN_APPLY:
{
WCHAR szBuff[MAX_PATH];
- DB_Mra_SetByte(NULL,"FileSendEnableDirectConn",IS_DLG_BUTTON_CHECKED(hWndDlg,IDC_FILE_SEND_ENABLE_DIRECT_CONN));
- DB_Mra_SetByte(NULL,"FileSendNoOutConnOnRcv",IS_DLG_BUTTON_CHECKED(hWndDlg,IDC_FILE_SEND_NOOUTCONNECTIONONRECEIVE));
- DB_Mra_SetByte(NULL,"FileSendNoOutConnOnSend",IS_DLG_BUTTON_CHECKED(hWndDlg,IDC_FILE_SEND_NOOUTCONNECTIONONSEND));
- DB_Mra_SetByte(NULL,"FileSendIgnoryAdditionalPorts",IS_DLG_BUTTON_CHECKED(hWndDlg,IDC_FILE_SEND_IGNORYADDITIONALPORTS));
- DB_Mra_SetByte(NULL,"FileSendHideMyAddresses",IS_DLG_BUTTON_CHECKED(hWndDlg,IDC_FILE_SEND_HIDE_MY_ADDRESSES));
- DB_Mra_SetByte(NULL,"FileSendAddExtraAddresses",IS_DLG_BUTTON_CHECKED(hWndDlg,IDC_FILE_SEND_ADD_EXTRA_ADDRESS));
- GET_DLG_ITEM_TEXT(hWndDlg,IDC_FILE_SEND_EXTRA_ADDRESS,szBuff,SIZEOF(szBuff));
- DB_Mra_SetStringW(NULL,"FileSendExtraAddresses",szBuff);
- DB_Mra_SetDword(NULL,"FileSendBlockSize",(DWORD)GetDlgItemInt(hWndDlg,IDC_FILE_SEND_BLOCK_SIZE,NULL,FALSE));
- DB_Mra_SetByte(NULL,"FileSendEnableMRIMProxyCons",IS_DLG_BUTTON_CHECKED(hWndDlg,IDC_FILE_SEND_ENABLE_MRIMPROXY_CONS));
+ ppro->mraSetByte(NULL, "FileSendEnableDirectConn", IS_DLG_BUTTON_CHECKED(hWndDlg, IDC_FILE_SEND_ENABLE_DIRECT_CONN));
+ ppro->mraSetByte(NULL, "FileSendNoOutConnOnRcv", IS_DLG_BUTTON_CHECKED(hWndDlg, IDC_FILE_SEND_NOOUTCONNECTIONONRECEIVE));
+ ppro->mraSetByte(NULL, "FileSendNoOutConnOnSend", IS_DLG_BUTTON_CHECKED(hWndDlg, IDC_FILE_SEND_NOOUTCONNECTIONONSEND));
+ ppro->mraSetByte(NULL, "FileSendIgnoryAdditionalPorts", IS_DLG_BUTTON_CHECKED(hWndDlg, IDC_FILE_SEND_IGNORYADDITIONALPORTS));
+ ppro->mraSetByte(NULL, "FileSendHideMyAddresses", IS_DLG_BUTTON_CHECKED(hWndDlg, IDC_FILE_SEND_HIDE_MY_ADDRESSES));
+ ppro->mraSetByte(NULL, "FileSendAddExtraAddresses", IS_DLG_BUTTON_CHECKED(hWndDlg, IDC_FILE_SEND_ADD_EXTRA_ADDRESS));
+ GET_DLG_ITEM_TEXT(hWndDlg, IDC_FILE_SEND_EXTRA_ADDRESS, szBuff, SIZEOF(szBuff));
+ ppro->mraSetStringW(NULL, "FileSendExtraAddresses", szBuff);
+ ppro->mraSetDword(NULL, "FileSendBlockSize", (DWORD)GetDlgItemInt(hWndDlg, IDC_FILE_SEND_BLOCK_SIZE, NULL, FALSE));
+ ppro->mraSetByte(NULL, "FileSendEnableMRIMProxyCons", IS_DLG_BUTTON_CHECKED(hWndDlg, IDC_FILE_SEND_ENABLE_MRIMPROXY_CONS));
}
- return(TRUE);
+ return TRUE;
}
break;
}
-return(FALSE);
+return FALSE;
}
-DWORD MraFilesQueueInitialize(DWORD dwSendTimeOutInterval,HANDLE *phFilesQueueHandle)
+DWORD MraFilesQueueInitialize(DWORD dwSendTimeOutInterval, HANDLE *phFilesQueueHandle)
{
DWORD dwRetErrorCode;
@@ -172,22 +147,22 @@ DWORD MraFilesQueueInitialize(DWORD dwSendTimeOutInterval,HANDLE *phFilesQueueHa {
MRA_FILES_QUEUE *pmrafqFilesQueue;
- pmrafqFilesQueue=(MRA_FILES_QUEUE*)MEMALLOC(sizeof(MRA_FILES_QUEUE));
+ pmrafqFilesQueue = (MRA_FILES_QUEUE*)mir_calloc(sizeof(MRA_FILES_QUEUE));
if (pmrafqFilesQueue)
{
- dwRetErrorCode=ListMTInitialize(&pmrafqFilesQueue->lmtListMT,0);
- if (dwRetErrorCode==NO_ERROR)
+ dwRetErrorCode = ListMTInitialize(pmrafqFilesQueue, 0);
+ if (dwRetErrorCode == NO_ERROR)
{
- pmrafqFilesQueue->dwSendTimeOutInterval=dwSendTimeOutInterval;
- (*phFilesQueueHandle)=(HANDLE)pmrafqFilesQueue;
- }else{
- MEMFREE(pmrafqFilesQueue);
+ pmrafqFilesQueue->dwSendTimeOutInterval = dwSendTimeOutInterval;
+ (*phFilesQueueHandle) = (HANDLE)pmrafqFilesQueue;
+ }else {
+ mir_free(pmrafqFilesQueue);
}
- }else{
- dwRetErrorCode=GetLastError();
+ }else {
+ dwRetErrorCode = GetLastError();
}
- }else{
- dwRetErrorCode=ERROR_INVALID_HANDLE;
+ }else {
+ dwRetErrorCode = ERROR_INVALID_HANDLE;
}
return(dwRetErrorCode);
}
@@ -197,164 +172,123 @@ void MraFilesQueueDestroy(HANDLE hFilesQueueHandle) {
if (hFilesQueueHandle)
{
- MRA_FILES_QUEUE *pmrafqFilesQueue=(MRA_FILES_QUEUE*)hFilesQueueHandle;
- MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem;
+ MRA_FILES_QUEUE *pmrafqFilesQueue = (MRA_FILES_QUEUE*)hFilesQueueHandle;
+ MRA_FILES_QUEUE_ITEM *dat;
- ListMTLock(&pmrafqFilesQueue->lmtListMT);
- while(ListMTItemGetFirst(&pmrafqFilesQueue->lmtListMT,NULL,(LPVOID*)&pmrafqFilesQueueItem)==NO_ERROR)
+ ListMTLock(pmrafqFilesQueue);
+ while( ListMTItemGetFirst(pmrafqFilesQueue, NULL, (LPVOID*)&dat) == NO_ERROR)
{
- MraFilesQueueItemFree(pmrafqFilesQueueItem);
+ MraFilesQueueItemFree(dat);
}
- ListMTUnLock(&pmrafqFilesQueue->lmtListMT);
+ ListMTUnLock(pmrafqFilesQueue);
- ListMTDestroy(&pmrafqFilesQueue->lmtListMT);
- MEMFREE(pmrafqFilesQueue);
+ ListMTDestroy(pmrafqFilesQueue);
+ mir_free(pmrafqFilesQueue);
}
}
-DWORD MraFilesQueueItemFindByID(HANDLE hFilesQueueHandle,DWORD dwIDRequest,MRA_FILES_QUEUE_ITEM **ppmrafqFilesQueueItem)
+DWORD MraFilesQueueItemFindByID(HANDLE hFilesQueueHandle, DWORD dwIDRequest, MRA_FILES_QUEUE_ITEM **ppmrafqFilesQueueItem)
{
DWORD dwRetErrorCode;
if (hFilesQueueHandle)
{
- MRA_FILES_QUEUE *pmrafqFilesQueue=(MRA_FILES_QUEUE*)hFilesQueueHandle;
- MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem;
+ MRA_FILES_QUEUE *pmrafqFilesQueue = (MRA_FILES_QUEUE*)hFilesQueueHandle;
+ MRA_FILES_QUEUE_ITEM *dat;
LIST_MT_ITERATOR lmtiIterator;
- dwRetErrorCode=ERROR_NOT_FOUND;
- ListMTLock(&pmrafqFilesQueue->lmtListMT);
- ListMTIteratorMoveFirst(&pmrafqFilesQueue->lmtListMT,&lmtiIterator);
+ dwRetErrorCode = ERROR_NOT_FOUND;
+ ListMTLock(pmrafqFilesQueue);
+ ListMTIteratorMoveFirst(pmrafqFilesQueue, &lmtiIterator);
do
{// цикл
- if (ListMTIteratorGet(&lmtiIterator,NULL,(LPVOID*)&pmrafqFilesQueueItem)==NO_ERROR)
- if (pmrafqFilesQueueItem->dwIDRequest==dwIDRequest)
+ if (ListMTIteratorGet(&lmtiIterator, NULL, (LPVOID*)&dat) == NO_ERROR)
+ if (dat->dwIDRequest == dwIDRequest)
{
- if (ppmrafqFilesQueueItem) (*ppmrafqFilesQueueItem)=pmrafqFilesQueueItem;
- dwRetErrorCode=NO_ERROR;
+ if (ppmrafqFilesQueueItem) (*ppmrafqFilesQueueItem) = dat;
+ dwRetErrorCode = NO_ERROR;
break;
}
}while(ListMTIteratorMoveNext(&lmtiIterator));
- ListMTUnLock(&pmrafqFilesQueue->lmtListMT);
- }else{
- dwRetErrorCode=ERROR_INVALID_HANDLE;
+ ListMTUnLock(pmrafqFilesQueue);
+ }else {
+ dwRetErrorCode = ERROR_INVALID_HANDLE;
}
return(dwRetErrorCode);
}
-HANDLE MraFilesQueueItemProxyByID(HANDLE hFilesQueueHandle,DWORD dwIDRequest)
+HANDLE MraFilesQueueItemProxyByID(HANDLE hFilesQueueHandle, DWORD dwIDRequest)
{
- HANDLE hRet=NULL;
- MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem;
+ HANDLE hRet = NULL;
+ MRA_FILES_QUEUE_ITEM *dat;
- if (MraFilesQueueItemFindByID(hFilesQueueHandle,dwIDRequest,&pmrafqFilesQueueItem)==NO_ERROR)
+ if (MraFilesQueueItemFindByID(hFilesQueueHandle, dwIDRequest, &dat) == NO_ERROR)
{
- hRet=pmrafqFilesQueueItem->hMraMrimProxyData;
+ hRet = dat->hMraMrimProxyData;
}
return(hRet);
}
-
-/*DWORD MraFilesQueueItemFindByEMail(HANDLE hFilesQueueHandle,LPSTR lpszEMail,SIZE_T dwEMailSize,MRA_FILES_QUEUE_ITEM **ppmrafqFilesQueueItem)
+void MraFilesQueueItemFree(MRA_FILES_QUEUE_ITEM *dat)
{
- DWORD dwRetErrorCode;
-
- if (hFilesQueueHandle)
- {
- CHAR szEMailLocal[MAX_EMAIL_LEN];
- SIZE_T dwEMailLocalSize;
- MRA_FILES_QUEUE *pmrafqFilesQueue=(MRA_FILES_QUEUE*)hFilesQueueHandle;
- MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem;
- LIST_MT_ITERATOR lmtiIterator;
-
- dwRetErrorCode=ERROR_NOT_FOUND;
- ListMTLock(&pmrafqFilesQueue->lmtListMT);
- ListMTIteratorMoveFirst(&pmrafqFilesQueue->lmtListMT,&lmtiIterator);
- do
- {// цикл
- if (ListMTIteratorGet(&lmtiIterator,NULL,(LPVOID*)&pmrafqFilesQueueItem)==NO_ERROR)
- if (DB_Mra_GetStaticStringA(pmrafqFilesQueueItem->hContact,"e-mail",szEMailLocal,SIZEOF(szEMailLocal),&dwEMailLocalSize))
- if (dwEMailSize==dwEMailLocalSize)
- if (CompareStringA(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),NORM_IGNORECASE,lpszEMail,dwEMailSize,szEMailLocal,dwEMailLocalSize)==CSTR_EQUAL)
- {
- if (ppmrafqFilesQueueItem) (*ppmrafqFilesQueueItem)=pmrafqFilesQueueItem;
- dwRetErrorCode=NO_ERROR;
- break;
- }
- }while(ListMTIteratorMoveNext(&lmtiIterator));
- ListMTUnLock(&pmrafqFilesQueue->lmtListMT);
- }else{
- dwRetErrorCode=ERROR_INVALID_HANDLE;
- }
-return(dwRetErrorCode);
-}*/
-
+ LIST_MT *plmtListMT = (LIST_MT*)dat->lpListMT;
-void MraFilesQueueItemFree(MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem)
-{
- LIST_MT *plmtListMT=(LIST_MT*)pmrafqFilesQueueItem->lmtListMTItem.lpListMT;
+ for (size_t i = 0;i<dat->dwFilesCount;i++)
+ mir_free(dat->pmfqfFiles[i].lpwszName);
- for(SIZE_T i=0;i<pmrafqFilesQueueItem->dwFilesCount;i++)
- {
- MEMFREE(pmrafqFilesQueueItem->pmfqfFiles[i].lpwszName);
- }
- MEMFREE(pmrafqFilesQueueItem->pmfqfFiles);
- MEMFREE(pmrafqFilesQueueItem->pwszFilesList);
- MEMFREE(pmrafqFilesQueueItem->pwszDescription);
- MraAddrListFree(&pmrafqFilesQueueItem->malAddrList);
- MraMrimProxyFree(pmrafqFilesQueueItem->hMraMrimProxyData);
- MEMFREE(pmrafqFilesQueueItem->lpwszPath);
+ mir_free(dat->pmfqfFiles);
+ mir_free(dat->pwszFilesList);
+ mir_free(dat->pwszDescription);
+ MraAddrListFree(&dat->malAddrList);
+ MraMrimProxyFree(dat->hMraMrimProxyData);
+ mir_free(dat->lpwszPath);
ListMTLock(plmtListMT);
- ListMTItemDelete(plmtListMT,&pmrafqFilesQueueItem->lmtListMTItem);
+ ListMTItemDelete(plmtListMT, dat);
ListMTUnLock(plmtListMT);
- MEMFREE(pmrafqFilesQueueItem);
+ mir_free(dat);
}
-
-
-
-
-SIZE_T MraFilesQueueGetLocalAddressesList(LPSTR lpszBuff,SIZE_T dwBuffSize,DWORD dwPort)
+size_t CMraProto::MraFilesQueueGetLocalAddressesList(LPSTR lpszBuff, size_t dwBuffSize, DWORD dwPort)
{
- CHAR szHostName[MAX_PATH]={0};
- LPSTR lpszCurPos=lpszBuff;
+ CHAR szHostName[MAX_PATH] = {0};
+ LPSTR lpszCurPos = lpszBuff;
- if (DB_Mra_GetByte(NULL,"FileSendHideMyAddresses",MRA_DEF_FS_HIDE_MY_ADDRESSES))
+ if (mraGetByte(NULL, "FileSendHideMyAddresses", MRA_DEF_FS_HIDE_MY_ADDRESSES))
{// не выдаём врагу наш IP адрес!!! :)
- if (DB_Mra_GetByte(NULL,"FileSendAddExtraAddresses",MRA_DEF_FS_ADD_EXTRA_ADDRESSES)==FALSE)
+ if (mraGetByte(NULL, "FileSendAddExtraAddresses", MRA_DEF_FS_ADD_EXTRA_ADDRESSES) == FALSE)
{// только если не добавляем адрес роутера
- lpszCurPos+=mir_snprintf(lpszCurPos,(dwBuffSize-((SIZE_T)lpszCurPos-(SIZE_T)lpszBuff)),MRA_FILES_NULL_ADDRR);
+ lpszCurPos += mir_snprintf(lpszCurPos, (dwBuffSize-((size_t)lpszCurPos-(size_t)lpszBuff)), MRA_FILES_NULL_ADDRR);
}
- }else{// создаём список наших IP адресов
+ }else {// создаём список наших IP адресов
BYTE btAddress[32];
DWORD dwSelfExternalIP;
- SIZE_T dwAdapter=0;
+ size_t dwAdapter = 0;
hostent *sh;
- dwSelfExternalIP=NTOHL(DB_Mra_GetDword(NULL,"IP",0));
+ dwSelfExternalIP = NTOHL(mraGetDword(NULL, "IP", 0));
if (dwSelfExternalIP)
{
- memmove(&btAddress,&dwSelfExternalIP,sizeof(DWORD));
- lpszCurPos+=mir_snprintf(lpszCurPos,(dwBuffSize-((SIZE_T)lpszCurPos-(SIZE_T)lpszBuff)),"%lu.%lu.%lu.%lu:%lu;",btAddress[0],btAddress[1],btAddress[2],btAddress[3],dwPort);
+ memmove(&btAddress, &dwSelfExternalIP, sizeof(DWORD));
+ lpszCurPos += mir_snprintf(lpszCurPos, (dwBuffSize-((size_t)lpszCurPos-(size_t)lpszBuff)), "%lu.%lu.%lu.%lu:%lu;", btAddress[0], btAddress[1], btAddress[2], btAddress[3], dwPort);
}
- if (gethostname(szHostName,SIZEOF(szHostName))==0)
- if ((sh=gethostbyname((LPSTR)&szHostName)))
+ if (gethostname(szHostName, SIZEOF(szHostName)) == 0)
+ if ((sh = gethostbyname((LPSTR)&szHostName)))
{
while(sh->h_addr_list[dwAdapter])
{
- lpszCurPos+=mir_snprintf(lpszCurPos,(dwBuffSize-((SIZE_T)lpszCurPos-(SIZE_T)lpszBuff)),"%s:%lu;",inet_ntoa(*((struct in_addr*)sh->h_addr_list[dwAdapter])),dwPort);
+ lpszCurPos += mir_snprintf(lpszCurPos, (dwBuffSize-((size_t)lpszCurPos-(size_t)lpszBuff)), "%s:%lu;", inet_ntoa(*((struct in_addr*)sh->h_addr_list[dwAdapter])), dwPort);
dwAdapter++;
}
}
}
- if (DB_Mra_GetByte(NULL,"FileSendAddExtraAddresses",MRA_DEF_FS_ADD_EXTRA_ADDRESSES))// добавляем произвольный адрес
- if (DB_Mra_GetStaticStringA(NULL,"FileSendExtraAddresses",szHostName,SIZEOF(szHostName),NULL))
+ if (mraGetByte(NULL, "FileSendAddExtraAddresses", MRA_DEF_FS_ADD_EXTRA_ADDRESSES))// добавляем произвольный адрес
+ if (mraGetStaticStringA(NULL, "FileSendExtraAddresses", szHostName, SIZEOF(szHostName), NULL))
{
- lpszCurPos+=mir_snprintf(lpszCurPos,(dwBuffSize-((SIZE_T)lpszCurPos-(SIZE_T)lpszBuff)),"%s:%lu;",szHostName,dwPort);
+ lpszCurPos += mir_snprintf(lpszCurPos, (dwBuffSize-((size_t)lpszCurPos-(size_t)lpszBuff)), "%s:%lu;", szHostName, dwPort);
}
return((lpszCurPos-lpszBuff));
}
@@ -362,416 +296,413 @@ return((lpszCurPos-lpszBuff)); -DWORD MraFilesQueueAddReceive(HANDLE hFilesQueueHandle,DWORD dwFlags,HANDLE hContact,DWORD dwIDRequest,LPWSTR lpwszFiles,SIZE_T dwFilesSize,LPSTR lpszAddreses,SIZE_T dwAddresesSize)
+DWORD CMraProto::MraFilesQueueAddReceive(HANDLE hFilesQueueHandle, DWORD dwFlags, HANDLE hContact, DWORD dwIDRequest, LPWSTR lpwszFiles, size_t dwFilesSize, LPSTR lpszAddreses, size_t dwAddresesSize)
{
DWORD dwRetErrorCode;
if (hFilesQueueHandle && dwIDRequest)
{
- MRA_FILES_QUEUE *pmrafqFilesQueue=(MRA_FILES_QUEUE*)hFilesQueueHandle;
- MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem;
+ MRA_FILES_QUEUE *pmrafqFilesQueue = (MRA_FILES_QUEUE*)hFilesQueueHandle;
+ MRA_FILES_QUEUE_ITEM *dat;
- pmrafqFilesQueueItem=(MRA_FILES_QUEUE_ITEM*)MEMALLOC(sizeof(MRA_FILES_QUEUE_ITEM)+sizeof(LPSTR)+64);
- if (pmrafqFilesQueueItem)
+ dat = (MRA_FILES_QUEUE_ITEM*)mir_calloc(sizeof(MRA_FILES_QUEUE_ITEM)+sizeof(LPSTR)+64);
+ if (dat)
{
WCHAR szBuff[MAX_PATH];
- LPWSTR lpwszCurrentItem,lpwszDelimiter,lpwszEndItem;
- SIZE_T dwMemSize,dwAllocatedCount,dwFileNameTotalSize;
+ LPWSTR lpwszCurrentItem, lpwszDelimiter, lpwszEndItem;
+ size_t dwMemSize, dwAllocatedCount, dwFileNameTotalSize;
CCSDATA ccs;
PROTORECVFILET prf;
- //pmrafqFilesQueueItem->lmtListMTItem;
- pmrafqFilesQueueItem->bIsWorking=TRUE;
- pmrafqFilesQueueItem->dwSendTime=GetTickCount();
- pmrafqFilesQueueItem->dwIDRequest=dwIDRequest;
- pmrafqFilesQueueItem->dwFlags=dwFlags;
- pmrafqFilesQueueItem->hContact=hContact;
- if (DB_Mra_GetByte(NULL,"FileSendEnableMRIMProxyCons",MRA_DEF_FS_ENABLE_MRIM_PROXY_CONS)) pmrafqFilesQueueItem->hMraMrimProxyData=MraMrimProxyCreate();
-
-
- dwFileNameTotalSize=0;
- dwAllocatedCount=ALLOCATED_COUNT;
- pmrafqFilesQueueItem->dwFilesCount=0;
- pmrafqFilesQueueItem->dwFilesTotalSize=0;
- pmrafqFilesQueueItem->pmfqfFiles=(MRA_FILES_QUEUE_FILE*)MEMALLOC((sizeof(MRA_FILES_QUEUE_FILE)*dwAllocatedCount));
- lpwszCurrentItem=lpwszFiles;
+ //dat->lmtListMTItem;
+ dat->ppro = this;
+ dat->bIsWorking = TRUE;
+ dat->dwSendTime = GetTickCount();
+ dat->dwIDRequest = dwIDRequest;
+ dat->dwFlags = dwFlags;
+ dat->hContact = hContact;
+ if (mraGetByte(NULL, "FileSendEnableMRIMProxyCons", MRA_DEF_FS_ENABLE_MRIM_PROXY_CONS))
+ dat->hMraMrimProxyData = MraMrimProxyCreate();
+
+ dwFileNameTotalSize = 0;
+ dwAllocatedCount = ALLOCATED_COUNT;
+ dat->dwFilesCount = 0;
+ dat->dwFilesTotalSize = 0;
+ dat->pmfqfFiles = (MRA_FILES_QUEUE_FILE*)mir_calloc((sizeof(MRA_FILES_QUEUE_FILE)*dwAllocatedCount));
+ lpwszCurrentItem = lpwszFiles;
while(TRUE)
{
- lpwszDelimiter=(LPWSTR)MemoryFind(((SIZE_T)lpwszCurrentItem-(SIZE_T)lpwszFiles),lpwszFiles,(dwFilesSize*sizeof(WCHAR)),";",2);
+ lpwszDelimiter = (LPWSTR)MemoryFind(((size_t)lpwszCurrentItem-(size_t)lpwszFiles), lpwszFiles, (dwFilesSize*sizeof(WCHAR)), ";", 2);
if (lpwszDelimiter)
{
- lpwszEndItem=(LPWSTR)MemoryFind((((SIZE_T)lpwszDelimiter+2)-(SIZE_T)lpwszFiles),lpwszFiles,(dwFilesSize*sizeof(WCHAR)),";",2);
+ lpwszEndItem = (LPWSTR)MemoryFind((((size_t)lpwszDelimiter+2)-(size_t)lpwszFiles), lpwszFiles, (dwFilesSize*sizeof(WCHAR)), ";", 2);
if (lpwszEndItem)
{
- if (pmrafqFilesQueueItem->dwFilesCount==dwAllocatedCount)
+ if (dat->dwFilesCount == dwAllocatedCount)
{
- dwAllocatedCount*=2;
- pmrafqFilesQueueItem->pmfqfFiles=(MRA_FILES_QUEUE_FILE*)MEMREALLOC(pmrafqFilesQueueItem->pmfqfFiles,(sizeof(MRA_FILES_QUEUE_FILE)*dwAllocatedCount));
+ dwAllocatedCount *= 2;
+ dat->pmfqfFiles = (MRA_FILES_QUEUE_FILE*)mir_realloc(dat->pmfqfFiles, (sizeof(MRA_FILES_QUEUE_FILE)*dwAllocatedCount));
}
- dwMemSize=((SIZE_T)lpwszDelimiter-(SIZE_T)lpwszCurrentItem);
- pmrafqFilesQueueItem->pmfqfFiles[pmrafqFilesQueueItem->dwFilesCount].lpwszName=(LPWSTR)MEMALLOC(dwMemSize);
- memmove(pmrafqFilesQueueItem->pmfqfFiles[pmrafqFilesQueueItem->dwFilesCount].lpwszName,lpwszCurrentItem,dwMemSize);
- pmrafqFilesQueueItem->pmfqfFiles[pmrafqFilesQueueItem->dwFilesCount].dwSize=StrToUNum64((LPSTR)((SIZE_T)lpwszDelimiter+1),((SIZE_T)lpwszEndItem-((SIZE_T)lpwszDelimiter+1)));
- pmrafqFilesQueueItem->dwFilesTotalSize+=pmrafqFilesQueueItem->pmfqfFiles[pmrafqFilesQueueItem->dwFilesCount].dwSize;
- pmrafqFilesQueueItem->pmfqfFiles[pmrafqFilesQueueItem->dwFilesCount].dwNameLen=(dwMemSize/sizeof(WCHAR));
- dwFileNameTotalSize+=dwMemSize;
+ dwMemSize = ((size_t)lpwszDelimiter-(size_t)lpwszCurrentItem);
+ dat->pmfqfFiles[dat->dwFilesCount].lpwszName = (LPWSTR)mir_calloc(dwMemSize);
+ memmove(dat->pmfqfFiles[dat->dwFilesCount].lpwszName, lpwszCurrentItem, dwMemSize);
+ dat->pmfqfFiles[dat->dwFilesCount].dwSize = StrToUNum64((LPSTR)((size_t)lpwszDelimiter+1), ((size_t)lpwszEndItem-((size_t)lpwszDelimiter+1)));
+ dat->dwFilesTotalSize += dat->pmfqfFiles[dat->dwFilesCount].dwSize;
+ dat->pmfqfFiles[dat->dwFilesCount].dwNameLen = (dwMemSize/sizeof(WCHAR));
+ dwFileNameTotalSize += dwMemSize;
- pmrafqFilesQueueItem->dwFilesCount++;
- lpwszCurrentItem=(lpwszEndItem+1);
- }else{
+ dat->dwFilesCount++;
+ lpwszCurrentItem = (lpwszEndItem+1);
+ }else {
break;
}
- }else{
+ }else {
break;
}
}
- pmrafqFilesQueueItem->pmfqfFiles=(MRA_FILES_QUEUE_FILE*)MEMREALLOC(pmrafqFilesQueueItem->pmfqfFiles,(sizeof(MRA_FILES_QUEUE_FILE)*(pmrafqFilesQueueItem->dwFilesCount+4)));
+ dat->pmfqfFiles = (MRA_FILES_QUEUE_FILE*)mir_realloc(dat->pmfqfFiles, (sizeof(MRA_FILES_QUEUE_FILE)*(dat->dwFilesCount+4)));
- dwMemSize=(((pmrafqFilesQueueItem->dwFilesCount+4)*64)+(dwFileNameTotalSize*sizeof(WCHAR))+(dwAddresesSize*sizeof(WCHAR))+128);
- pmrafqFilesQueueItem->pwszFilesList=(LPWSTR)MEMALLOC(dwMemSize);
- pmrafqFilesQueueItem->pwszDescription=(LPWSTR)MEMALLOC(dwMemSize);
+ dwMemSize = (((dat->dwFilesCount+4)*64)+(dwFileNameTotalSize*sizeof(WCHAR))+(dwAddresesSize*sizeof(WCHAR))+128);
+ dat->pwszFilesList = (LPWSTR)mir_calloc(dwMemSize);
+ dat->pwszDescription = (LPWSTR)mir_calloc(dwMemSize);
- lpwszDelimiter=pmrafqFilesQueueItem->pwszFilesList;
- lpwszCurrentItem=pmrafqFilesQueueItem->pwszDescription;
- StrFormatByteSizeW(pmrafqFilesQueueItem->dwFilesTotalSize,szBuff,SIZEOF(szBuff));
- lpwszCurrentItem+=mir_sntprintf(lpwszCurrentItem,((dwMemSize-((SIZE_T)lpwszCurrentItem-(SIZE_T)pmrafqFilesQueueItem->pwszDescription))/sizeof(WCHAR)),L"%I64u Files (%s)\r\n",pmrafqFilesQueueItem->dwFilesCount,szBuff);
+ lpwszDelimiter = dat->pwszFilesList;
+ lpwszCurrentItem = dat->pwszDescription;
+ StrFormatByteSizeW(dat->dwFilesTotalSize, szBuff, SIZEOF(szBuff));
+ lpwszCurrentItem += mir_sntprintf(lpwszCurrentItem, ((dwMemSize-((size_t)lpwszCurrentItem-(size_t)dat->pwszDescription))/sizeof(WCHAR)), L"%I64u Files (%s)\r\n", dat->dwFilesCount, szBuff);
// description + filesnames
- for(SIZE_T i=0;i<pmrafqFilesQueueItem->dwFilesCount;i++)
+ for (size_t i = 0;i<dat->dwFilesCount;i++)
{
- lpwszDelimiter+=mir_sntprintf(lpwszDelimiter,((dwMemSize-((SIZE_T)lpwszDelimiter-(SIZE_T)pmrafqFilesQueueItem->pwszFilesList))/sizeof(WCHAR)),L"%s; ",pmrafqFilesQueueItem->pmfqfFiles[i].lpwszName);
- StrFormatByteSizeW(pmrafqFilesQueueItem->pmfqfFiles[i].dwSize,szBuff,SIZEOF(szBuff));
- lpwszCurrentItem+=mir_sntprintf(lpwszCurrentItem,((dwMemSize-((SIZE_T)lpwszCurrentItem-(SIZE_T)pmrafqFilesQueueItem->pwszDescription))/sizeof(WCHAR)),L"%s - %s\r\n",pmrafqFilesQueueItem->pmfqfFiles[i].lpwszName,szBuff);
+ lpwszDelimiter += mir_sntprintf(lpwszDelimiter, ((dwMemSize-((size_t)lpwszDelimiter-(size_t)dat->pwszFilesList))/sizeof(WCHAR)), L"%s; ", dat->pmfqfFiles[i].lpwszName);
+ StrFormatByteSizeW(dat->pmfqfFiles[i].dwSize, szBuff, SIZEOF(szBuff));
+ lpwszCurrentItem += mir_sntprintf(lpwszCurrentItem, ((dwMemSize-((size_t)lpwszCurrentItem-(size_t)dat->pwszDescription))/sizeof(WCHAR)), L"%s - %s\r\n", dat->pmfqfFiles[i].lpwszName, szBuff);
}
- lpwszCurrentItem+=MultiByteToWideChar(MRA_CODE_PAGE,0,lpszAddreses,dwAddresesSize,lpwszCurrentItem,((dwMemSize-((SIZE_T)lpwszCurrentItem-(SIZE_T)pmrafqFilesQueueItem->pwszDescription))/sizeof(WCHAR)));
- (*lpwszCurrentItem)=0;
+ lpwszCurrentItem += MultiByteToWideChar(MRA_CODE_PAGE, 0, lpszAddreses, dwAddresesSize, lpwszCurrentItem, ((dwMemSize-((size_t)lpwszCurrentItem-(size_t)dat->pwszDescription))/sizeof(WCHAR)));
+ (*lpwszCurrentItem) = 0;
//lpwszCurrentItem++;
- MraAddrListGetFromBuff(lpszAddreses,dwAddresesSize,&pmrafqFilesQueueItem->malAddrList);
- MraAddrListStoreToContact(pmrafqFilesQueueItem->hContact,&pmrafqFilesQueueItem->malAddrList);
+ MraAddrListGetFromBuff(lpszAddreses, dwAddresesSize, &dat->malAddrList);
+ MraAddrListStoreToContact(dat->hContact, &dat->malAddrList);
- ListMTLock(&pmrafqFilesQueue->lmtListMT);
- ListMTItemAdd(&pmrafqFilesQueue->lmtListMT,&pmrafqFilesQueueItem->lmtListMTItem,pmrafqFilesQueueItem);
- ListMTUnLock(&pmrafqFilesQueue->lmtListMT);
+ ListMTLock(pmrafqFilesQueue);
+ ListMTItemAdd(pmrafqFilesQueue, dat, dat);
+ ListMTUnLock(pmrafqFilesQueue);
// Send chain event
- ccs.szProtoService=PSR_FILE;
- ccs.hContact=hContact;
- ccs.wParam=0;
- ccs.lParam=(LPARAM)&prf;
- prf.flags=PREF_UNICODE;
- prf.timestamp=_time32(NULL);
- prf.tszDescription=pmrafqFilesQueueItem->pwszDescription;
- prf.fileCount=1;//pmrafqFilesQueueItem->dwFilesCount;
- prf.ptszFiles=&pmrafqFilesQueueItem->pwszFilesList;
- prf.lParam=dwIDRequest;
+ ccs.szProtoService = PSR_FILE;
+ ccs.hContact = hContact;
+ ccs.wParam = 0;
+ ccs.lParam = (LPARAM)&prf;
+ prf.flags = PREF_UNICODE;
+ prf.timestamp = _time32(NULL);
+ prf.tszDescription = dat->pwszDescription;
+ prf.fileCount = 1;//dat->dwFilesCount;
+ prf.ptszFiles = &dat->pwszFilesList;
+ prf.lParam = dwIDRequest;
- CallService(MS_PROTO_CHAINRECV,0,(LPARAM)&ccs);
+ CallService(MS_PROTO_CHAINRECV, 0, (LPARAM)&ccs);
- dwRetErrorCode=NO_ERROR;
- }else{
- dwRetErrorCode=GetLastError();
+ dwRetErrorCode = NO_ERROR;
+ }else {
+ dwRetErrorCode = GetLastError();
}
- }else{
- dwRetErrorCode=ERROR_INVALID_HANDLE;
+ }else {
+ dwRetErrorCode = ERROR_INVALID_HANDLE;
}
return(dwRetErrorCode);
}
-
-
-DWORD MraFilesQueueAddSend(HANDLE hFilesQueueHandle,DWORD dwFlags,HANDLE hContact,LPWSTR *plpwszFiles,SIZE_T dwFilesCount,DWORD *pdwIDRequest)
+DWORD CMraProto::MraFilesQueueAddSend(HANDLE hFilesQueueHandle, DWORD dwFlags, HANDLE hContact, LPWSTR *plpwszFiles, size_t dwFilesCount, DWORD *pdwIDRequest)
{
DWORD dwRetErrorCode;
if (hFilesQueueHandle)
{
- MRA_FILES_QUEUE *pmrafqFilesQueue=(MRA_FILES_QUEUE*)hFilesQueueHandle;
- MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem;
+ MRA_FILES_QUEUE *pmrafqFilesQueue = (MRA_FILES_QUEUE*)hFilesQueueHandle;
+ MRA_FILES_QUEUE_ITEM *dat;
- pmrafqFilesQueueItem=(MRA_FILES_QUEUE_ITEM*)MEMALLOC(sizeof(MRA_FILES_QUEUE_ITEM)+sizeof(LPSTR)+64);
- if (pmrafqFilesQueueItem)
+ dat = (MRA_FILES_QUEUE_ITEM*)mir_calloc(sizeof(MRA_FILES_QUEUE_ITEM)+sizeof(LPSTR)+64);
+ if (dat)
{
- SIZE_T i;
+ size_t i;
ULARGE_INTEGER uliFileSize;
WIN32_FILE_ATTRIBUTE_DATA wfad;
- //pmrafqFilesQueueItem->lmtListMTItem;
- pmrafqFilesQueueItem->bIsWorking=TRUE;
- pmrafqFilesQueueItem->dwSendTime=GetTickCount();
- pmrafqFilesQueueItem->dwIDRequest=InterlockedIncrement((LONG volatile*)&masMraSettings.dwCMDNum);// уникальный, рандомный идентификатор
- pmrafqFilesQueueItem->dwFlags=dwFlags;
- pmrafqFilesQueueItem->hContact=hContact;
- if (DB_Mra_GetByte(NULL,"FileSendEnableMRIMProxyCons",MRA_DEF_FS_ENABLE_MRIM_PROXY_CONS)) pmrafqFilesQueueItem->hMraMrimProxyData=MraMrimProxyCreate();
- pmrafqFilesQueueItem->dwFilesCount=dwFilesCount;
- pmrafqFilesQueueItem->pmfqfFiles=(MRA_FILES_QUEUE_FILE*)MEMALLOC((sizeof(MRA_FILES_QUEUE_FILE)*(pmrafqFilesQueueItem->dwFilesCount+1)));
- pmrafqFilesQueueItem->dwFilesTotalSize=0;
-
- for(i=0;i<pmrafqFilesQueueItem->dwFilesCount;i++)
+ //dat->lmtListMTItem;
+ dat->bIsWorking = TRUE;
+ dat->dwSendTime = GetTickCount();
+ dat->dwIDRequest = InterlockedIncrement((LONG volatile*)&dwCMDNum);// уникальный, рандомный идентификатор
+ dat->dwFlags = dwFlags;
+ dat->hContact = hContact;
+ if (mraGetByte(NULL, "FileSendEnableMRIMProxyCons", MRA_DEF_FS_ENABLE_MRIM_PROXY_CONS)) dat->hMraMrimProxyData = MraMrimProxyCreate();
+ dat->dwFilesCount = dwFilesCount;
+ dat->pmfqfFiles = (MRA_FILES_QUEUE_FILE*)mir_calloc((sizeof(MRA_FILES_QUEUE_FILE)*(dat->dwFilesCount+1)));
+ dat->dwFilesTotalSize = 0;
+
+ for (i = 0;i<dat->dwFilesCount;i++)
{
- if (GetFileAttributesExW(plpwszFiles[i],GetFileExInfoStandard,&wfad))
+ if (GetFileAttributesExW(plpwszFiles[i], GetFileExInfoStandard, &wfad))
{
- uliFileSize.LowPart=wfad.nFileSizeLow;
- uliFileSize.HighPart=wfad.nFileSizeHigh;
- pmrafqFilesQueueItem->pmfqfFiles[i].dwSize=uliFileSize.QuadPart;
- pmrafqFilesQueueItem->dwFilesTotalSize+=uliFileSize.QuadPart;
- }else{
- pmrafqFilesQueueItem->pmfqfFiles[i].dwSize=0;
+ uliFileSize.LowPart = wfad.nFileSizeLow;
+ uliFileSize.HighPart = wfad.nFileSizeHigh;
+ dat->pmfqfFiles[i].dwSize = uliFileSize.QuadPart;
+ dat->dwFilesTotalSize += uliFileSize.QuadPart;
+ }else {
+ dat->pmfqfFiles[i].dwSize = 0;
}
- pmrafqFilesQueueItem->pmfqfFiles[i].dwNameLen=lstrlenW(plpwszFiles[i]);
- pmrafqFilesQueueItem->pmfqfFiles[i].lpwszName=(LPWSTR)MEMALLOC((pmrafqFilesQueueItem->pmfqfFiles[i].dwNameLen*sizeof(WCHAR)));
- if (pmrafqFilesQueueItem->pmfqfFiles[i].lpwszName)
+ dat->pmfqfFiles[i].dwNameLen = lstrlenW(plpwszFiles[i]);
+ dat->pmfqfFiles[i].lpwszName = (LPWSTR)mir_calloc((dat->pmfqfFiles[i].dwNameLen*sizeof(WCHAR)));
+ if (dat->pmfqfFiles[i].lpwszName)
{
- memmove(pmrafqFilesQueueItem->pmfqfFiles[i].lpwszName,plpwszFiles[i],(pmrafqFilesQueueItem->pmfqfFiles[i].dwNameLen*sizeof(WCHAR)));
+ memmove(dat->pmfqfFiles[i].lpwszName, plpwszFiles[i], (dat->pmfqfFiles[i].dwNameLen*sizeof(WCHAR)));
}
}
- //pmrafqFilesQueueItem->malAddrList.dwAddrCount=0;
- //pmrafqFilesQueueItem->pmfqaAddreses=NULL;
- pmrafqFilesQueueItem->bSending=TRUE;
- if (pdwIDRequest) (*pdwIDRequest)=pmrafqFilesQueueItem->dwIDRequest;
+ //dat->malAddrList.dwAddrCount = 0;
+ //dat->pmfqaAddreses = NULL;
+ dat->bSending = TRUE;
+ if (pdwIDRequest) (*pdwIDRequest) = dat->dwIDRequest;
- ListMTLock(&pmrafqFilesQueue->lmtListMT);
- ListMTItemAdd(&pmrafqFilesQueue->lmtListMT,&pmrafqFilesQueueItem->lmtListMTItem,pmrafqFilesQueueItem);
- ListMTUnLock(&pmrafqFilesQueue->lmtListMT);
+ ListMTLock(pmrafqFilesQueue);
+ ListMTItemAdd(pmrafqFilesQueue, dat, dat);
+ ListMTUnLock(pmrafqFilesQueue);
{
- MRA_FILES_THREADPROC_PARAMS *pmftpp=(MRA_FILES_THREADPROC_PARAMS*)MEMALLOC(sizeof(MRA_FILES_THREADPROC_PARAMS));
- pmftpp->hFilesQueueHandle=hFilesQueueHandle;
- pmftpp->pmrafqFilesQueueItem=pmrafqFilesQueueItem;
+ MRA_FILES_THREADPROC_PARAMS *pmftpp = (MRA_FILES_THREADPROC_PARAMS*)mir_calloc(sizeof(MRA_FILES_THREADPROC_PARAMS));
+ pmftpp->hFilesQueueHandle = hFilesQueueHandle;
+ pmftpp->dat = dat;
- pmrafqFilesQueueItem->hThread=(HANDLE)mir_forkthread((pThreadFunc)MraFilesQueueSendThreadProc,pmftpp);
+ dat->hThread = ForkThreadEx(&CMraProto::MraFilesQueueSendThreadProc, pmftpp);
}
- dwRetErrorCode=NO_ERROR;
- }else{
- dwRetErrorCode=GetLastError();
+ dwRetErrorCode = NO_ERROR;
+ }else {
+ dwRetErrorCode = GetLastError();
}
- }else{
- dwRetErrorCode=ERROR_INVALID_HANDLE;
+ }else {
+ dwRetErrorCode = ERROR_INVALID_HANDLE;
}
return(dwRetErrorCode);
}
-
-
-DWORD MraFilesQueueAccept(HANDLE hFilesQueueHandle,DWORD dwIDRequest,LPWSTR lpwszPath,SIZE_T dwPathSize)
+DWORD CMraProto::MraFilesQueueAccept(HANDLE hFilesQueueHandle, DWORD dwIDRequest, LPCWSTR lpwszPath, size_t dwPathSize)
{
DWORD dwRetErrorCode;
if (hFilesQueueHandle && lpwszPath && dwPathSize)
{
- MRA_FILES_QUEUE *pmrafqFilesQueue=(MRA_FILES_QUEUE*)hFilesQueueHandle;
- MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem;
+ MRA_FILES_QUEUE *pmrafqFilesQueue = (MRA_FILES_QUEUE*)hFilesQueueHandle;
+ MRA_FILES_QUEUE_ITEM *dat;
- ListMTLock(&pmrafqFilesQueue->lmtListMT);
- if ((dwRetErrorCode=MraFilesQueueItemFindByID(hFilesQueueHandle,dwIDRequest,&pmrafqFilesQueueItem))==NO_ERROR)
+ ListMTLock(pmrafqFilesQueue);
+ if ((dwRetErrorCode = MraFilesQueueItemFindByID(hFilesQueueHandle, dwIDRequest, &dat)) == NO_ERROR)
{
- MRA_FILES_THREADPROC_PARAMS *pmftpp=(MRA_FILES_THREADPROC_PARAMS*)MEMALLOC(sizeof(MRA_FILES_THREADPROC_PARAMS));
- pmrafqFilesQueueItem->lpwszPath=(LPWSTR)MEMALLOC((dwPathSize*sizeof(WCHAR)));
- pmrafqFilesQueueItem->dwPathSize=dwPathSize;
- memmove(pmrafqFilesQueueItem->lpwszPath,lpwszPath,(dwPathSize*sizeof(WCHAR)));
+ MRA_FILES_THREADPROC_PARAMS *pmftpp = (MRA_FILES_THREADPROC_PARAMS*)mir_calloc(sizeof(MRA_FILES_THREADPROC_PARAMS));
+ dat->lpwszPath = (LPWSTR)mir_calloc((dwPathSize*sizeof(WCHAR)));
+ dat->dwPathSize = dwPathSize;
+ memmove(dat->lpwszPath, lpwszPath, (dwPathSize*sizeof(WCHAR)));
- if ( (*(WCHAR*)(pmrafqFilesQueueItem->lpwszPath+(pmrafqFilesQueueItem->dwPathSize-1)))!='\\')
+ if ( (*(WCHAR*)(dat->lpwszPath+(dat->dwPathSize-1))) != '\\')
{// add slash at the end if needed
- (*(WCHAR*)(pmrafqFilesQueueItem->lpwszPath+pmrafqFilesQueueItem->dwPathSize))='\\';
- pmrafqFilesQueueItem->dwPathSize++;
- (*(WCHAR*)(pmrafqFilesQueueItem->lpwszPath+pmrafqFilesQueueItem->dwPathSize))=0;
+ (*(WCHAR*)(dat->lpwszPath+dat->dwPathSize)) = '\\';
+ dat->dwPathSize++;
+ (*(WCHAR*)(dat->lpwszPath+dat->dwPathSize)) = 0;
}
- pmftpp->hFilesQueueHandle=hFilesQueueHandle;
- pmftpp->pmrafqFilesQueueItem=pmrafqFilesQueueItem;
+ pmftpp->hFilesQueueHandle = hFilesQueueHandle;
+ pmftpp->dat = dat;
- pmrafqFilesQueueItem->hThread=(HANDLE)mir_forkthread((pThreadFunc)MraFilesQueueRecvThreadProc,pmftpp);
+ dat->hThread = ForkThreadEx(&CMraProto::MraFilesQueueRecvThreadProc, pmftpp);
}
- ListMTUnLock(&pmrafqFilesQueue->lmtListMT);
- }else{
- dwRetErrorCode=ERROR_INVALID_HANDLE;
+ ListMTUnLock(pmrafqFilesQueue);
+ }else {
+ dwRetErrorCode = ERROR_INVALID_HANDLE;
}
return(dwRetErrorCode);
}
-DWORD MraFilesQueueCancel(HANDLE hFilesQueueHandle,DWORD dwIDRequest,BOOL bSendDecline)
+DWORD CMraProto::MraFilesQueueCancel(HANDLE hFilesQueueHandle, DWORD dwIDRequest, BOOL bSendDecline)
{
DWORD dwRetErrorCode;
if (hFilesQueueHandle)
{
- MRA_FILES_QUEUE *pmrafqFilesQueue=(MRA_FILES_QUEUE*)hFilesQueueHandle;
- MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem;
+ MRA_FILES_QUEUE *pmrafqFilesQueue = (MRA_FILES_QUEUE*)hFilesQueueHandle;
+ MRA_FILES_QUEUE_ITEM *dat;
- ListMTLock(&pmrafqFilesQueue->lmtListMT);
- if ((dwRetErrorCode=MraFilesQueueItemFindByID(hFilesQueueHandle,dwIDRequest,&pmrafqFilesQueueItem))==NO_ERROR)
+ ListMTLock(pmrafqFilesQueue);
+ if ((dwRetErrorCode = MraFilesQueueItemFindByID(hFilesQueueHandle, dwIDRequest, &dat)) == NO_ERROR)
{//***deb closesocket, send message to thread
- InterlockedExchange((volatile LONG*)&pmrafqFilesQueueItem->bIsWorking,FALSE);
+ InterlockedExchange((volatile LONG*)&dat->bIsWorking, FALSE);
if (bSendDecline)
{
CHAR szEMail[MAX_EMAIL_LEN];
- SIZE_T dwEMailSize;
+ size_t dwEMailSize;
- if (DB_Mra_GetStaticStringA(pmrafqFilesQueueItem->hContact,"e-mail",szEMail,SIZEOF(szEMail),&dwEMailSize))
+ if (mraGetStaticStringA(dat->hContact, "e-mail", szEMail, SIZEOF(szEMail), &dwEMailSize))
{
- MraSendCommand_FileTransferAck(FILE_TRANSFER_STATUS_DECLINE,szEMail,dwEMailSize,dwIDRequest,NULL,0);
+ MraFileTransferAck(FILE_TRANSFER_STATUS_DECLINE, szEMail, dwEMailSize, dwIDRequest, NULL, 0);
}
}
- MraMrimProxyCloseConnection(pmrafqFilesQueueItem->hMraMrimProxyData);
+ MraMrimProxyCloseConnection(dat->hMraMrimProxyData);
- Netlib_CloseHandle(pmrafqFilesQueueItem->hListen);
- pmrafqFilesQueueItem->hListen=NULL;
+ Netlib_CloseHandle(dat->hListen);
+ dat->hListen = NULL;
- Netlib_CloseHandle(pmrafqFilesQueueItem->hConnection);
- pmrafqFilesQueueItem->hConnection=NULL;
+ Netlib_CloseHandle(dat->hConnection);
+ dat->hConnection = NULL;
- SetEvent(pmrafqFilesQueueItem->hWaitHandle);
+ SetEvent(dat->hWaitHandle);
- if (pmrafqFilesQueueItem->hThread==NULL)
+ if (dat->hThread == NULL)
{
- MraFilesQueueItemFree(pmrafqFilesQueueItem);
+ MraFilesQueueItemFree(dat);
}
}
- ListMTUnLock(&pmrafqFilesQueue->lmtListMT);
- }else{
- dwRetErrorCode=ERROR_INVALID_HANDLE;
+ ListMTUnLock(pmrafqFilesQueue);
+ }else {
+ dwRetErrorCode = ERROR_INVALID_HANDLE;
}
return(dwRetErrorCode);
}
-DWORD MraFilesQueueStartMrimProxy(HANDLE hFilesQueueHandle,DWORD dwIDRequest)
+DWORD CMraProto::MraFilesQueueStartMrimProxy(HANDLE hFilesQueueHandle, DWORD dwIDRequest)
{
DWORD dwRetErrorCode;
- if (hFilesQueueHandle && DB_Mra_GetByte(NULL,"FileSendEnableMRIMProxyCons",MRA_DEF_FS_ENABLE_MRIM_PROXY_CONS))
+ if (hFilesQueueHandle && mraGetByte(NULL, "FileSendEnableMRIMProxyCons", MRA_DEF_FS_ENABLE_MRIM_PROXY_CONS))
{
- MRA_FILES_QUEUE *pmrafqFilesQueue=(MRA_FILES_QUEUE*)hFilesQueueHandle;
- MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem;
+ MRA_FILES_QUEUE *pmrafqFilesQueue = (MRA_FILES_QUEUE*)hFilesQueueHandle;
+ MRA_FILES_QUEUE_ITEM *dat;
- ListMTLock(&pmrafqFilesQueue->lmtListMT);
- if ((dwRetErrorCode=MraFilesQueueItemFindByID(hFilesQueueHandle,dwIDRequest,&pmrafqFilesQueueItem))==NO_ERROR)
+ ListMTLock(pmrafqFilesQueue);
+ if ((dwRetErrorCode = MraFilesQueueItemFindByID(hFilesQueueHandle, dwIDRequest, &dat)) == NO_ERROR)
{//***deb
- if (pmrafqFilesQueueItem->bSending==FALSE)
+ if (dat->bSending == FALSE)
{// receiving
- SetEvent(pmrafqFilesQueueItem->hWaitHandle);// cancel wait incomming connection
- }else{// sending
+ SetEvent(dat->hWaitHandle);// cancel wait incomming connection
+ }else {// sending
}
}
- ListMTUnLock(&pmrafqFilesQueue->lmtListMT);
- }else{
- dwRetErrorCode=ERROR_INVALID_HANDLE;
+ ListMTUnLock(pmrafqFilesQueue);
+ }else {
+ dwRetErrorCode = ERROR_INVALID_HANDLE;
}
return(dwRetErrorCode);
}
-DWORD MraFilesQueueFree(HANDLE hFilesQueueHandle,DWORD dwIDRequest)
+DWORD MraFilesQueueFree(HANDLE hFilesQueueHandle, DWORD dwIDRequest)
{
DWORD dwRetErrorCode;
if (hFilesQueueHandle)
{
- MRA_FILES_QUEUE *pmrafqFilesQueue=(MRA_FILES_QUEUE*)hFilesQueueHandle;
- MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem;
+ MRA_FILES_QUEUE *pmrafqFilesQueue = (MRA_FILES_QUEUE*)hFilesQueueHandle;
+ MRA_FILES_QUEUE_ITEM *dat;
LIST_MT_ITERATOR lmtiIterator;
- dwRetErrorCode=ERROR_NOT_FOUND;
- ListMTLock(&pmrafqFilesQueue->lmtListMT);
- ListMTIteratorMoveFirst(&pmrafqFilesQueue->lmtListMT,&lmtiIterator);
+ dwRetErrorCode = ERROR_NOT_FOUND;
+ ListMTLock(pmrafqFilesQueue);
+ ListMTIteratorMoveFirst(pmrafqFilesQueue, &lmtiIterator);
do
{// цикл
- if (ListMTIteratorGet(&lmtiIterator,NULL,(LPVOID*)&pmrafqFilesQueueItem)==NO_ERROR)
- if (pmrafqFilesQueueItem->dwIDRequest==dwIDRequest)
+ if (ListMTIteratorGet(&lmtiIterator, NULL, (LPVOID*)&dat) == NO_ERROR)
+ if (dat->dwIDRequest == dwIDRequest)
{
- MraFilesQueueItemFree(pmrafqFilesQueueItem);
- dwRetErrorCode=NO_ERROR;
+ MraFilesQueueItemFree(dat);
+ dwRetErrorCode = NO_ERROR;
break;
}
}while(ListMTIteratorMoveNext(&lmtiIterator));
- ListMTUnLock(&pmrafqFilesQueue->lmtListMT);
- }else{
- dwRetErrorCode=ERROR_INVALID_HANDLE;
+ ListMTUnLock(pmrafqFilesQueue);
+ }else {
+ dwRetErrorCode = ERROR_INVALID_HANDLE;
}
return(dwRetErrorCode);
}
-DWORD MraFilesQueueSendMirror(HANDLE hFilesQueueHandle,DWORD dwIDRequest,LPSTR lpszAddreses,SIZE_T dwAddresesSize)
+DWORD CMraProto::MraFilesQueueSendMirror(HANDLE hFilesQueueHandle, DWORD dwIDRequest, LPSTR lpszAddreses, size_t dwAddresesSize)
{
DWORD dwRetErrorCode;
if (hFilesQueueHandle)
{
- MRA_FILES_QUEUE *pmrafqFilesQueue=(MRA_FILES_QUEUE*)hFilesQueueHandle;
- MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem;
+ MRA_FILES_QUEUE *pmrafqFilesQueue = (MRA_FILES_QUEUE*)hFilesQueueHandle;
+ MRA_FILES_QUEUE_ITEM *dat;
- ListMTLock(&pmrafqFilesQueue->lmtListMT);
- if ((dwRetErrorCode=MraFilesQueueItemFindByID(hFilesQueueHandle,dwIDRequest,&pmrafqFilesQueueItem))==NO_ERROR)
- {//
- MraAddrListGetFromBuff(lpszAddreses,dwAddresesSize,&pmrafqFilesQueueItem->malAddrList);
- MraAddrListStoreToContact(pmrafqFilesQueueItem->hContact,&pmrafqFilesQueueItem->malAddrList);
+ ListMTLock(pmrafqFilesQueue);
+ if ((dwRetErrorCode = MraFilesQueueItemFindByID(hFilesQueueHandle, dwIDRequest, &dat)) == NO_ERROR)
+ {
+ MraAddrListGetFromBuff(lpszAddreses, dwAddresesSize, &dat->malAddrList);
+ MraAddrListStoreToContact(dat->hContact, &dat->malAddrList);
- pmrafqFilesQueueItem->hConnection=NULL;
- SetEvent(pmrafqFilesQueueItem->hWaitHandle);
+ dat->hConnection = NULL;
+ SetEvent(dat->hWaitHandle);
}
- ListMTUnLock(&pmrafqFilesQueue->lmtListMT);
- }else{
- dwRetErrorCode=ERROR_INVALID_HANDLE;
+ ListMTUnLock(pmrafqFilesQueue);
+ }else {
+ dwRetErrorCode = ERROR_INVALID_HANDLE;
}
return(dwRetErrorCode);
}
-BOOL MraFilesQueueHandCheck(HANDLE hConnection,MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem)
+BOOL CMraProto::MraFilesQueueHandCheck(HANDLE hConnection, MRA_FILES_QUEUE_ITEM *dat)
{
- BOOL bRet=FALSE;
+ BOOL bRet = FALSE;
- if (hConnection && pmrafqFilesQueueItem)
+ if (hConnection && dat)
{
- CHAR szEMail[MAX_EMAIL_LEN]={0},szEMailMy[MAX_EMAIL_LEN]={0};
- BYTE btBuff[((MAX_EMAIL_LEN*2)+(sizeof(MRA_FT_HELLO)*2)+8)]={0};
- SIZE_T dwEMailSize,dwEMailMySize,dwBuffSize;
+ CHAR szEMail[MAX_EMAIL_LEN] = {0}, szEMailMy[MAX_EMAIL_LEN] = {0};
+ BYTE btBuff[((MAX_EMAIL_LEN*2)+(sizeof(MRA_FT_HELLO)*2)+8)] = {0};
+ size_t dwEMailSize, dwEMailMySize, dwBuffSize;
- DB_Mra_GetStaticStringA(NULL,"e-mail",szEMailMy,SIZEOF(szEMailMy),&dwEMailMySize);BuffToLowerCase(szEMailMy,szEMailMy,dwEMailMySize);
- DB_Mra_GetStaticStringA(pmrafqFilesQueueItem->hContact,"e-mail",szEMail,SIZEOF(szEMail),&dwEMailSize);BuffToLowerCase(szEMail,szEMail,dwEMailSize);
+ mraGetStaticStringA(NULL, "e-mail", szEMailMy, SIZEOF(szEMailMy), &dwEMailMySize);BuffToLowerCase(szEMailMy, szEMailMy, dwEMailMySize);
+ mraGetStaticStringA(dat->hContact, "e-mail", szEMail, SIZEOF(szEMail), &dwEMailSize);BuffToLowerCase(szEMail, szEMail, dwEMailSize);
- if (pmrafqFilesQueueItem->bSending==FALSE)
+ if (dat->bSending == FALSE)
{// receiving
- dwBuffSize=(mir_snprintf((LPSTR)btBuff,SIZEOF(btBuff),"%s %s",MRA_FT_HELLO,szEMailMy)+1);
- if (dwBuffSize==Netlib_Send(hConnection,(LPSTR)btBuff,dwBuffSize,0))
+ dwBuffSize = (mir_snprintf((LPSTR)btBuff, SIZEOF(btBuff), "%s %s", MRA_FT_HELLO, szEMailMy)+1);
+ if (dwBuffSize == Netlib_Send(hConnection, (LPSTR)btBuff, dwBuffSize, 0))
{// my email sended
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_INITIALISING,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
- dwBuffSize=Netlib_Recv(hConnection,(LPSTR)btBuff,sizeof(btBuff),0);
- if ((dwEMailSize+sizeof(MRA_FT_HELLO)+1)==dwBuffSize)
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_INITIALISING, (HANDLE)dat->dwIDRequest, 0);
+ dwBuffSize = Netlib_Recv(hConnection, (LPSTR)btBuff, sizeof(btBuff), 0);
+ if ((dwEMailSize+sizeof(MRA_FT_HELLO)+1) == dwBuffSize)
{// email received
- mir_snprintf(((LPSTR)btBuff+dwBuffSize),(SIZEOF(btBuff)-dwBuffSize),"%s %s",MRA_FT_HELLO,szEMail);
- if (CompareStringA(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),NORM_IGNORECASE,(LPSTR)btBuff,dwBuffSize,((LPSTR)btBuff+dwBuffSize),dwBuffSize)==CSTR_EQUAL)
+ mir_snprintf(((LPSTR)btBuff+dwBuffSize), (SIZEOF(btBuff)-dwBuffSize), "%s %s", MRA_FT_HELLO, szEMail);
+ if (CompareStringA( MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), NORM_IGNORECASE, (LPSTR)btBuff, dwBuffSize, ((LPSTR)btBuff+dwBuffSize), dwBuffSize) == CSTR_EQUAL)
{// email verifyed
- bRet=TRUE;
+ bRet = TRUE;
}
}
}
- }else{// sending
- dwBuffSize=Netlib_Recv(hConnection,(LPSTR)btBuff,sizeof(btBuff),0);
- if ((dwEMailSize+sizeof(MRA_FT_HELLO)+1)==dwBuffSize)
+ }else {// sending
+ dwBuffSize = Netlib_Recv(hConnection, (LPSTR)btBuff, sizeof(btBuff), 0);
+ if ((dwEMailSize+sizeof(MRA_FT_HELLO)+1) == dwBuffSize)
{// email received
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_INITIALISING,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
- mir_snprintf(((LPSTR)btBuff+dwBuffSize),(SIZEOF(btBuff)-dwBuffSize),"%s %s",MRA_FT_HELLO,szEMail);
- if (CompareStringA(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),NORM_IGNORECASE,(LPSTR)btBuff,dwBuffSize,((LPSTR)btBuff+dwBuffSize),dwBuffSize)==CSTR_EQUAL)
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_INITIALISING, (HANDLE)dat->dwIDRequest, 0);
+ mir_snprintf(((LPSTR)btBuff+dwBuffSize), (SIZEOF(btBuff)-dwBuffSize), "%s %s", MRA_FT_HELLO, szEMail);
+ if (CompareStringA( MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), NORM_IGNORECASE, (LPSTR)btBuff, dwBuffSize, ((LPSTR)btBuff+dwBuffSize), dwBuffSize) == CSTR_EQUAL)
{// email verifyed
- dwBuffSize=(mir_snprintf((LPSTR)btBuff,SIZEOF(btBuff),"%s %s",MRA_FT_HELLO,szEMailMy)+1);
- if (dwBuffSize==Netlib_Send(hConnection,(LPSTR)btBuff,dwBuffSize,0))
+ dwBuffSize = (mir_snprintf((LPSTR)btBuff, SIZEOF(btBuff), "%s %s", MRA_FT_HELLO, szEMailMy)+1);
+ if (dwBuffSize == Netlib_Send(hConnection, (LPSTR)btBuff, dwBuffSize, 0))
{// my email sended
- bRet=TRUE;
+ bRet = TRUE;
}
}
}
@@ -781,101 +712,101 @@ return(bRet); }
-HANDLE MraFilesQueueConnectOut(MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem)
+HANDLE CMraProto::MraFilesQueueConnectOut(MRA_FILES_QUEUE_ITEM *dat)
{
HANDLE hRet;
- if (pmrafqFilesQueueItem)
+ if (dat)
{
- if (DB_Mra_GetByte(NULL,"FileSendEnableDirectConn",MRA_DEF_FS_ENABLE_DIRECT_CONN) && InterlockedExchangeAdd((volatile LONG*)&pmrafqFilesQueueItem->bIsWorking,0) && ((pmrafqFilesQueueItem->bSending==FALSE && DB_Mra_GetByte(NULL,"FileSendNoOutConnOnRcv",MRA_DEF_FS_NO_OUT_CONN_ON_RCV)==FALSE) || (pmrafqFilesQueueItem->bSending==TRUE && DB_Mra_GetByte(NULL,"FileSendNoOutConnOnSend",MRA_DEF_FS_NO_OUT_CONN_ON_SEND)==FALSE)))
+ if (mraGetByte(NULL, "FileSendEnableDirectConn", MRA_DEF_FS_ENABLE_DIRECT_CONN) && InterlockedExchangeAdd((volatile LONG*)&dat->bIsWorking, 0) && ((dat->bSending == FALSE && mraGetByte(NULL, "FileSendNoOutConnOnRcv", MRA_DEF_FS_NO_OUT_CONN_ON_RCV) == FALSE) || (dat->bSending == TRUE && mraGetByte(NULL, "FileSendNoOutConnOnSend", MRA_DEF_FS_NO_OUT_CONN_ON_SEND) == FALSE)))
{
- BOOL bFiltering=FALSE,bIsHTTPSProxyUsed=IsHTTPSProxyUsed(masMraSettings.hNetlibUser);
- DWORD dwLocalPort,dwConnectReTryCount,dwCurConnectReTryCount;
- SIZE_T i,dwAddrCount;
- NETLIBOPENCONNECTION nloc={0};
+ BOOL bFiltering = FALSE, bIsHTTPSProxyUsed = IsHTTPSProxyUsed(hNetlibUser);
+ DWORD dwLocalPort, dwConnectReTryCount, dwCurConnectReTryCount;
+ size_t i, dwAddrCount;
+ NETLIBOPENCONNECTION nloc = {0};
- dwLocalPort=0;
+ dwLocalPort = 0;
- if (DB_Mra_GetByte(NULL,"FileSendIgnoryAdditionalPorts",MRA_DEF_FS_IGNORY_ADDITIONAL_PORTS) || bIsHTTPSProxyUsed)
+ if (mraGetByte(NULL, "FileSendIgnoryAdditionalPorts", MRA_DEF_FS_IGNORY_ADDITIONAL_PORTS) || bIsHTTPSProxyUsed)
{// фильтруем порты для одного IP, вместо 3 будем коннектится только к одному
if (bIsHTTPSProxyUsed)
{// через https прокси только 443 порт
- dwLocalPort=MRA_SERVER_PORT_HTTPS;
- }else{
- if ((dwLocalPort=DB_Mra_GetWord(NULL,"ServerPort",MRA_DEFAULT_SERVER_PORT))==MRA_SERVER_PORT_STANDART_NLB) dwLocalPort=MRA_SERVER_PORT_STANDART;
+ dwLocalPort = MRA_SERVER_PORT_HTTPS;
+ }else {
+ if ((dwLocalPort = mraGetWord(NULL, "ServerPort", MRA_DEFAULT_SERVER_PORT)) == MRA_SERVER_PORT_STANDART_NLB) dwLocalPort = MRA_SERVER_PORT_STANDART;
}
- dwAddrCount=0;
- for(i=0;i<pmrafqFilesQueueItem->malAddrList.dwAddrCount;i++)
+ dwAddrCount = 0;
+ for (i = 0;i<dat->malAddrList.dwAddrCount;i++)
{
- if (dwLocalPort==pmrafqFilesQueueItem->malAddrList.pmaliAddress[i].dwPort)
+ if (dwLocalPort == dat->malAddrList.pmaliAddress[i].dwPort)
{
- bFiltering=TRUE;
+ bFiltering = TRUE;
dwAddrCount++;
}
}
}
- if (bFiltering==FALSE) dwAddrCount=pmrafqFilesQueueItem->malAddrList.dwAddrCount;
+ if (bFiltering == FALSE) dwAddrCount = dat->malAddrList.dwAddrCount;
if (dwAddrCount)
{
- pmrafqFilesQueueItem->hConnection=NULL;
- dwConnectReTryCount=DB_Mra_GetDword(NULL,"ConnectReTryCountFileSend",MRA_DEFAULT_CONN_RETRY_COUNT_FILES);
- nloc.cbSize=sizeof(nloc);
- nloc.flags=NLOCF_V2;
- nloc.timeout=DB_Mra_GetDword(NULL,"TimeOutConnectFileSend",((MRA_TIMEOUT_DIRECT_CONN-1)/(dwAddrCount*dwConnectReTryCount)));// -1 сек чтобы был запас
- if (nloc.timeout<MRA_TIMEOUT_CONN_MIN) nloc.timeout=MRA_TIMEOUT_CONN_MIN;
- if (nloc.timeout>MRA_TIMEOUT_CONN_МАХ) nloc.timeout=MRA_TIMEOUT_CONN_МАХ;
-
- for(i=0;i<pmrafqFilesQueueItem->malAddrList.dwAddrCount;i++)
+ dat->hConnection = NULL;
+ dwConnectReTryCount = mraGetDword(NULL, "ConnectReTryCountFileSend", MRA_DEFAULT_CONN_RETRY_COUNT_FILES);
+ nloc.cbSize = sizeof(nloc);
+ nloc.flags = NLOCF_V2;
+ nloc.timeout = mraGetDword(NULL, "TimeOutConnectFileSend", ((MRA_TIMEOUT_DIRECT_CONN-1)/(dwAddrCount*dwConnectReTryCount)));// -1 сек чтобы был запас
+ if (nloc.timeout<MRA_TIMEOUT_CONN_MIN) nloc.timeout = MRA_TIMEOUT_CONN_MIN;
+ if (nloc.timeout>MRA_TIMEOUT_CONN_МАХ) nloc.timeout = MRA_TIMEOUT_CONN_МАХ;
+
+ for (i = 0;i<dat->malAddrList.dwAddrCount;i++)
{// Set up the sockaddr structure
- if (dwLocalPort==pmrafqFilesQueueItem->malAddrList.pmaliAddress[i].dwPort || bFiltering==FALSE)
+ if (dwLocalPort == dat->malAddrList.pmaliAddress[i].dwPort || bFiltering == FALSE)
{
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_CONNECTING,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_CONNECTING, (HANDLE)dat->dwIDRequest, 0);
- nloc.szHost=inet_ntoa((*((in_addr*)&pmrafqFilesQueueItem->malAddrList.pmaliAddress[i].dwAddr)));
- nloc.wPort=(WORD)pmrafqFilesQueueItem->malAddrList.pmaliAddress[i].dwPort;
+ nloc.szHost = inet_ntoa((*((in_addr*)&dat->malAddrList.pmaliAddress[i].dwAddr)));
+ nloc.wPort = (WORD)dat->malAddrList.pmaliAddress[i].dwPort;
- dwCurConnectReTryCount=dwConnectReTryCount;
+ dwCurConnectReTryCount = dwConnectReTryCount;
do{
- pmrafqFilesQueueItem->hConnection=(HANDLE)CallService(MS_NETLIB_OPENCONNECTION,(WPARAM)masMraSettings.hNetlibUser,(LPARAM)&nloc);
- }while(--dwCurConnectReTryCount && pmrafqFilesQueueItem->hConnection==NULL);
+ dat->hConnection = (HANDLE)CallService(MS_NETLIB_OPENCONNECTION, (WPARAM)hNetlibUser, (LPARAM)&nloc);
+ }while(--dwCurConnectReTryCount && dat->hConnection == NULL);
- if (pmrafqFilesQueueItem->hConnection)
+ if (dat->hConnection)
{
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_CONNECTED,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
- if (MraFilesQueueHandCheck(pmrafqFilesQueueItem->hConnection,pmrafqFilesQueueItem))
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_CONNECTED, (HANDLE)dat->dwIDRequest, 0);
+ if (MraFilesQueueHandCheck(dat->hConnection, dat))
{// связь установленная с тем кем нужно
- DB_Mra_SetDword(pmrafqFilesQueueItem->hContact,"OldIP",DB_Mra_GetDword(pmrafqFilesQueueItem->hContact,"IP",0));
- DB_Mra_SetDword(pmrafqFilesQueueItem->hContact,"IP",HTONL(pmrafqFilesQueueItem->malAddrList.pmaliAddress[i].dwAddr));
+ mraSetDword(dat->hContact, "OldIP", mraGetDword(dat->hContact, "IP", 0));
+ mraSetDword(dat->hContact, "IP", HTONL(dat->malAddrList.pmaliAddress[i].dwAddr));
break;
- }else{// кажется не туда подключились :)
- Netlib_CloseHandle(pmrafqFilesQueueItem->hConnection);
- pmrafqFilesQueueItem->hConnection=NULL;
+ }else {// кажется не туда подключились :)
+ Netlib_CloseHandle(dat->hConnection);
+ dat->hConnection = NULL;
}
}
}
}
}
}
- hRet=pmrafqFilesQueueItem->hConnection;
- }else{
- hRet=NULL;
+ hRet = dat->hConnection;
+ }else {
+ hRet = NULL;
}
return(hRet);
}
-LPWSTR GetFileNameFromFullPathW(LPWSTR lpwszFullPath,SIZE_T dwFullPathSize)
+LPWSTR GetFileNameFromFullPathW(LPWSTR lpwszFullPath, size_t dwFullPathSize)
{
- LPWSTR lpwszFileName=lpwszFullPath,lpwszCurPos;
+ LPWSTR lpwszFileName = lpwszFullPath, lpwszCurPos;
- lpwszCurPos=(lpwszFullPath+dwFullPathSize);
+ lpwszCurPos = (lpwszFullPath+dwFullPathSize);
for (;lpwszCurPos>lpwszFullPath;lpwszCurPos--)
{
- if ((*lpwszCurPos)=='\\')
+ if ((*lpwszCurPos) == '\\')
{
- lpwszFileName=(lpwszCurPos+1);
+ lpwszFileName = (lpwszCurPos+1);
break;
}
}
@@ -884,184 +815,176 @@ return(lpwszFileName); -HANDLE MraFilesQueueConnectIn(MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem)
+HANDLE CMraProto::MraFilesQueueConnectIn(MRA_FILES_QUEUE_ITEM *dat)
{
- HANDLE hRet=NULL;
+ HANDLE hRet = NULL;
- if (pmrafqFilesQueueItem)
- if (InterlockedExchangeAdd((volatile LONG*)&pmrafqFilesQueueItem->bIsWorking,0))
+ if (dat)
+ if (InterlockedExchangeAdd((volatile LONG*)&dat->bIsWorking, 0))
{
CHAR szEMail[MAX_EMAIL_LEN];
- SIZE_T dwEMailSize;
+ size_t dwEMailSize;
- if (DB_Mra_GetStaticStringA(pmrafqFilesQueueItem->hContact,"e-mail",szEMail,SIZEOF(szEMail),&dwEMailSize))
+ if (mraGetStaticStringA(dat->hContact, "e-mail", szEMail, SIZEOF(szEMail), &dwEMailSize))
{
- CHAR szAddrList[2048]={0};
- SIZE_T dwAddrListSize;
+ CHAR szAddrList[2048] = {0};
+ size_t dwAddrListSize;
- if (DB_Mra_GetByte(NULL,"FileSendEnableDirectConn",MRA_DEF_FS_ENABLE_DIRECT_CONN))
+ if (mraGetByte(NULL, "FileSendEnableDirectConn", MRA_DEF_FS_ENABLE_DIRECT_CONN))
{// копируем адреса в соответствии с правилами и начинаем слушать порт
- NETLIBBIND nlbBind={0};
+ NETLIBBIND nlbBind = {0};
- nlbBind.cbSize=sizeof(nlbBind);
- nlbBind.pfnNewConnectionV2=MraFilesQueueConnectionReceived;
- nlbBind.wPort=0;
- nlbBind.pExtra=(LPVOID)pmrafqFilesQueueItem;
+ nlbBind.cbSize = sizeof(nlbBind);
+ nlbBind.pfnNewConnectionV2 = MraFilesQueueConnectionReceived;
+ nlbBind.wPort = 0;
+ nlbBind.pExtra = (LPVOID)dat;
- pmrafqFilesQueueItem->hListen=(HANDLE)CallService(MS_NETLIB_BINDPORT,(WPARAM)masMraSettings.hNetlibUser,(LPARAM)&nlbBind);
- if (pmrafqFilesQueueItem->hListen)
+ dat->hListen = (HANDLE)CallService(MS_NETLIB_BINDPORT, (WPARAM)hNetlibUser, (LPARAM)&nlbBind);
+ if (dat->hListen)
{
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_LISTENING,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
- dwAddrListSize=MraFilesQueueGetLocalAddressesList(szAddrList,sizeof(szAddrList),nlbBind.wPort);
- }else{// не смогли слушать порт, хз почему.
- ShowFormatedErrorMessage(L"Files exchange: cant create listen soscket, will try connect to remonte host. Error",GetLastError());
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_LISTENING, (HANDLE)dat->dwIDRequest, 0);
+ dwAddrListSize = MraFilesQueueGetLocalAddressesList(szAddrList, sizeof(szAddrList), nlbBind.wPort);
+ }else {// не смогли слушать порт, хз почему.
+ ShowFormattedErrorMessage(L"Files exchange: cant create listen soscket, will try connect to remonte host. Error", GetLastError());
- //dwAddrListSize=0;
- memmove(szAddrList,MRA_FILES_NULL_ADDRR,sizeof(MRA_FILES_NULL_ADDRR));
- dwAddrListSize=(sizeof(MRA_FILES_NULL_ADDRR)-1);
+ //dwAddrListSize = 0;
+ memmove(szAddrList, MRA_FILES_NULL_ADDRR, sizeof(MRA_FILES_NULL_ADDRR));
+ dwAddrListSize = (sizeof(MRA_FILES_NULL_ADDRR)-1);
}
- }else{// подставляем ложный адрес, чтобы точно не подключились и не слушаем порт
- memmove(szAddrList,MRA_FILES_NULL_ADDRR,sizeof(MRA_FILES_NULL_ADDRR));
- dwAddrListSize=(sizeof(MRA_FILES_NULL_ADDRR)-1);
+ }else {// подставляем ложный адрес, чтобы точно не подключились и не слушаем порт
+ memmove(szAddrList, MRA_FILES_NULL_ADDRR, sizeof(MRA_FILES_NULL_ADDRR));
+ dwAddrListSize = (sizeof(MRA_FILES_NULL_ADDRR)-1);
}
if (dwAddrListSize)
{
- pmrafqFilesQueueItem->hWaitHandle=CreateEvent(NULL,TRUE,FALSE,NULL);
- if (pmrafqFilesQueueItem->bSending==FALSE)
+ dat->hWaitHandle = CreateEvent(NULL, TRUE, FALSE, NULL);
+ if (dat->bSending == FALSE)
{// запрашиваем зеркальное соединение, тк сами подключится не смогли
- MraSendCommand_FileTransferAck(FILE_TRANSFER_MIRROR,szEMail,dwEMailSize,pmrafqFilesQueueItem->dwIDRequest,(LPBYTE)szAddrList,dwAddrListSize);
- }else{// здесь отправляем запрос на передачу(установление соединения)
+ MraFileTransferAck(FILE_TRANSFER_MIRROR, szEMail, dwEMailSize, dat->dwIDRequest, (LPBYTE)szAddrList, dwAddrListSize);
+ }else {// здесь отправляем запрос на передачу(установление соединения)
// создаём текстовый список файлов для отправки другой стороне
- LPWSTR lpwszFiles,lpwszCurPos;
- SIZE_T dwFilesSize;
+ LPWSTR lpwszFiles, lpwszCurPos;
+ size_t dwFilesSize;
- dwFilesSize=((MAX_PATH*2)*pmrafqFilesQueueItem->dwFilesCount);
- lpwszFiles=(LPWSTR)MEMALLOC((dwFilesSize*sizeof(WCHAR)));
+ dwFilesSize = ((MAX_PATH*2)*dat->dwFilesCount);
+ lpwszFiles = (LPWSTR)mir_calloc((dwFilesSize*sizeof(WCHAR)));
if (lpwszFiles)
{
- lpwszCurPos=lpwszFiles;
- for(SIZE_T i=0;i<pmrafqFilesQueueItem->dwFilesCount;i++)
+ lpwszCurPos = lpwszFiles;
+ for (size_t i = 0;i<dat->dwFilesCount;i++)
{
- lpwszCurPos+=mir_sntprintf(lpwszCurPos,(dwFilesSize-((SIZE_T)lpwszCurPos-(SIZE_T)lpwszFiles)),L"%s;%I64u;",GetFileNameFromFullPathW(pmrafqFilesQueueItem->pmfqfFiles[i].lpwszName,pmrafqFilesQueueItem->pmfqfFiles[i].dwNameLen),pmrafqFilesQueueItem->pmfqfFiles[i].dwSize);
+ lpwszCurPos += mir_sntprintf(lpwszCurPos, (dwFilesSize-((size_t)lpwszCurPos-(size_t)lpwszFiles)), L"%s;%I64u;", GetFileNameFromFullPathW(dat->pmfqfFiles[i].lpwszName, dat->pmfqfFiles[i].dwNameLen), dat->pmfqfFiles[i].dwSize);
}
- dwFilesSize=(lpwszCurPos-lpwszFiles);// size in WCHARs
+ dwFilesSize = (lpwszCurPos-lpwszFiles);// size in WCHARs
- if (pmrafqFilesQueueItem->hMraMrimProxyData)
+ if (dat->hMraMrimProxyData)
{// устанавливаем данные для майловской прокси, если она разрешена
LPSTR lpszFiles;
- SIZE_T dwFilesSizeA;
+ size_t dwFilesSizeA;
- dwFilesSizeA=WideCharToMultiByte(MRA_CODE_PAGE,0,lpwszFiles,dwFilesSize,NULL,0,NULL,NULL);
- lpszFiles=(LPSTR)MEMALLOC((dwFilesSizeA+MAX_PATH));
+ dwFilesSizeA = WideCharToMultiByte(MRA_CODE_PAGE, 0, lpwszFiles, dwFilesSize, NULL, 0, NULL, NULL);
+ lpszFiles = (LPSTR)mir_calloc((dwFilesSizeA+MAX_PATH));
if (lpszFiles)
{
- dwFilesSizeA=WideCharToMultiByte(MRA_CODE_PAGE,0,lpwszFiles,dwFilesSize,lpszFiles,(dwFilesSizeA+MAX_PATH),NULL,NULL);
- MraMrimProxySetData(pmrafqFilesQueueItem->hMraMrimProxyData,szEMail,dwEMailSize,pmrafqFilesQueueItem->dwIDRequest,MRIM_PROXY_TYPE_FILES,lpszFiles,dwFilesSizeA,NULL,0,NULL);
- MEMFREE(lpszFiles);
+ dwFilesSizeA = WideCharToMultiByte(MRA_CODE_PAGE, 0, lpwszFiles, dwFilesSize, lpszFiles, (dwFilesSizeA+MAX_PATH), NULL, NULL);
+ MraMrimProxySetData(dat->hMraMrimProxyData, szEMail, dwEMailSize, dat->dwIDRequest, MRIM_PROXY_TYPE_FILES, lpszFiles, dwFilesSizeA, NULL, 0, NULL);
+ mir_free(lpszFiles);
}
- //MraMrimProxySetData(pmrafqFilesQueueItem->hMraMrimProxyData,szEMail,dwEMailSize,pmrafqFilesQueueItem->dwIDRequest,MRIM_PROXY_TYPE_FILES,(LPSTR)lpwszFiles,dwFilesSize,NULL,0,NULL);
}
- MraSendCommand_FileTransfer(szEMail,dwEMailSize,pmrafqFilesQueueItem->dwIDRequest,pmrafqFilesQueueItem->dwFilesTotalSize,lpwszFiles,dwFilesSize,szAddrList,dwAddrListSize);
+ MraFileTransfer(szEMail, dwEMailSize, dat->dwIDRequest, dat->dwFilesTotalSize, lpwszFiles, dwFilesSize, szAddrList, dwAddrListSize);
- MEMFREE(lpwszFiles);
+ mir_free(lpwszFiles);
}
}
- WaitForSingleObjectEx(pmrafqFilesQueueItem->hWaitHandle,INFINITE,FALSE);
- CloseHandle(pmrafqFilesQueueItem->hWaitHandle);
- pmrafqFilesQueueItem->hWaitHandle=NULL;
+ WaitForSingleObjectEx(dat->hWaitHandle, INFINITE, FALSE);
+ CloseHandle(dat->hWaitHandle);
+ dat->hWaitHandle = NULL;
}
}
- hRet=pmrafqFilesQueueItem->hConnection;
+ hRet = dat->hConnection;
}
return(hRet);
}
// This function is called from the Netlib when someone is connecting to
// one of our incomming DC ports
-void MraFilesQueueConnectionReceived(HANDLE hNewConnection,DWORD dwRemoteIP,void *pExtra)
+void MraFilesQueueConnectionReceived(HANDLE hNewConnection, DWORD dwRemoteIP, void *pExtra)
{
- if (pExtra)
- {
- MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem=(MRA_FILES_QUEUE_ITEM*)pExtra;
-
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_CONNECTED,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
- if (MraFilesQueueHandCheck(hNewConnection,pmrafqFilesQueueItem))
- {// связь установленная с тем кем нужно
- pmrafqFilesQueueItem->hConnection=hNewConnection;
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_CONNECTED,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
- DB_Mra_SetDword(pmrafqFilesQueueItem->hContact,"OldIP",DB_Mra_GetDword(pmrafqFilesQueueItem->hContact,"IP",0));
- DB_Mra_SetDword(pmrafqFilesQueueItem->hContact,"IP",dwRemoteIP);
- SetEvent(pmrafqFilesQueueItem->hWaitHandle);
- }else{// кажется кто то не туда подключилися :)
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_LISTENING,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
+ if (pExtra) {
+ MRA_FILES_QUEUE_ITEM *dat = (MRA_FILES_QUEUE_ITEM*)pExtra;
+
+ ProtoBroadcastAck(dat->ppro->m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_CONNECTED, (HANDLE)dat->dwIDRequest, 0);
+ if ( dat->ppro->MraFilesQueueHandCheck(hNewConnection, dat)) { // связь установленная с тем кем нужно
+ dat->hConnection = hNewConnection;
+ ProtoBroadcastAck(dat->ppro->m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_CONNECTED, (HANDLE)dat->dwIDRequest, 0);
+ dat->ppro->mraSetDword(dat->hContact, "OldIP", dat->ppro->mraGetDword(dat->hContact, "IP", 0));
+ dat->ppro->mraSetDword(dat->hContact, "IP", dwRemoteIP);
+ SetEvent(dat->hWaitHandle);
+ }else {// кажется кто то не туда подключилися :)
+ ProtoBroadcastAck(dat->ppro->m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_LISTENING, (HANDLE)dat->dwIDRequest, 0);
Netlib_CloseHandle(hNewConnection);
}
- }else{
- Netlib_CloseHandle(hNewConnection);
- MraPopupShowFromAgentW(MRA_POPUP_TYPE_DEBUG,0,TranslateW(L"MraFilesQueueConnectionReceived: connection accepted, but pExtra=NULL, this is miranda bug."));
- DebugBreak();
}
+ else Netlib_CloseHandle(hNewConnection);
}
-
-
-void MraFilesQueueRecvThreadProc(LPVOID lpParameter)
+void CMraProto::MraFilesQueueRecvThreadProc(LPVOID lpParameter)
{
- DWORD dwRetErrorCode=NO_ERROR;
+ DWORD dwRetErrorCode = NO_ERROR;
if (lpParameter)
{
- MRA_FILES_QUEUE *pmrafqFilesQueue=(MRA_FILES_QUEUE*)((MRA_FILES_THREADPROC_PARAMS*)lpParameter)->hFilesQueueHandle;
- MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem=((MRA_FILES_THREADPROC_PARAMS*)lpParameter)->pmrafqFilesQueueItem;
+ MRA_FILES_QUEUE *pmrafqFilesQueue = (MRA_FILES_QUEUE*)((MRA_FILES_THREADPROC_PARAMS*)lpParameter)->hFilesQueueHandle;
+ MRA_FILES_QUEUE_ITEM *dat = ((MRA_FILES_THREADPROC_PARAMS*)lpParameter)->dat;
- WCHAR wszFileName[MAX_FILEPATH]={0};
+ WCHAR wszFileName[MAX_FILEPATH] = {0};
WCHAR szErrorText[2048];
BYTE btBuff[BUFF_SIZE_RCV];
- BOOL bContinue,bFailed,bOK,bConnected;
- DWORD dwReceived,dwUpdateTimeNext,dwUpdateTimeCur;
+ BOOL bContinue, bFailed, bOK, bConnected;
+ DWORD dwReceived, dwUpdateTimeNext, dwUpdateTimeCur;
HANDLE hFile;
- SIZE_T i,dwBuffSizeUsed;
+ size_t i, dwBuffSizeUsed;
LARGE_INTEGER liFileSize;
- NETLIBSELECT nls={0};
- PROTOFILETRANSFERSTATUS pfts={0};
+ NETLIBSELECT nls = {0};
+ PROTOFILETRANSFERSTATUS pfts = {0};
- MEMFREE(lpParameter);
+ mir_free(lpParameter);
- bFailed=TRUE;
- bConnected=FALSE;
- nls.cbSize=sizeof(nls);
- pfts.cbSize=sizeof(pfts);
- pfts.hContact=pmrafqFilesQueueItem->hContact;
- pfts.flags=(PFTS_RECEIVING|PFTS_UNICODE);// pfts.sending=pmrafqFilesQueueItem->bSending; //true if sending, false if receiving
+ bFailed = TRUE;
+ bConnected = FALSE;
+ nls.cbSize = sizeof(nls);
+ pfts.cbSize = sizeof(pfts);
+ pfts.hContact = dat->hContact;
+ pfts.flags = (PFTS_RECEIVING|PFTS_UNICODE);// pfts.sending = dat->bSending; //true if sending, false if receiving
//pfts.files;
- pfts.totalFiles=pmrafqFilesQueueItem->dwFilesCount;
- //pfts.currentFileNumber=0;
- pfts.totalBytes=pmrafqFilesQueueItem->dwFilesTotalSize;
- //pfts.totalProgress=0;
- pfts.wszWorkingDir=pmrafqFilesQueueItem->lpwszPath;
+ pfts.totalFiles = dat->dwFilesCount;
+ //pfts.currentFileNumber = 0;
+ pfts.totalBytes = dat->dwFilesTotalSize;
+ //pfts.totalProgress = 0;
+ pfts.wszWorkingDir = dat->lpwszPath;
//pfts.currentFile;
//pfts.currentFileSize;
//pfts.currentFileProgress;
//pfts.currentFileTime; //as seconds since 1970
- if (MraFilesQueueConnectOut(pmrafqFilesQueueItem))
+ if (MraFilesQueueConnectOut(dat))
{
- bConnected=TRUE;
- }else{
- if (MraFilesQueueConnectIn(pmrafqFilesQueueItem))
+ bConnected = TRUE;
+ }else {
+ if (MraFilesQueueConnectIn(dat))
{
- bConnected=TRUE;
- }else{
- if (InterlockedExchangeAdd((volatile LONG*)&pmrafqFilesQueueItem->bIsWorking,0))
+ bConnected = TRUE;
+ }else {
+ if (InterlockedExchangeAdd((volatile LONG*)&dat->bIsWorking, 0))
{
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKRESULT_CONNECTPROXY,ACKRESULT_CONNECTED,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
- if (MraMrimProxyConnect(pmrafqFilesQueueItem->hMraMrimProxyData,&pmrafqFilesQueueItem->hConnection)==NO_ERROR)
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKRESULT_CONNECTPROXY, ACKRESULT_CONNECTED, (HANDLE)dat->dwIDRequest, 0);
+ if (MraMrimProxyConnect(dat->hMraMrimProxyData, &dat->hConnection) == NO_ERROR)
{// подключились к прокси, проверяем та ли сессия (ещё раз, на этот раз сами)
- if (MraFilesQueueHandCheck(pmrafqFilesQueueItem->hConnection,pmrafqFilesQueueItem))
- {// связь установленная с тем кем нужно// pmrafqFilesQueueItem->bSending
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_CONNECTED,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
- bConnected=TRUE;
+ if (MraFilesQueueHandCheck(dat->hConnection, dat))
+ {// связь установленная с тем кем нужно// dat->bSending
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_CONNECTED, (HANDLE)dat->dwIDRequest, 0);
+ bConnected = TRUE;
}
}
}
@@ -1070,218 +993,218 @@ void MraFilesQueueRecvThreadProc(LPVOID lpParameter) if (bConnected)
{// email verifyed
- bFailed=FALSE;
- for(i=0;i<pmrafqFilesQueueItem->dwFilesCount;i++)
+ bFailed = FALSE;
+ for (i = 0;i<dat->dwFilesCount;i++)
{// receiving files
- pfts.currentFileNumber=i;
- pfts.wszCurrentFile=wszFileName;
- pfts.currentFileSize=pmrafqFilesQueueItem->pmfqfFiles[i].dwSize;
- pfts.currentFileProgress=0;
+ pfts.currentFileNumber = i;
+ pfts.wszCurrentFile = wszFileName;
+ pfts.currentFileSize = dat->pmfqfFiles[i].dwSize;
+ pfts.currentFileProgress = 0;
//pfts.currentFileTime; //as seconds since 1970
- if ((pmrafqFilesQueueItem->dwPathSize+pmrafqFilesQueueItem->pmfqfFiles[i].dwNameLen)<SIZEOF(wszFileName))
+ if ((dat->dwPathSize+dat->pmfqfFiles[i].dwNameLen)<SIZEOF(wszFileName))
{
- memmove(wszFileName,pmrafqFilesQueueItem->lpwszPath,(pmrafqFilesQueueItem->dwPathSize*sizeof(WCHAR)));
- memmove((wszFileName+pmrafqFilesQueueItem->dwPathSize),pmrafqFilesQueueItem->pmfqfFiles[i].lpwszName,((pmrafqFilesQueueItem->pmfqfFiles[i].dwNameLen+1)*sizeof(WCHAR)));
- wszFileName[pmrafqFilesQueueItem->dwPathSize+pmrafqFilesQueueItem->pmfqfFiles[i].dwNameLen]=0;
- }else{
- dwRetErrorCode=ERROR_BAD_PATHNAME;
- ShowFormatedErrorMessage(L"Receive files: error",dwRetErrorCode);
- bFailed=TRUE;
+ memmove(wszFileName, dat->lpwszPath, (dat->dwPathSize*sizeof(WCHAR)));
+ memmove((wszFileName+dat->dwPathSize), dat->pmfqfFiles[i].lpwszName, ((dat->pmfqfFiles[i].dwNameLen+1)*sizeof(WCHAR)));
+ wszFileName[dat->dwPathSize+dat->pmfqfFiles[i].dwNameLen] = 0;
+ }else {
+ dwRetErrorCode = ERROR_BAD_PATHNAME;
+ ShowFormattedErrorMessage(L"Receive files: error", dwRetErrorCode);
+ bFailed = TRUE;
break;
}
//***deb add
- //dwBuffSizeUsed=ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_FILERESUME,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,(LPARAM)&pfts);
+ //dwBuffSizeUsed = ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_FILERESUME, (HANDLE)dat->dwIDRequest, (LPARAM)&pfts);
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_NEXTFILE,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_NEXTFILE, (HANDLE)dat->dwIDRequest, 0);
- //dwBuffSizeUsed=(mir_snprintf((LPSTR)btBuff,SIZEOF(btBuff),"%s %S",MRA_FT_GET_FILE,pmrafqFilesQueueItem->pmfqfFiles[i].lpwszName)+1);
- memmove(btBuff,MRA_FT_GET_FILE,sizeof(MRA_FT_GET_FILE));
- btBuff[(sizeof(MRA_FT_GET_FILE)-1)]=' ';
- dwBuffSizeUsed=sizeof(MRA_FT_GET_FILE)+WideCharToMultiByte(MRA_CODE_PAGE,0,pmrafqFilesQueueItem->pmfqfFiles[i].lpwszName,pmrafqFilesQueueItem->pmfqfFiles[i].dwNameLen,(LPSTR)(btBuff+sizeof(MRA_FT_GET_FILE)),(SIZEOF(btBuff)-sizeof(MRA_FT_GET_FILE)),NULL,NULL);
- btBuff[dwBuffSizeUsed]=0;
+ //dwBuffSizeUsed = (mir_snprintf((LPSTR)btBuff, SIZEOF(btBuff), "%s %S", MRA_FT_GET_FILE, dat->pmfqfFiles[i].lpwszName)+1);
+ memmove(btBuff, MRA_FT_GET_FILE, sizeof(MRA_FT_GET_FILE));
+ btBuff[(sizeof(MRA_FT_GET_FILE)-1)] = ' ';
+ dwBuffSizeUsed = sizeof(MRA_FT_GET_FILE)+WideCharToMultiByte(MRA_CODE_PAGE, 0, dat->pmfqfFiles[i].lpwszName, dat->pmfqfFiles[i].dwNameLen, (LPSTR)(btBuff+sizeof(MRA_FT_GET_FILE)), (SIZEOF(btBuff)-sizeof(MRA_FT_GET_FILE)), NULL, NULL);
+ btBuff[dwBuffSizeUsed] = 0;
dwBuffSizeUsed++;
- if (dwBuffSizeUsed==Netlib_Send(pmrafqFilesQueueItem->hConnection,(LPSTR)btBuff,dwBuffSizeUsed,0))
+ if (dwBuffSizeUsed == Netlib_Send(dat->hConnection, (LPSTR)btBuff, dwBuffSizeUsed, 0))
{// file request sended
- hFile=CreateFileW(wszFileName,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
- if (hFile!=INVALID_HANDLE_VALUE)
+ hFile = CreateFileW(wszFileName, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ if (hFile != INVALID_HANDLE_VALUE)
{// file opened/created, pre allocating disk space, for best perfomance
- bOK=FALSE;
+ bOK = FALSE;
- liFileSize.QuadPart=(LONGLONG)pmrafqFilesQueueItem->pmfqfFiles[i].dwSize;
- if (SetFilePointerEx(hFile,liFileSize,NULL,FILE_BEGIN))
+ liFileSize.QuadPart = (LONGLONG)dat->pmfqfFiles[i].dwSize;
+ if (SetFilePointerEx(hFile, liFileSize, NULL, FILE_BEGIN))
if (SetEndOfFile(hFile))
{
- liFileSize.QuadPart=0;
- bOK=SetFilePointerEx(hFile,liFileSize,NULL,FILE_BEGIN);
+ liFileSize.QuadPart = 0;
+ bOK = SetFilePointerEx(hFile, liFileSize, NULL, FILE_BEGIN);
}
if (bOK)
{// disk space pre allocated
- bOK=FALSE;
- bContinue=TRUE;
- dwUpdateTimeNext=GetTickCount();
- nls.dwTimeout=(1000*DB_Mra_GetDword(NULL,"TimeOutReceiveFileData",MRA_DEF_FS_TIMEOUT_RECV));
- nls.hReadConns[0]=pmrafqFilesQueueItem->hConnection;
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_DATA,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,(LPARAM)&pfts);
+ bOK = FALSE;
+ bContinue = TRUE;
+ dwUpdateTimeNext = GetTickCount();
+ nls.dwTimeout = (1000*mraGetDword(NULL, "TimeOutReceiveFileData", MRA_DEF_FS_TIMEOUT_RECV));
+ nls.hReadConns[0] = dat->hConnection;
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_DATA, (HANDLE)dat->dwIDRequest, (LPARAM)&pfts);
while(bContinue)
{
- switch(CallService(MS_NETLIB_SELECT,0,(LPARAM)&nls)) {
+ switch (CallService(MS_NETLIB_SELECT, 0, (LPARAM)&nls)) {
case SOCKET_ERROR:
case 0:// Time out
- dwRetErrorCode=GetLastError();
- ShowFormatedErrorMessage(L"Receive files: error on receive file data",dwRetErrorCode);
- bContinue=FALSE;
+ dwRetErrorCode = GetLastError();
+ ShowFormattedErrorMessage(L"Receive files: error on receive file data", dwRetErrorCode);
+ bContinue = FALSE;
break;
case 1:
- dwReceived=Netlib_Recv(pmrafqFilesQueueItem->hConnection,(LPSTR)&btBuff,SIZEOF(btBuff),0);
- if (dwReceived==0 || dwReceived==SOCKET_ERROR)
+ dwReceived = Netlib_Recv(dat->hConnection, (LPSTR)&btBuff, SIZEOF(btBuff), 0);
+ if (dwReceived == 0 || dwReceived == SOCKET_ERROR)
{
- dwRetErrorCode=GetLastError();
- ShowFormatedErrorMessage(L"Receive files: error on receive file data",dwRetErrorCode);
- bContinue=FALSE;
- }else{
- if (WriteFile(hFile,(LPVOID)&btBuff,dwReceived,&dwReceived,NULL))
+ dwRetErrorCode = GetLastError();
+ ShowFormattedErrorMessage(L"Receive files: error on receive file data", dwRetErrorCode);
+ bContinue = FALSE;
+ }else {
+ if (WriteFile(hFile, (LPVOID)&btBuff, dwReceived, &dwReceived, NULL))
{
- pfts.currentFileProgress+=dwReceived;
- pfts.totalProgress+=dwReceived;
+ pfts.currentFileProgress += dwReceived;
+ pfts.totalProgress += dwReceived;
// progress updates
- dwUpdateTimeCur=GetTickCount();
- if (dwUpdateTimeNext<=dwUpdateTimeCur || pfts.currentFileProgress>=pmrafqFilesQueueItem->pmfqfFiles[i].dwSize)
+ dwUpdateTimeCur = GetTickCount();
+ if (dwUpdateTimeNext <= dwUpdateTimeCur || pfts.currentFileProgress >= dat->pmfqfFiles[i].dwSize)
{// we update it
- dwUpdateTimeNext=dwUpdateTimeCur+MRA_FILES_QUEUE_PROGRESS_INTERVAL;
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_DATA,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,(LPARAM)&pfts);
+ dwUpdateTimeNext = dwUpdateTimeCur+MRA_FILES_QUEUE_PROGRESS_INTERVAL;
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_DATA, (HANDLE)dat->dwIDRequest, (LPARAM)&pfts);
- if (pfts.currentFileProgress>=pmrafqFilesQueueItem->pmfqfFiles[i].dwSize)
+ if (pfts.currentFileProgress >= dat->pmfqfFiles[i].dwSize)
{// file received
- bOK=TRUE;
- bContinue=FALSE;
+ bOK = TRUE;
+ bContinue = FALSE;
}
}
- }else{// err on write file
- dwRetErrorCode=GetLastError();
- ShowFormatedErrorMessage(L"Receive files: cant write file data, error",dwRetErrorCode);
- bContinue=FALSE;
+ }else {// err on write file
+ dwRetErrorCode = GetLastError();
+ ShowFormattedErrorMessage(L"Receive files: cant write file data, error", dwRetErrorCode);
+ bContinue = FALSE;
}
}
break;
}
}// end while
- }else{// err allocating file disk space
- dwRetErrorCode=GetLastError();
- mir_sntprintf(szErrorText,SIZEOF(szErrorText),TranslateW(L"Receive files: cant allocate disk space for file, size %lu bytes, error"),pmrafqFilesQueueItem->pmfqfFiles[i].dwSize);
- ShowFormatedErrorMessage(szErrorText,dwRetErrorCode);
+ }else {// err allocating file disk space
+ dwRetErrorCode = GetLastError();
+ mir_sntprintf(szErrorText, SIZEOF(szErrorText), TranslateW(L"Receive files: cant allocate disk space for file, size %lu bytes, error"), dat->pmfqfFiles[i].dwSize);
+ ShowFormattedErrorMessage(szErrorText, dwRetErrorCode);
}
CloseHandle(hFile);
- if (bOK==FALSE)
+ if (bOK == FALSE)
{// file recv failed
DeleteFileW(wszFileName);
- bFailed=TRUE;
+ bFailed = TRUE;
break;
}
- }else{// err on open file
- dwRetErrorCode=GetLastError();
- mir_sntprintf(szErrorText,SIZEOF(szErrorText),TranslateW(L"Receive files: cant open file %s, error"),wszFileName);
- ShowFormatedErrorMessage(szErrorText,dwRetErrorCode);
- bFailed=TRUE;
+ }else {// err on open file
+ dwRetErrorCode = GetLastError();
+ mir_sntprintf(szErrorText, SIZEOF(szErrorText), TranslateW(L"Receive files: cant open file %s, error"), wszFileName);
+ ShowFormattedErrorMessage(szErrorText, dwRetErrorCode);
+ bFailed = TRUE;
break;
}
- }else{// err on send request for file
- dwRetErrorCode=GetLastError();
- mir_sntprintf(szErrorText,SIZEOF(szErrorText),TranslateW(L"Receive files: request for file %s not sended, error"),pmrafqFilesQueueItem->pmfqfFiles[i].lpwszName);
- ShowFormatedErrorMessage(szErrorText,NO_ERROR);
- bFailed=TRUE;
+ }else {// err on send request for file
+ dwRetErrorCode = GetLastError();
+ mir_sntprintf(szErrorText, SIZEOF(szErrorText), TranslateW(L"Receive files: request for file %s not sended, error"), dat->pmfqfFiles[i].lpwszName);
+ ShowFormattedErrorMessage(szErrorText, NO_ERROR);
+ bFailed = TRUE;
break;
}
}// end for
- Netlib_CloseHandle(pmrafqFilesQueueItem->hConnection);
- pmrafqFilesQueueItem->hConnection=NULL;
+ Netlib_CloseHandle(dat->hConnection);
+ dat->hConnection = NULL;
}
if (bFailed)
{
CHAR szEMail[MAX_EMAIL_LEN];
- SIZE_T dwEMailSize;
+ size_t dwEMailSize;
- if (DB_Mra_GetStaticStringA(pmrafqFilesQueueItem->hContact,"e-mail",szEMail,SIZEOF(szEMail),&dwEMailSize))
+ if (mraGetStaticStringA(dat->hContact, "e-mail", szEMail, SIZEOF(szEMail), &dwEMailSize))
{
- MraSendCommand_FileTransferAck(FILE_TRANSFER_STATUS_ERROR,szEMail,dwEMailSize,pmrafqFilesQueueItem->dwIDRequest,NULL,0);
+ MraFileTransferAck(FILE_TRANSFER_STATUS_ERROR, szEMail, dwEMailSize, dat->dwIDRequest, NULL, 0);
}
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_FAILED,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
- }else{
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_SUCCESS,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_FAILED, (HANDLE)dat->dwIDRequest, 0);
+ }else {
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_SUCCESS, (HANDLE)dat->dwIDRequest, 0);
}
- ListMTLock(&pmrafqFilesQueue->lmtListMT);
- MraFilesQueueItemFree(pmrafqFilesQueueItem);
- ListMTUnLock(&pmrafqFilesQueue->lmtListMT);
+ ListMTLock(pmrafqFilesQueue);
+ MraFilesQueueItemFree(dat);
+ ListMTUnLock(pmrafqFilesQueue);
}
}
-void MraFilesQueueSendThreadProc(LPVOID lpParameter)
+void CMraProto::MraFilesQueueSendThreadProc(LPVOID lpParameter)
{
- DWORD dwRetErrorCode=NO_ERROR;
+ DWORD dwRetErrorCode = NO_ERROR;
if (lpParameter)
{
- MRA_FILES_QUEUE *pmrafqFilesQueue=(MRA_FILES_QUEUE*)((MRA_FILES_THREADPROC_PARAMS*)lpParameter)->hFilesQueueHandle;
- MRA_FILES_QUEUE_ITEM *pmrafqFilesQueueItem=((MRA_FILES_THREADPROC_PARAMS*)lpParameter)->pmrafqFilesQueueItem;
+ MRA_FILES_QUEUE *pmrafqFilesQueue = (MRA_FILES_QUEUE*)((MRA_FILES_THREADPROC_PARAMS*)lpParameter)->hFilesQueueHandle;
+ MRA_FILES_QUEUE_ITEM *dat = ((MRA_FILES_THREADPROC_PARAMS*)lpParameter)->dat;
- CHAR szFileName[MAX_FILEPATH]={0};
+ CHAR szFileName[MAX_FILEPATH] = {0};
WCHAR szErrorText[2048];
BYTE btBuff[BUFF_SIZE_RCV];
- BOOL bFailed=TRUE,bOK,bConnected=FALSE;
- DWORD dwReceived,dwSendBlockSize,dwUpdateTimeNext,dwUpdateTimeCur;
+ BOOL bFailed = TRUE, bOK, bConnected = FALSE;
+ DWORD dwReceived, dwSendBlockSize, dwUpdateTimeNext, dwUpdateTimeCur;
HANDLE hFile;
- SIZE_T i,j,dwBuffSizeUsed=0;
+ size_t i, j, dwBuffSizeUsed = 0;
LPWSTR lpwszFileName;
- PROTOFILETRANSFERSTATUS pfts={0};
+ PROTOFILETRANSFERSTATUS pfts = {0};
- MEMFREE(lpParameter);
+ mir_free(lpParameter);
- pfts.cbSize=sizeof(pfts);
- pfts.hContact=pmrafqFilesQueueItem->hContact;
- pfts.flags=(PFTS_SENDING|PFTS_UNICODE);// pfts.sending=pmrafqFilesQueueItem->bSending; //true if sending, false if receiving
+ pfts.cbSize = sizeof(pfts);
+ pfts.hContact = dat->hContact;
+ pfts.flags = (PFTS_SENDING|PFTS_UNICODE);// pfts.sending = dat->bSending; //true if sending, false if receiving
//pfts.files;
- pfts.totalFiles=pmrafqFilesQueueItem->dwFilesCount;
- //pfts.currentFileNumber=0;
- pfts.totalBytes=pmrafqFilesQueueItem->dwFilesTotalSize;
- //pfts.totalProgress=0;
- pfts.wszWorkingDir=pmrafqFilesQueueItem->lpwszPath;
+ pfts.totalFiles = dat->dwFilesCount;
+ //pfts.currentFileNumber = 0;
+ pfts.totalBytes = dat->dwFilesTotalSize;
+ //pfts.totalProgress = 0;
+ pfts.wszWorkingDir = dat->lpwszPath;
//pfts.currentFile;
//pfts.currentFileSize;
//pfts.currentFileProgress;
//pfts.currentFileTime; //as seconds since 1970
- dwSendBlockSize=DB_Mra_GetDword(NULL,"FileSendBlockSize",MRA_DEFAULT_FILE_SEND_BLOCK_SIZE);
- if (dwSendBlockSize>SIZEOF(btBuff)) dwSendBlockSize=SIZEOF(btBuff);
- if (dwSendBlockSize<512) dwSendBlockSize=MRA_DEFAULT_FILE_SEND_BLOCK_SIZE;
+ dwSendBlockSize = mraGetDword(NULL, "FileSendBlockSize", MRA_DEFAULT_FILE_SEND_BLOCK_SIZE);
+ if (dwSendBlockSize>SIZEOF(btBuff)) dwSendBlockSize = SIZEOF(btBuff);
+ if (dwSendBlockSize<512) dwSendBlockSize = MRA_DEFAULT_FILE_SEND_BLOCK_SIZE;
- if (MraFilesQueueConnectIn(pmrafqFilesQueueItem))
+ if (MraFilesQueueConnectIn(dat))
{
- bConnected=TRUE;
- }else{
- if (MraFilesQueueConnectOut(pmrafqFilesQueueItem))
+ bConnected = TRUE;
+ }else {
+ if (MraFilesQueueConnectOut(dat))
{
- bConnected=TRUE;
- }else{
- if (InterlockedExchangeAdd((volatile LONG*)&pmrafqFilesQueueItem->bIsWorking,0))
+ bConnected = TRUE;
+ }else {
+ if (InterlockedExchangeAdd((volatile LONG*)&dat->bIsWorking, 0))
{
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKRESULT_CONNECTPROXY,ACKRESULT_CONNECTED,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
- if (MraMrimProxyConnect(pmrafqFilesQueueItem->hMraMrimProxyData,&pmrafqFilesQueueItem->hConnection)==NO_ERROR)
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKRESULT_CONNECTPROXY, ACKRESULT_CONNECTED, (HANDLE)dat->dwIDRequest, 0);
+ if (MraMrimProxyConnect(dat->hMraMrimProxyData, &dat->hConnection) == NO_ERROR)
{// подключились к прокси, проверяем та ли сессия (ещё раз, на этот раз сами)
- if (MraFilesQueueHandCheck(pmrafqFilesQueueItem->hConnection,pmrafqFilesQueueItem))
- {// связь установленная с тем кем нужно// pmrafqFilesQueueItem->bSending
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_CONNECTED,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
- bConnected=TRUE;
+ if (MraFilesQueueHandCheck(dat->hConnection, dat))
+ {// связь установленная с тем кем нужно// dat->bSending
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_CONNECTED, (HANDLE)dat->dwIDRequest, 0);
+ bConnected = TRUE;
}
}
}
@@ -1290,154 +1213,154 @@ void MraFilesQueueSendThreadProc(LPVOID lpParameter) if (bConnected)
{// email verifyed
- bFailed=FALSE;
- for(i=0;i<pmrafqFilesQueueItem->dwFilesCount;i++)
+ bFailed = FALSE;
+ for (i = 0;i<dat->dwFilesCount;i++)
{// sending files
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_NEXTFILE,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_NEXTFILE, (HANDLE)dat->dwIDRequest, 0);
- dwBuffSizeUsed=0;
+ dwBuffSizeUsed = 0;
while(TRUE)
{
- dwReceived=Netlib_Recv(pmrafqFilesQueueItem->hConnection,((LPSTR)btBuff+dwBuffSizeUsed),(SIZEOF(btBuff)-dwBuffSizeUsed),0);
- if (dwReceived==0 || dwReceived==SOCKET_ERROR)
+ dwReceived = Netlib_Recv(dat->hConnection, ((LPSTR)btBuff+dwBuffSizeUsed), (SIZEOF(btBuff)-dwBuffSizeUsed), 0);
+ if (dwReceived == 0 || dwReceived == SOCKET_ERROR)
{// err on receive file name to send
- dwRetErrorCode=GetLastError();
- ShowFormatedErrorMessage(L"Send files: file send request not received, error",dwRetErrorCode);
- bFailed=TRUE;
+ dwRetErrorCode = GetLastError();
+ ShowFormattedErrorMessage(L"Send files: file send request not received, error", dwRetErrorCode);
+ bFailed = TRUE;
break;
- }else{
- dwBuffSizeUsed+=dwReceived;
- if (MemoryFindByte((dwBuffSizeUsed-dwReceived),btBuff,dwBuffSizeUsed,0)) break;
+ }else {
+ dwBuffSizeUsed += dwReceived;
+ if (MemoryFindByte((dwBuffSizeUsed-dwReceived), btBuff, dwBuffSizeUsed, 0)) break;
}
}// end while (file name passible received)*/
- if (bFailed==FALSE)
+ if (bFailed == FALSE)
{// ...received
if (dwBuffSizeUsed>(sizeof(MRA_FT_GET_FILE)+1))
{// file name received
- if (CompareStringA(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),NORM_IGNORECASE,(LPSTR)btBuff,(sizeof(MRA_FT_GET_FILE)-1),MRA_FT_GET_FILE,(sizeof(MRA_FT_GET_FILE)-1))==CSTR_EQUAL)
+ if (CompareStringA( MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), NORM_IGNORECASE, (LPSTR)btBuff, (sizeof(MRA_FT_GET_FILE)-1), MRA_FT_GET_FILE, (sizeof(MRA_FT_GET_FILE)-1)) == CSTR_EQUAL)
{// MRA_FT_GET_FILE verifyed
- bFailed=TRUE;
- for(j=0;j<pmrafqFilesQueueItem->dwFilesCount;j++)
+ bFailed = TRUE;
+ for (j = 0;j<dat->dwFilesCount;j++)
{
- lpwszFileName=GetFileNameFromFullPathW(pmrafqFilesQueueItem->pmfqfFiles[j].lpwszName,pmrafqFilesQueueItem->pmfqfFiles[j].dwNameLen);
- szFileName[WideCharToMultiByte(MRA_CODE_PAGE,0,lpwszFileName,(pmrafqFilesQueueItem->pmfqfFiles[j].dwNameLen-(lpwszFileName-pmrafqFilesQueueItem->pmfqfFiles[j].lpwszName)),szFileName,SIZEOF(szFileName),NULL,NULL)]=0;
+ lpwszFileName = GetFileNameFromFullPathW(dat->pmfqfFiles[j].lpwszName, dat->pmfqfFiles[j].dwNameLen);
+ szFileName[WideCharToMultiByte(MRA_CODE_PAGE, 0, lpwszFileName, (dat->pmfqfFiles[j].dwNameLen-(lpwszFileName-dat->pmfqfFiles[j].lpwszName)), szFileName, SIZEOF(szFileName), NULL, NULL)] = 0;
- if (CompareStringA(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),NORM_IGNORECASE,(((LPSTR)btBuff)+sizeof(MRA_FT_GET_FILE)),(dwBuffSizeUsed-(sizeof(MRA_FT_GET_FILE)+1)),szFileName,-1)==CSTR_EQUAL)
+ if (CompareStringA( MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), NORM_IGNORECASE, (((LPSTR)btBuff)+sizeof(MRA_FT_GET_FILE)), (dwBuffSizeUsed-(sizeof(MRA_FT_GET_FILE)+1)), szFileName, -1) == CSTR_EQUAL)
{
- bFailed=FALSE;
+ bFailed = FALSE;
break;
}
}
- if (bFailed==FALSE)
+ if (bFailed == FALSE)
{
- hFile=CreateFileW(pmrafqFilesQueueItem->pmfqfFiles[j].lpwszName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,(FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN),NULL);
- if (hFile!=INVALID_HANDLE_VALUE)
+ hFile = CreateFileW(dat->pmfqfFiles[j].lpwszName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, (FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN), NULL);
+ if (hFile != INVALID_HANDLE_VALUE)
{
- bOK=FALSE;
- dwUpdateTimeNext=GetTickCount();
- pfts.currentFileNumber=i;
- pfts.wszCurrentFile=pmrafqFilesQueueItem->pmfqfFiles[j].lpwszName;
- pfts.currentFileSize=pmrafqFilesQueueItem->pmfqfFiles[j].dwSize;
- pfts.currentFileProgress=0;
+ bOK = FALSE;
+ dwUpdateTimeNext = GetTickCount();
+ pfts.currentFileNumber = i;
+ pfts.wszCurrentFile = dat->pmfqfFiles[j].lpwszName;
+ pfts.currentFileSize = dat->pmfqfFiles[j].dwSize;
+ pfts.currentFileProgress = 0;
//pfts.currentFileTime; //as seconds since 1970
- WideCharToMultiByte(MRA_CODE_PAGE,0,pmrafqFilesQueueItem->pmfqfFiles[j].lpwszName,pmrafqFilesQueueItem->pmfqfFiles[j].dwNameLen,szFileName,SIZEOF(szFileName),NULL,NULL);
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_DATA,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,(LPARAM)&pfts);
+ WideCharToMultiByte(MRA_CODE_PAGE, 0, dat->pmfqfFiles[j].lpwszName, dat->pmfqfFiles[j].dwNameLen, szFileName, SIZEOF(szFileName), NULL, NULL);
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_DATA, (HANDLE)dat->dwIDRequest, (LPARAM)&pfts);
while(TRUE)
{// read and sending
- if (ReadFile(hFile,btBuff,dwSendBlockSize,(DWORD*)&dwBuffSizeUsed,NULL))
+ if (ReadFile(hFile, btBuff, dwSendBlockSize, (DWORD*)&dwBuffSizeUsed, NULL))
{
- dwReceived=Netlib_Send(pmrafqFilesQueueItem->hConnection,(LPSTR)btBuff,dwBuffSizeUsed,0);
- if (dwBuffSizeUsed==dwReceived)
+ dwReceived = Netlib_Send(dat->hConnection, (LPSTR)btBuff, dwBuffSizeUsed, 0);
+ if (dwBuffSizeUsed == dwReceived)
{
- pfts.currentFileProgress+=dwBuffSizeUsed;
- pfts.totalProgress+=dwBuffSizeUsed;
+ pfts.currentFileProgress += dwBuffSizeUsed;
+ pfts.totalProgress += dwBuffSizeUsed;
// progress updates
- dwUpdateTimeCur=GetTickCount();
- if (dwUpdateTimeNext<=dwUpdateTimeCur || pfts.currentFileProgress>=pmrafqFilesQueueItem->pmfqfFiles[j].dwSize)
+ dwUpdateTimeCur = GetTickCount();
+ if (dwUpdateTimeNext <= dwUpdateTimeCur || pfts.currentFileProgress >= dat->pmfqfFiles[j].dwSize)
{// we update it
- dwUpdateTimeNext=dwUpdateTimeCur+MRA_FILES_QUEUE_PROGRESS_INTERVAL;
+ dwUpdateTimeNext = dwUpdateTimeCur+MRA_FILES_QUEUE_PROGRESS_INTERVAL;
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_DATA,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,(LPARAM)&pfts);
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_DATA, (HANDLE)dat->dwIDRequest, (LPARAM)&pfts);
- if (pfts.currentFileProgress>=pmrafqFilesQueueItem->pmfqfFiles[j].dwSize)
+ if (pfts.currentFileProgress >= dat->pmfqfFiles[j].dwSize)
{// file received
- bOK=TRUE;
+ bOK = TRUE;
break;
}
}
- }else{// err on send file data
- dwRetErrorCode=GetLastError();
- ShowFormatedErrorMessage(L"Send files: error on send file data",dwRetErrorCode);
+ }else {// err on send file data
+ dwRetErrorCode = GetLastError();
+ ShowFormattedErrorMessage(L"Send files: error on send file data", dwRetErrorCode);
break;
}
- }else{// read failure
- dwRetErrorCode=GetLastError();
- ShowFormatedErrorMessage(L"Send files: cant read file data, error",dwRetErrorCode);
+ }else {// read failure
+ dwRetErrorCode = GetLastError();
+ ShowFormattedErrorMessage(L"Send files: cant read file data, error", dwRetErrorCode);
break;
}
}// end while
CloseHandle(hFile);
- if (bOK==FALSE)
+ if (bOK == FALSE)
{// file recv failed
- bFailed=TRUE;
+ bFailed = TRUE;
break;
}
- }else{// err on open file
- dwRetErrorCode=GetLastError();
+ }else {// err on open file
+ dwRetErrorCode = GetLastError();
- mir_sntprintf(szErrorText,SIZEOF(szErrorText),TranslateW(L"Send files: cant open file %s, error"),pmrafqFilesQueueItem->pmfqfFiles[j].lpwszName);
- ShowFormatedErrorMessage(szErrorText,dwRetErrorCode);
- bFailed=TRUE;
+ mir_sntprintf(szErrorText, SIZEOF(szErrorText), TranslateW(L"Send files: cant open file %s, error"), dat->pmfqfFiles[j].lpwszName);
+ ShowFormattedErrorMessage(szErrorText, dwRetErrorCode);
+ bFailed = TRUE;
break;
}
- }else{
- mir_sntprintf(szErrorText,SIZEOF(szErrorText),TranslateW(L"Send files: requested file: %S - not found in send files list."),(((LPSTR)btBuff)+sizeof(MRA_FT_GET_FILE)));
- ShowFormatedErrorMessage(szErrorText,NO_ERROR);
- bFailed=TRUE;
+ }else {
+ mir_sntprintf(szErrorText, SIZEOF(szErrorText), TranslateW(L"Send files: requested file: %S - not found in send files list."), (((LPSTR)btBuff)+sizeof(MRA_FT_GET_FILE)));
+ ShowFormattedErrorMessage(szErrorText, NO_ERROR);
+ bFailed = TRUE;
break;
}
- }else{// err on receive, trash
- ShowFormatedErrorMessage(L"Send files: bad file send request - invalid header",NO_ERROR);
- bFailed=TRUE;
+ }else {// err on receive, trash
+ ShowFormattedErrorMessage(L"Send files: bad file send request - invalid header", NO_ERROR);
+ bFailed = TRUE;
break;
}
- }else{// bad file name or trash
- ShowFormatedErrorMessage(L"Send files: bad file send request - to small packet",NO_ERROR);
- bFailed=TRUE;
+ }else {// bad file name or trash
+ ShowFormattedErrorMessage(L"Send files: bad file send request - to small packet", NO_ERROR);
+ bFailed = TRUE;
break;
}
- }else{
+ }else {
break;
}
}// end for
- Netlib_CloseHandle(pmrafqFilesQueueItem->hConnection);
- pmrafqFilesQueueItem->hConnection=NULL;
+ Netlib_CloseHandle(dat->hConnection);
+ dat->hConnection = NULL;
}
if (bFailed)
{
CHAR szEMail[MAX_EMAIL_LEN];
- SIZE_T dwEMailSize;
+ size_t dwEMailSize;
- if (DB_Mra_GetStaticStringA(pmrafqFilesQueueItem->hContact,"e-mail",szEMail,SIZEOF(szEMail),&dwEMailSize))
+ if (mraGetStaticStringA(dat->hContact, "e-mail", szEMail, SIZEOF(szEMail), &dwEMailSize))
{
- MraSendCommand_FileTransferAck(FILE_TRANSFER_STATUS_ERROR,szEMail,dwEMailSize,pmrafqFilesQueueItem->dwIDRequest,NULL,0);
+ MraFileTransferAck(FILE_TRANSFER_STATUS_ERROR, szEMail, dwEMailSize, dat->dwIDRequest, NULL, 0);
}
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_FAILED,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
- }else{
- ProtoBroadcastAck(PROTOCOL_NAMEA,pmrafqFilesQueueItem->hContact,ACKTYPE_FILE,ACKRESULT_SUCCESS,(HANDLE)pmrafqFilesQueueItem->dwIDRequest,0);
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_FAILED, (HANDLE)dat->dwIDRequest, 0);
+ }else {
+ ProtoBroadcastAck(m_szModuleName, dat->hContact, ACKTYPE_FILE, ACKRESULT_SUCCESS, (HANDLE)dat->dwIDRequest, 0);
}
- ListMTLock(&pmrafqFilesQueue->lmtListMT);
- MraFilesQueueItemFree(pmrafqFilesQueueItem);
- ListMTUnLock(&pmrafqFilesQueue->lmtListMT);
+ ListMTLock(pmrafqFilesQueue);
+ MraFilesQueueItemFree(dat);
+ ListMTUnLock(pmrafqFilesQueue);
}
}
|