Сервер не отдаёт фиксированную лицензию

Ключ SighNet на 10 лицензий. Создала в таблице лицензий 3 модуля, по 5 лицензий каждый. Лицензии раздаю по хэндлам (если по рабочим станциям, та же проблема). На хост 2 фиксированных лицензии и 2 плавающих. Сначала всё регистрируется нормально (пытаюсь с двух хостов, на одном из которых установлен сам сервер).
Затем закрываю копию (фиксированная лицензия), и с этого же (судя по надписи на лицензии) хоста пытаюсь запустить эту программу снова. Сервер, я так понимаю, должен отдать эту фиксированную лицензию, ведь копия той же программы и тот же хост. Но этого не происходит. Если все лицензии заняты (2 фиксированных и 2 плавающих), то просто не могу залогиниться, а если есть еще свободные лицензии - занимаются они, а эта висит..

На первом скриншоте это верхняя лицензия.

https://forum.guardant.ru/uploads/legacy/0/3000/3305/thumb/p1aspgiavnr7rftj1bjr11f81ds01.jpg

Когда в итоге сбрасываю её, затем запускаю снова программу на указанном хосте, новая регистрация этой копии проходит нормально. Затем закрываю копию, лицензия становится неактивной, и снова запускаю - вуаля, всё работает, сервер отдал эту лицензию.
Однако закрываю одну из копий приложения на другом хосте (тоже с фиксированной лицензией), а затем запускаю снова, и снова та же ситуация возникает - сервер не отдает эту лицензию, хотя приложение и хост совпадают (скриншот 2).

https://forum.guardant.ru/uploads/legacy/0/3000/3305/thumb/p1asph8e3ntnr12jh180vmqk10fa1.jpg

Если делать распределение по хостам, а не хендлам, то тогда вообще, сервер ни одну фиксированную лицензию не отдает новым копиям приложений на соответствующих хостах..

Login возвращает ошибку 10 - Сетевой ресурс ключа Guardant Net исчерпан. Но ведь одна лицензия не действует, и она зарегистрирована на ЭТО приложение, которое запускается, и на ЭТОТ хост, с которого запускается приложение.. почему сервер её не отдаёт? Причём так странно - сбрасываешь, подключаешься (проходит), выходишь, снова подключаешься, и тогда подключение повторное нормально проходит. Но стоит выйти из другой лицензии, с другого хоста, для неё повторяется всё то же самое.

Re: Сервер не отдаёт фиксированную лицензию

Попробуйте, пожалуйста, отключить использование "плавающих лицензий" и провести эксперимент - занять все лицензии для одного модуля, закрыть оду из копий защищенного приложения (чтобы лицензия стала неактивной и фиксированной за данным хостом) и снова запустить ту же копию.
Займется ли фиксированная лицензия без ее предварительного освобождения "вручную"?

Re: Сервер не отдаёт фиксированную лицензию

Отключила плавающие лицензии. Оставила 2 фиксированных на один хост.
Заполнила один модуль 2мя копиями программы с одного хоста (asdu-117).

https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8f3pfu1p78to61cn49tt1c0k1.jpg

Закрываю одну из копий приложения, лицензия становится неактивной, но фиксированной за хостом asdu-117

https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8f325h13qln2b1qipadk1b2p1.jpg

Далее снова на хосте asdu-117 запускаю приложение, подключение проходит, сервер отдает эту лицензию.

Теперь занимаю второй модуль двумя копиями программы, но с другого хоста - asdu916

https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8f84rp7f31gp3d3n1f5h13th1.jpg

Закрываю одну из копий приложения на asdu916

https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8fac748k84s413u61oh9ts11.jpg

Далее запускаю снова, также всё срабатывает - сервер отдаёт эту фиксированную лицензию новой копии программы с asdu916. При таком раскладе всё работает. Да не всё...

Сбрасываю все лицензии чтобы рассмотреть другую ситуацию.
Теперь с одного хоста asdu117 запускаю 2 приложения (на первый модуль и на второй - по одной лицензии с каждого модуля)

https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8gn5jb11asrdb1k49pm31jsv1.jpg

Одну программу закрываю, лицензия неактивна, но фиксируется

https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8gqmoe1mie13vq2s31dm75311.jpg

Запускаю эту программу с asdu-117 снова, лицензия занимается, всё ОК.
Теперь с другого хоста asdu916 занимаю по одной лицензии с каждого модуля (получается как раз, по 2 лицензии с хоста, все фиксированные лицензии получаются заняты).

https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8gu1rbrjc8rv1ut413didbr1.jpg

Теперь закрываю копию приложения на asdu-117.

https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8h0aq613fh16ns1kpqu6in031.jpg

Пытаюсь копию запустить на этом же хосте asdu117, и всё, лицензия висит, сервер её не отдаёт. Закрываю второе приложение на asdu-117.

https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8h2qfk7ra12uv1mbs0t1sud1.jpg

Пытаюсь запустить второе приложение на этом хосте, то же самое - сервер не отдаёт и эту лицензию.
Тогда закрываю приложения на другом хосте - asdu916
https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8h51ots411ekq631dfn6762.jpg

Затем по очереди запускаю их на том же asdu916 - сервер благополучно отдаёт им эти лицензии, но на asdu-117 всё ещё нет...

Еще один момент. Опять вырубила программы на asdu916, то есть все лицензии фиксированы за соответствующими хостами, но неактивны, как на предыдущем скриншоте. Теперь в такой ситуации снова пытаюсь запустить копии с asdu-117. Как только запускаю приложение GuardantApp на asdu-117, фиксированная лицензия на это же приложение, но с хоста asdu916, исчезает. Со вторым приложением GuardantApp1 точно также. Эти лицензии сами сбрасываются. Причём запускаю с одного хоста, а сбрасываются лицензии другого хоста...
https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8hbehg1e41f7e1vfl14nj1d9i1.jpg

По итогу получаем: (везде речь о фиксированных лицензиях, плавающие отключены)

1. Если лицензии одного модуля занимать только с одного хоста, то всё работает, лицензии не подвисают.
https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8f84rp7f31gp3d3n1f5h13th1.jpg
2. Если занять лицензии разных модулей с одного хоста (в первый раз), также всё работает
https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8gn5jb11asrdb1k49pm31jsv1.jpg
но стоит подключиться второму хосту, как при закрытии приложения на первом хосте и последующей попытке его подключения, лицензия подвисает, сервер её не отдает.
https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8h0aq613fh16ns1kpqu6in031.jpg
3. Когда все копии отключены, а все лицензии зафиксированы за своими хостами, но неактивны
https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8h51ots411ekq631dfn6762.jpg
при попытке приложениями занять именно зависшие лицензии (на asdu117) сбрасываются соответствующие этим приложениям лицензии, зафиксированные за другим хостом (asdu916)
https://forum.guardant.ru/uploads/legacy/0/3000/3313/thumb/p1at8hbehg1e41f7e1vfl14nj1d9i1.jpg

Надеюсь это поможет.. жду ответа.

Re: Сервер не отдаёт фиксированную лицензию

Crazy-veronik пишет:

Надеюсь это поможет.. жду ответа.

Да, наверняка, спасибо!
Будем воспроизводить у себя, поскольку поведение весьма странное.
Результаты и выводы сообщим немного позже.

Re: Сервер не отдаёт фиксированную лицензию

Вот мой ответ с соседней ветки, там я начала описывать свою проблему.. https://forum.guardant.ru/topic/635/

1. Какой версии сервер сетевых ключей используется?
- GLDS 7.0.888.0

2. Guardant API из состава SDK какой версии использовался при защите приложения?
- Guardant 6.1

3. В среде какой ОС запущен сервер? Выложите (на удобном файлообменнике) отчет системной утилиты msinfo32.exe (в командной строке нужно набрать msinfo32.exe, после запуска утилиты сохранить отчет в формате *.nfo (меню Файл/Сохранить)) для тестируемого компьютера и укажите ссылку.
- ОС Сервера Windows7x32, файл сведений тут -> https://cloud.mail.ru/public/8UXB/rdegSd9yF

4. Сервер сетевых ключей, сетевой ключ и защищенное приложение установлены на одном компьютере (если нет, то какие ОС установлены на ПК-сервере и ПК-клиенте, приложите для них отчеты msinfo32.exe)?
- Сервер и сетевой ключ установлены на одном компе с ОС, описанной в пункте 3 (asdu-117), так же этот хост используется и как клиентский ПК, с которого запускаются защищенные приложения. При тестировании используется также еще один ПК (asdu916) с ОС Windows 8x64, сведения о системе тут-> https://cloud.mail.ru/public/HL21/wqioLZeid

5. Используются ли при тестировании средства виртуализации или удаленного доступа (если да, то какие именно)?
- Нет

6. Приложите 2 скриншота WEB-интерфейса сервера сетевых ключей полученные следующим образом: 1 - необходимо залогиниться на ключ и выполнить логаут, чтобы лицензия осталась неактивной и фиксированной за хостом, далее кликнуть по данной лицензии для просмотра информации о ней и сделать скриншот. 2 - еще раз с того же хоста залогиниться на ключ но логаут не выполнять, чтобы появилась вторая, занятая и активная, лицензия, на нее также надо кликнуть и сделать скриншот.
- 1 скриншот

https://forum.guardant.ru/uploads/legacy/0/3000/3317/thumb/p1atavc85dfs66diul1qpm6vh1.jpg
- во втором случае я пытаюсь копию этого же приложения на этом же хосте запустить, по логике вторая фиксированная лицензия не должна же создаваться, а должна отдаваться первая. Но происходит следующее - первая фиксированная лицензия сбрасывается сама по себе, затем создается новая и отдаётся новой копии приложения. Вот скриншот новой активной лицензии (плавающие лицензии отключены, только фиксированные, 2 на хост)
https://forum.guardant.ru/uploads/legacy/0/3000/3317/thumb/p1atavcjp5qirmsm9n11fnt1l762.jpg
Совсем уже запуталась, не понимаю, почему так происходит. То сбрасываются лицензии, то висят и сервер их не отдает новым копиям..

Re: Сервер не отдаёт фиксированную лицензию

Даже и не знаю.. может в коде чего не так:

struct DongleData //структура данных ключа
{
    DWORD   _RemoteMode;
    DWORD   _Flags;
    DWORD   _Ver;
    DWORD   _Mask;
    DWORD   _Type;
    DWORD   _Models;
    DWORD   _Interfaces;
    vector <DWORD>    _DongleID;

    DongleData() :_RemoteMode(0), _Ver(0) , _Mask(0),
        _Flags(GrdFM_ID |    GrdFM_Ver |    GrdFM_Mask | GrdFM_Type),
        _Type(GrdDT_Win), _Models(GrdFMM_ALL), _Interfaces(GrdFMI_ALL)
    {}
};

//коды доступа
#define GrdDC_PUB_CODE               0xXXXXXXXX  // public code
#define GrdDC_PR_READ_CODE         0xXXXXXXXX  // private read code
#define GrdDC_PR_WRITE_CODE        0xXXXXXXXX  // private write code
#define GrdDC_PR_MASTER_CODE       0xXXXXXXXX  // private master code

BOOL bDogleIsFound(FALSE);

BOOL CGuardantAppApp::InitInstance()
{
    CGrdDongle* GrdDongle = new CGrdDongle;
    dt._DongleID = { 0x34334e40, 0x34334c16, 0x34334c41 }; //осуществляется поиск сразу нескольких ключей
    dt._RemoteMode = GrdFMR_Remote; //только сетевые ключи
    for (int j = 0;j < static_cast<int>(dt._DongleID.size());j++) 
    {
        if (RunDongleSearch(GrdDongle,dt, j)) {
           bDogleIsFound = TRUE;
           break;
         }
    }
    if (!bDogleIsFound) { AfxMessageBox(_T("Подходящий ключ не найден")); return TRUE; }

    //если ключ найден, запускается окно приложения
    CGuardantAppDlg dlg;
    m_pMainWnd = &dlg;
    INT_PTR nResponse = dlg.DoModal();
    if (nResponse == IDOK)
    {
           //DoSomething
    }
    else if (nResponse == IDCANCEL)
    {

    }
    else if (nResponse == -1)
    {
        TRACE(traceAppMsg, 0, "Предупреждение. Не удалось создать диалоговое окно, поэтому работа приложения неожиданно завершена.\n");
    }

    //после завершения работы приложения Logout
    GrdDongle->Logout(MODULE_NUM);
    delete GrdDongle;
}

BOOL CGuardantAppApp::RunDongleSearch(CGrdDongle* GrdDongle, DongleData dt, int num)
{
        GrdDongle->Initialize(dt._RemoteMode, dt._Flags, 0, dt._DongleID[num], 0, dt._Ver, dt._Mask, 0, 0, 0);
        int nRet = GrdDongle->Create(GrdDC_PUB_CODE,
        GrdDC_PR_READ_CODE,
        GrdDC_PR_WRITE_CODE,
        GrdDC_PR_MASTER_CODE, 0, 0);
        nRet = GrdDongle->Login(MODULE_NUM, GrdLM_PerHandle);
        if (nRet)
        {
            AfxMessageBox(_T("Dongle login failed!"));
            return FALSE;
         }
         else if (!nRet)
         {
            strMess.Format(_T("Dongle %x is found"), dt._DongleID[num]);
            AfxMessageBox(strMess);
          }
         nRet = GrdDongle->Check();
         if (nRet)
         {
            //AfxMessageBox(_T("Dongle not found!"));
            return FALSE;
         }
         return TRUE;
}

Re: Сервер не отдаёт фиксированную лицензию

Crazy-veronik пишет:

2. Guardant API из состава SDK какой версии использовался при защите приложения?
- Guardant 6.1

Это слишком старая версия, соберите приложение с Guardant API из современного SDK и протестируйте.