diff options
author | sje <sje@4f64403b-2f21-0410-a795-97e2b3489a10> | 2008-02-06 14:23:57 +0000 |
---|---|---|
committer | sje <sje@4f64403b-2f21-0410-a795-97e2b3489a10> | 2008-02-06 14:23:57 +0000 |
commit | ea3326ea14bbfe6195c93d7def7d7073828823e6 (patch) | |
tree | 62debd113c6ee116ec27176c9eec1f7915cd8209 | |
parent | 71780cf8882b0b9f1914790910a150b5bfd6dfe2 (diff) |
fix to db service redirection
git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@392 4f64403b-2f21-0410-a795-97e2b3489a10
-rw-r--r-- | meta2/settings.cpp | 59 | ||||
-rw-r--r-- | meta2/version.h | 2 |
2 files changed, 33 insertions, 28 deletions
diff --git a/meta2/settings.cpp b/meta2/settings.cpp index b646d0b..cd5cf4c 100644 --- a/meta2/settings.cpp +++ b/meta2/settings.cpp @@ -14,7 +14,9 @@ int ServiceFuncRedirect(const char *service,WPARAM wParam, LPARAM lParam, Servic && strcmp(MS_DB_CONTACT_GETSETTINGSTATIC, service) != 0
&& strcmp(MS_DB_CONTACT_WRITESETTING, service) != 0
&& strcmp(MS_DB_CONTACT_DELETESETTING, service) != 0
- && strcmp(MS_DB_CONTACT_ENUMSETTINGS, service) != 0))
+ //&& strcmp(MS_DB_CONTACT_ENUMSETTINGS, service) != 0
+ )
+ )
{
return coreServiceFunc(service, wParam, lParam);
}
@@ -31,7 +33,7 @@ int ServiceFuncRedirect(const char *service,WPARAM wParam, LPARAM lParam, Servic const char *szSetting = 0, *szModule = 0;
bool read; // true for get setting, false for write setting
- if(strcmp(MS_DB_CONTACT_WRITESETTING, service) == 0 || strcmp(MS_DB_CONTACT_DELETESETTING, service)) {
+ if(strcmp(MS_DB_CONTACT_WRITESETTING, service) == 0 || strcmp(MS_DB_CONTACT_DELETESETTING, service) == 0) {
read = false;
DBCONTACTWRITESETTING *cws = (DBCONTACTWRITESETTING *)lParam;
szSetting = cws->szSetting;
@@ -47,7 +49,7 @@ int ServiceFuncRedirect(const char *service,WPARAM wParam, LPARAM lParam, Servic || strcmp(szModule, "Protocol") == 0
|| strcmp(szModule, "_Filter") == 0
|| (strcmp(szModule, MODULE) == 0
- && (strcmp(szSetting, "MetaID") == 0
+ && (strcmp(szSetting, META_ID) == 0
|| strcmp(szSetting, "IsSubcontact") == 0
|| strcmp(szSetting, "Default") == 0
|| strcmp(szSetting, "Handle") == 0
@@ -64,32 +66,35 @@ int ServiceFuncRedirect(const char *service,WPARAM wParam, LPARAM lParam, Servic }
HANDLE hMeta = hContact;
- int ret;
- if((ret = coreServiceFunc(service, (WPARAM)hMeta, lParam)) != 0) {
- // if the setting does not exist in the metacontact, get it from the most online subcontact
- HANDLE hSub = Meta_GetActive(hMeta);
- if(!hSub) return ret; // no most online - fail
- if((ret = coreServiceFunc(service, (WPARAM)hSub, lParam)) != 0) {
- // if it does not exist in the subcontact and we're using the meta proto module, try changing the module to the subcontact proto module
- if(strcmp(szModule, MODULE) == 0) {
- char *subProto = ContactProto(hSub);
- if(subProto) {
- if(read) {
+ HANDLE hSub = Meta_GetActive(hMeta);
+ char *subProto;
+ if(hSub == 0 || (subProto = ContactProto(hSub)) == 0) // no most online - fail
+ return coreServiceFunc(service, wParam, lParam);
+
+ int ret = 1;
+ if(read) {
+ if((ret = coreServiceFunc(service, (WPARAM)hMeta, lParam)) != 0) {
+ // if the setting does not exist in the metacontact, get it from the most online subcontact
+ if((ret = coreServiceFunc(service, (WPARAM)hSub, lParam)) != 0) {
+ // if it does not exist in the subcontact and we're using the meta proto module, try changing the module to the subcontact proto module
+ if(strcmp(szModule, MODULE) == 0) {
+ if(subProto) {
DBCONTACTGETSETTING *cgs = (DBCONTACTGETSETTING *)lParam;
- cgs->szModule = MODULE;
- } else {
- DBCONTACTWRITESETTING *cws = (DBCONTACTWRITESETTING *)lParam;
- cws->szModule = MODULE;
+ cgs->szModule = subProto;
+ ret = coreServiceFunc(service, (WPARAM)hSub, lParam);
}
- return coreServiceFunc(service, (WPARAM)hSub, lParam);
- } else
- return ret; // no subcontact proto - fail
- } else
- return ret; // not reading from meta proto module - fail
- } else
- return 0; // got from subcontact
- } else
- return 0; // got from metacontact
+ }
+ }
+ }
+ } else {
+ // write to the sub
+ DBCONTACTWRITESETTING *cws = (DBCONTACTWRITESETTING *)lParam;
+ if(strcmp(szModule, MODULE) == 0)
+ cws->szModule = subProto;
+ ret = coreServiceFunc(service, (WPARAM)hSub, lParam);
+ }
+
+ return ret;
}
int CallServiceRedirect(const char *service,WPARAM wParam, LPARAM lParam) {
diff --git a/meta2/version.h b/meta2/version.h index 72ff1e4..f02f51c 100644 --- a/meta2/version.h +++ b/meta2/version.h @@ -5,7 +5,7 @@ #define __MAJOR_VERSION 0
#define __MINOR_VERSION 0
#define __RELEASE_NUM 0
-#define __BUILD_NUM 15
+#define __BUILD_NUM 16
#define __FILEVERSION_STRING __MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM
#define __FILEVERSION_STRING_DOTS __MAJOR_VERSION.__MINOR_VERSION.__RELEASE_NUM.__BUILD_NUM
|