summaryrefslogtreecommitdiff
path: root/plugins/ProxySwitch/src/proxy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/ProxySwitch/src/proxy.cpp')
-rw-r--r--plugins/ProxySwitch/src/proxy.cpp501
1 files changed, 268 insertions, 233 deletions
diff --git a/plugins/ProxySwitch/src/proxy.cpp b/plugins/ProxySwitch/src/proxy.cpp
index 5e5ad46e65..72fb7bc4ba 100644
--- a/plugins/ProxySwitch/src/proxy.cpp
+++ b/plugins/ProxySwitch/src/proxy.cpp
@@ -9,296 +9,331 @@ the proxy settings of Miranda and Internet Explorer accordingly.
/* ################################################################################ */
-int Enum_Settings(const char *szSetting,LPARAM lParam) {
- PPROXY_SETTINGS ps = (PPROXY_SETTINGS)lParam;
-
- if ( strcmp(szSetting, "NLUseProxy") != 0 && stricmp(szSetting, "useproxy") != 0 ) return 0;
-
- if ( ps->count >= ps->_alloc ) {
- ps->_alloc += 10;
- ps->item = (PPROXY_SETTING)mir_realloc( ps->item, ps->_alloc * sizeof(PROXY_SETTING) );
- ZeroMemory( &(ps->item[ps->count]), 10 * sizeof(PROXY_SETTING) );
- }
- strncpy( ps->item[ps->count].ModuleName, ps->_current_module, MAXLABELLENGTH-1 );
- strncpy( ps->item[ps->count].SettingName, szSetting, MAXLABELLENGTH-1 );
- ps->count++;
-
- return 0;
+int Enum_Settings(const char *szSetting, LPARAM lParam)
+{
+ PPROXY_SETTINGS ps = (PPROXY_SETTINGS)lParam;
+
+ if (strcmp(szSetting, "NLUseProxy") != 0 && stricmp(szSetting, "useproxy") != 0)
+ return 0;
+
+ if (ps->count >= ps->_alloc) {
+ ps->_alloc += 10;
+ ps->item = (PPROXY_SETTING)mir_realloc(ps->item, ps->_alloc * sizeof(PROXY_SETTING));
+ ZeroMemory(&(ps->item[ps->count]), 10 * sizeof(PROXY_SETTING));
+ }
+ strncpy(ps->item[ps->count].ModuleName, ps->_current_module, MAXLABELLENGTH - 1);
+ strncpy(ps->item[ps->count].SettingName, szSetting, MAXLABELLENGTH - 1);
+ ps->count++;
+
+ return 0;
}
-int Enum_Modules(const char *szModuleName,DWORD ofsModuleName,LPARAM lParam) {
- //DBCONTACTENUMSETTINGS e;
- MCONTACT hContact = NULL;
+int Enum_Modules(const char *szModuleName, DWORD ofsModuleName, LPARAM lParam)
+{
+ //DBCONTACTENUMSETTINGS e;
+ MCONTACT hContact = NULL;
- ((PPROXY_SETTINGS)lParam)->_current_module = szModuleName;
+ ((PPROXY_SETTINGS)lParam)->_current_module = szModuleName;
- //e.pfnEnumProc = Enum_Settings;
- //e.lParam = lParam;
- //e.szModule = szModuleName;
- db_enum_settings(hContact, (DBSETTINGENUMPROC)Enum_Settings, szModuleName, (void*)lParam);
- //CallService(MS_DB_CONTACT_ENUMSETTINGS, (WPARAM)hContact,(LPARAM)&e);
+ //e.pfnEnumProc = Enum_Settings;
+ //e.lParam = lParam;
+ //e.szModule = szModuleName;
+ db_enum_settings(hContact, (DBSETTINGENUMPROC)Enum_Settings, szModuleName, (void*)lParam);
+ //CallService(MS_DB_CONTACT_ENUMSETTINGS, (WPARAM)hContact,(LPARAM)&e);
- return 0;
+ return 0;
}
/* ################################################################################ */
-void Create_Proxy_Settings_List ( PPROXY_SETTINGS ps ) {
-
- ZeroMemory( ps, sizeof(PROXY_SETTINGS) );
- ps->_alloc = 10;
- ps->item = (PPROXY_SETTING)mir_alloc( ps->_alloc * sizeof(PROXY_SETTING) );
- ZeroMemory( ps->item, ps->_alloc * sizeof(PROXY_SETTING) );
+void Create_Proxy_Settings_List(PPROXY_SETTINGS ps)
+{
+ ZeroMemory(ps, sizeof(PROXY_SETTINGS));
+ ps->_alloc = 10;
+ ps->item = (PPROXY_SETTING)mir_alloc(ps->_alloc * sizeof(PROXY_SETTING));
+ ZeroMemory(ps->item, ps->_alloc * sizeof(PROXY_SETTING));
- db_enum_modules((DBMODULEENUMPROC)Enum_Modules);
- //CallService(MS_DB_MODULES_ENUM, (WPARAM)ps, (LPARAM)Enum_Modules );
+ db_enum_modules((DBMODULEENUMPROC)Enum_Modules);
+ //CallService(MS_DB_MODULES_ENUM, (WPARAM)ps, (LPARAM)Enum_Modules );
- ps->_alloc = ps->count+1;
- ps->item = (PPROXY_SETTING)mir_realloc( ps->item, ps->_alloc * sizeof(PROXY_SETTING) );
- ZeroMemory( &(ps->item[ps->count]), sizeof(PROXY_SETTING));
- ps->_current_module = NULL;
+ ps->_alloc = ps->count + 1;
+ ps->item = (PPROXY_SETTING)mir_realloc(ps->item, ps->_alloc * sizeof(PROXY_SETTING));
+ ZeroMemory(&(ps->item[ps->count]), sizeof(PROXY_SETTING));
+ ps->_current_module = NULL;
}
/* ################################################################################ */
-void Free_Proxy_Settings_List( PPROXY_SETTINGS ps ) {
- if ( ps->item ) free( ps->item );
- ZeroMemory( ps, sizeof(PROXY_SETTINGS) );
+void Free_Proxy_Settings_List(PPROXY_SETTINGS ps)
+{
+ if (ps->item)
+ free(ps->item);
+ ZeroMemory(ps, sizeof(PROXY_SETTINGS));
}
/* ################################################################################ */
-char Get_Miranda_Proxy_Status (void) {
- PROXY_SETTINGS ps;
- int i, p;
- char proxy;
- proxy = PROXY_NO_CONFIG;
-
- Create_Proxy_Settings_List( &ps );
- for ( i = 0 ; i < ps.count ; i++ ) {
- p = db_get_b(NULL,ps.item[i].ModuleName,ps.item[i].SettingName,FALSE);
- if (proxy == PROXY_NO_CONFIG) { proxy = p; continue; }
- if (proxy != p) { proxy = PROXY_MIXED; break; }
- }
- Free_Proxy_Settings_List( &ps );
- return proxy;
+char Get_Miranda_Proxy_Status(void)
+{
+ PROXY_SETTINGS ps;
+ int i, p;
+ char proxy;
+ proxy = PROXY_NO_CONFIG;
+
+ Create_Proxy_Settings_List(&ps);
+ for (i = 0; i < ps.count; i++) {
+ p = db_get_b(NULL, ps.item[i].ModuleName, ps.item[i].SettingName, FALSE);
+ if (proxy == PROXY_NO_CONFIG) {
+ proxy = p;
+ continue;
+ }
+ if (proxy != p) {
+ proxy = PROXY_MIXED;
+ break;
+ }
+ }
+ Free_Proxy_Settings_List(&ps);
+ return proxy;
}
/* ################################################################################ */
-void Set_Miranda_Proxy_Status (char proxy) {
- PROXY_SETTINGS ps;
- NETLIBUSERSETTINGS nlus;
- int i;
-
- if ( proxy < 0 ) return;
- Create_Proxy_Settings_List( &ps );
- for ( i = 0 ; i < ps.count ; i++ ) {
- if ( ps.item[i].SettingName[0] != 0 ) db_set_b(NULL,ps.item[i].ModuleName,ps.item[i].SettingName,proxy);
- ZeroMemory( &nlus, sizeof(nlus) );
- nlus.cbSize = sizeof(nlus);
- if (Netlib_GetUserSettingsByName(ps.item[i].ModuleName, &nlus) ) {
- nlus.useProxy = proxy;
- nlus.szProxyAuthPassword = NEWSTR_ALLOCA(nlus.szProxyAuthPassword);
- nlus.szProxyAuthUser = NEWSTR_ALLOCA(nlus.szProxyAuthUser);
- nlus.szProxyServer = NEWSTR_ALLOCA(nlus.szProxyServer);
- nlus.szIncomingPorts = NEWSTR_ALLOCA(nlus.szIncomingPorts);
- nlus.szOutgoingPorts = NEWSTR_ALLOCA(nlus.szOutgoingPorts);
- Netlib_SetUserSettingsByName(ps.item[i].ModuleName, &nlus);
- }
- }
- Free_Proxy_Settings_List( &ps );
+void Set_Miranda_Proxy_Status(char proxy)
+{
+ PROXY_SETTINGS ps;
+ NETLIBUSERSETTINGS nlus;
+ int i;
+
+ if (proxy < 0)
+ return;
+ Create_Proxy_Settings_List(&ps);
+ for (i = 0; i < ps.count; i++) {
+ if (ps.item[i].SettingName[0] != 0)
+ db_set_b(NULL, ps.item[i].ModuleName, ps.item[i].SettingName, proxy);
+ ZeroMemory(&nlus, sizeof(nlus));
+ nlus.cbSize = sizeof(nlus);
+ if (Netlib_GetUserSettingsByName(ps.item[i].ModuleName, &nlus)) {
+ nlus.useProxy = proxy;
+ nlus.szProxyAuthPassword = NEWSTR_ALLOCA(nlus.szProxyAuthPassword);
+ nlus.szProxyAuthUser = NEWSTR_ALLOCA(nlus.szProxyAuthUser);
+ nlus.szProxyServer = NEWSTR_ALLOCA(nlus.szProxyServer);
+ nlus.szIncomingPorts = NEWSTR_ALLOCA(nlus.szIncomingPorts);
+ nlus.szOutgoingPorts = NEWSTR_ALLOCA(nlus.szOutgoingPorts);
+ Netlib_SetUserSettingsByName(ps.item[i].ModuleName, &nlus);
+ }
+ }
+ Free_Proxy_Settings_List(&ps);
}
/* ################################################################################ */
-char Get_IE_Proxy_Status (void) {
- INTERNET_PER_CONN_OPTION_LIST list;
- INTERNET_PER_CONN_OPTION option[1];
- unsigned long nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
+char Get_IE_Proxy_Status(void)
+{
+ INTERNET_PER_CONN_OPTION_LIST list;
+ INTERNET_PER_CONN_OPTION option[1];
+ unsigned long nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
- option[0].dwOption = INTERNET_PER_CONN_FLAGS;
+ option[0].dwOption = INTERNET_PER_CONN_FLAGS;
- list.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
- list.pszConnection = NULL;
- list.dwOptionCount = 1;
- list.dwOptionError = 0;
- list.pOptions = option;
+ list.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
+ list.pszConnection = NULL;
+ list.dwOptionCount = 1;
+ list.dwOptionError = 0;
+ list.pOptions = option;
- if(!InternetQueryOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, &nSize)) return -1;
+ if (!InternetQueryOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, &nSize))
+ return -1;
- return
- option[0].Value.dwValue & PROXY_TYPE_PROXY ? 1 : 0;
+ return option[0].Value.dwValue & PROXY_TYPE_PROXY ? 1 : 0;
}
/* ################################################################################ */
-void Set_IE_Proxy_Status (char proxy) {
- INTERNET_PER_CONN_OPTION_LIST list;
- INTERNET_PER_CONN_OPTION option[1];
- unsigned long nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
+void Set_IE_Proxy_Status(char proxy)
+{
+ INTERNET_PER_CONN_OPTION_LIST list;
+ INTERNET_PER_CONN_OPTION option[1];
+ unsigned long nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
- if ( proxy < 0 ) return;
- option[0].dwOption = INTERNET_PER_CONN_FLAGS;
- option[0].Value.dwValue = proxy ? PROXY_TYPE_PROXY | PROXY_TYPE_DIRECT : PROXY_TYPE_DIRECT;
+ if (proxy < 0)
+ return;
+ option[0].dwOption = INTERNET_PER_CONN_FLAGS;
+ option[0].Value.dwValue = proxy ? PROXY_TYPE_PROXY | PROXY_TYPE_DIRECT : PROXY_TYPE_DIRECT;
- list.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
- list.pszConnection = NULL;
- list.dwOptionCount = 1;
- list.dwOptionError = 0;
- list.pOptions = option;
+ list.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
+ list.pszConnection = NULL;
+ list.dwOptionCount = 1;
+ list.dwOptionError = 0;
+ list.pOptions = option;
- if(!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, nSize)) return;
+ if (!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, nSize))
+ return;
- InternetQueryOption( NULL, INTERNET_OPTION_SETTINGS_CHANGED , NULL, 0 );
- InternetQueryOption( NULL, INTERNET_OPTION_REFRESH , NULL, 0 );
+ InternetQueryOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
+ InternetQueryOption(NULL, INTERNET_OPTION_REFRESH, NULL, 0);
}
/* ################################################################################ */
-char Get_Firefox_Proxy_Status (void) {
- wchar_t path[MAX_PATH];
- wchar_t prefs[MAX_PATH];
- char line[500];
- FILE *fP;
- struct _stat info;
- struct _wfinddata_t dir;
- long hFile;
- char *setting;
- int p, proxy;
-
- ZeroMemory(&info, sizeof(info));
- proxy = PROXY_NO_CONFIG;
- if ( ! SHGetSpecialFolderPath(NULL, path, CSIDL_APPDATA, 0) ) return proxy;
- mir_wstrcat(path, L"\\Mozilla\\Firefox\\Profiles\\*");
- if( (hFile = _wfindfirst( path, &dir )) != -1L ) {
- do {
- if (! (dir.attrib & _A_SUBDIR) || dir.name[0] == '.') continue;
- mir_wstrcpy(prefs, path); prefs[mir_wstrlen(prefs)-1] = 0;
- mir_wstrcat(prefs, dir.name);
- mir_wstrcat(prefs, L"\\prefs.js");
- if ( (fP = _wfopen(prefs, L"r")) != NULL ) {
- p = 0;
- while ( fgets(line, 500, fP) ) {
- if ( (setting = strstr( line, "user_pref(\"network.proxy.type\",")) != NULL ) {
- setting += 31;
- p = atoi(setting);
- p = p == 3 ? 0 : p > 0;
- break;
- }
- }
- fclose(fP);
- proxy = proxy == -2 ? p : (proxy == p ? p : -1);
- }
- } while (_wfindnext( hFile, &dir ) == 0);
- _findclose( hFile );
- }
- return proxy;
+char Get_Firefox_Proxy_Status(void)
+{
+ wchar_t path[MAX_PATH];
+ wchar_t prefs[MAX_PATH];
+ char line[500];
+ FILE *fP;
+ struct _stat info;
+ struct _wfinddata_t dir;
+ long hFile;
+ char *setting;
+ int p, proxy;
+
+ ZeroMemory(&info, sizeof(info));
+ proxy = PROXY_NO_CONFIG;
+ if (!SHGetSpecialFolderPath(NULL, path, CSIDL_APPDATA, 0))
+ return proxy;
+ mir_wstrcat(path, L"\\Mozilla\\Firefox\\Profiles\\*");
+ if ((hFile = _wfindfirst(path, &dir)) != -1L) {
+ do {
+ if (!(dir.attrib & _A_SUBDIR) || dir.name[0] == '.')
+ continue;
+ mir_wstrcpy(prefs, path);
+ prefs[mir_wstrlen(prefs) - 1] = 0;
+ mir_wstrcat(prefs, dir.name);
+ mir_wstrcat(prefs, L"\\prefs.js");
+ if ((fP = _wfopen(prefs, L"r")) != NULL) {
+ p = 0;
+ while (fgets(line, 500, fP)) {
+ if ((setting = strstr(line, "user_pref(\"network.proxy.type\",")) != NULL) {
+ setting += 31;
+ p = atoi(setting);
+ p = p == 3 ? 0 : p > 0;
+ break;
+ }
+ }
+ fclose(fP);
+ proxy = proxy == -2 ? p : (proxy == p ? p : -1);
+ }
+ } while (_wfindnext(hFile, &dir) == 0);
+ _findclose(hFile);
+ }
+ return proxy;
}
/* ################################################################################ */
-void Set_Firefox_Proxy_Status (char proxy) {
- wchar_t path[MAX_PATH];
- wchar_t prefsR[MAX_PATH];
- wchar_t prefsW[MAX_PATH];
- char line[500];
- FILE *fR, *fW;
- struct _stat info;
- struct _wfinddata_t dir;
- long hFile;
- char done;
-
- ZeroMemory(&info, sizeof(info));
- if ( ! SHGetSpecialFolderPath(NULL, path, CSIDL_APPDATA, 0) ) return;
- mir_wstrcat(path, L"\\Mozilla\\Firefox\\Profiles\\*");
- if( (hFile = _wfindfirst( path, &dir )) != -1L ) {
- do {
- if (! (dir.attrib & _A_SUBDIR) || dir.name[0] == '.') continue;
- mir_wstrcpy(prefsR, path); prefsR[mir_wstrlen(prefsR)-1] = 0;
- mir_wstrcat(prefsR, dir.name);
- mir_wstrcat(prefsR, L"\\prefs.js");
- done = 0;
- if ((fR = _wfopen(prefsR, L"r")) != NULL) {
- mir_wstrcpy(prefsW, prefsR);
- mir_wstrcat(prefsW, L"~");
- if ((fW = _wfopen(prefsW, L"w")) != NULL) {
- while ( fgets(line, 500, fR) ) {
- if ( strstr( line, "\"network.proxy.type\"")) continue;
- if ( strstr( line, "\"network.proxy") && ! done) {
- fprintf(fW, "user_pref(\"network.proxy.type\", %d);\n", proxy);
- done = 1;
- }
- fprintf(fW, "%s", line);
- }
- if (! done) {
- fprintf(fW, "user_pref(\"network.proxy.type\", %d);\n", proxy);
- done = 1;
- }
- fclose(fW);
- }
- fclose(fR);
- }
- if ( done ) {
- _wremove(prefsR);
- _wrename(prefsW, prefsR);
- }
- } while (_wfindnext( hFile, &dir ) == 0);
- _findclose( hFile );
- }
+void Set_Firefox_Proxy_Status(char proxy)
+{
+ wchar_t path[MAX_PATH];
+ wchar_t prefsR[MAX_PATH];
+ wchar_t prefsW[MAX_PATH];
+ char line[500];
+ FILE *fR, *fW;
+ struct _stat info;
+ struct _wfinddata_t dir;
+ long hFile;
+ char done;
+
+ ZeroMemory(&info, sizeof(info));
+ if (!SHGetSpecialFolderPath(NULL, path, CSIDL_APPDATA, 0))
+ return;
+ mir_wstrcat(path, L"\\Mozilla\\Firefox\\Profiles\\*");
+ if ((hFile = _wfindfirst(path, &dir)) != -1L) {
+ do {
+ if (!(dir.attrib & _A_SUBDIR) || dir.name[0] == '.')
+ continue;
+ mir_wstrcpy(prefsR, path);
+ prefsR[mir_wstrlen(prefsR) - 1] = 0;
+ mir_wstrcat(prefsR, dir.name);
+ mir_wstrcat(prefsR, L"\\prefs.js");
+ done = 0;
+ if ((fR = _wfopen(prefsR, L"r")) != NULL) {
+ mir_wstrcpy(prefsW, prefsR);
+ mir_wstrcat(prefsW, L"~");
+ if ((fW = _wfopen(prefsW, L"w")) != NULL) {
+ while (fgets(line, 500, fR)) {
+ if (strstr(line, "\"network.proxy.type\""))
+ continue;
+ if (strstr(line, "\"network.proxy") && !done) {
+ fprintf(fW, "user_pref(\"network.proxy.type\", %d);\n", proxy);
+ done = 1;
+ }
+ fprintf(fW, "%s", line);
+ }
+ if (!done) {
+ fprintf(fW, "user_pref(\"network.proxy.type\", %d);\n", proxy);
+ done = 1;
+ }
+ fclose(fW);
+ }
+ fclose(fR);
+ }
+ if (done) {
+ _wremove(prefsR);
+ _wrename(prefsW, prefsR);
+ }
+ } while (_wfindnext(hFile, &dir) == 0);
+ _findclose(hFile);
+ }
}
/* ################################################################################ */
-char Firefox_Installed(void) {
- wchar_t path[MAX_PATH];
- struct _stat info;
- ZeroMemory(&info, sizeof(info));
-
- if ( SHGetSpecialFolderPath(NULL, path, CSIDL_APPDATA, 0) ) {
- mir_wstrcat(path, L"\\Mozilla\\Firefox\\Profiles");
- if ( _wstat(path, &info) == 0 && info.st_mode & _S_IFDIR == _S_IFDIR) {
- return 1;
- }
- }
- return 0;
+char Firefox_Installed(void)
+{
+ wchar_t path[MAX_PATH];
+ struct _stat info;
+ ZeroMemory(&info, sizeof(info));
+
+ if (SHGetSpecialFolderPath(NULL, path, CSIDL_APPDATA, 0)) {
+ mir_wstrcat(path, L"\\Mozilla\\Firefox\\Profiles");
+ if (_wstat(path, &info) == 0 && info.st_mode & _S_IFDIR == _S_IFDIR) {
+ return 1;
+ }
+ }
+ return 0;
}
/* ################################################################################ */
-void Disconnect_All_Protocols (PPROTO_SETTINGS settings, int disconnect) {
- int count, c, i, status;
- PROTOCOLDESCRIPTOR **plist;
-
- Proto_EnumProtocols(&c, &plist);
-
- ZeroMemory( settings, sizeof (PROTO_SETTINGS) );
- settings->item = (PPROTO_SETTING)mir_alloc( c * sizeof(PROTO_SETTING) );
- ZeroMemory( settings->item, c * sizeof(PROTO_SETTING) );
-
- for( i=0 ; i<c ; i++ ) {
- if ( plist[i]->type != PROTOTYPE_PROTOCOL ) continue;
- if ( CallProtoService( plist[i]->szName, PS_GETCAPS, PFLAGNUM_2, 0 ) == 0 ) continue;
- status = CallProtoService( plist[i]->szName, PS_GETSTATUS, 0, 0 );
- mir_strncpy( settings->item[count].ProtoName, plist[i]->szName, MAXLABELLENGTH-1 );
- if ( status != ID_STATUS_OFFLINE && disconnect ) {
- CallProtoService( plist[i]->szName, PS_SETSTATUS, ID_STATUS_OFFLINE, 0 );
- }
- if ( status < MAX_CONNECT_RETRIES ) status = ID_STATUS_ONLINE;
- if ( status == ID_STATUS_OFFLINE ) status = ID_STATUS_ONLINE;
- settings->item[count].Status = status;
- count++;
- }
- settings->count = count;
+void Disconnect_All_Protocols(PPROTO_SETTINGS settings, int disconnect)
+{
+ int count, c, i, status;
+ PROTOCOLDESCRIPTOR **plist;
+
+ Proto_EnumProtocols(&c, &plist);
+
+ ZeroMemory(settings, sizeof(PROTO_SETTINGS));
+ settings->item = (PPROTO_SETTING)mir_alloc(c * sizeof(PROTO_SETTING));
+ ZeroMemory(settings->item, c * sizeof(PROTO_SETTING));
+
+ for (i = 0; i < c; i++) {
+ if (plist[i]->type != PROTOTYPE_PROTOCOL)
+ continue;
+ if (CallProtoService(plist[i]->szName, PS_GETCAPS, PFLAGNUM_2, 0) == 0)
+ continue;
+ status = CallProtoService(plist[i]->szName, PS_GETSTATUS, 0, 0);
+ mir_strncpy(settings->item[count].ProtoName, plist[i]->szName, MAXLABELLENGTH - 1);
+ if (status != ID_STATUS_OFFLINE && disconnect) {
+ CallProtoService(plist[i]->szName, PS_SETSTATUS, ID_STATUS_OFFLINE, 0);
+ }
+ if (status < MAX_CONNECT_RETRIES)
+ status = ID_STATUS_ONLINE;
+ if (status == ID_STATUS_OFFLINE)
+ status = ID_STATUS_ONLINE;
+ settings->item[count].Status = status;
+ count++;
+ }
+ settings->count = count;
}
/* ################################################################################ */
-void Connect_All_Protocols (PPROTO_SETTINGS settings) {
- int i;
- for( i=0 ; i<settings->count ; i++ ) {
- CallProtoService( settings->item[i].ProtoName, PS_SETSTATUS, settings->item[i].Status, 0 );
- }
- free( settings->item );
- ZeroMemory( settings, sizeof (PROTO_SETTINGS) );
+void Connect_All_Protocols(PPROTO_SETTINGS settings)
+{
+ int i;
+ for (i = 0; i < settings->count; i++) {
+ CallProtoService(settings->item[i].ProtoName, PS_SETSTATUS, settings->item[i].Status, 0);
+ }
+ free(settings->item);
+ ZeroMemory(settings, sizeof(PROTO_SETTINGS));
}