Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка 1265 и именованные каналы - проблема


Суслик_ ©   (2009-12-08 15:06:00) 

Здравствуйте.

1. ЕСТЬ

Есть сервер в виде системной службы, на котором создается именованный канал примерно так (выдрано из кода):


var
  kSD: TSecurityDescriptor;
  kSA: TSecurityAttributes;
begin
  InitializeSecurityDescriptor(@kSD, SECURITY_DESCRIPTOR_REVISION);
  SetSecurityDescriptorDacl(@kSD, true, nil, false);
  kSA.nLength:= SizeOf(kSA);
  kSA.lpSecurityDescriptor := @kSD;
  kSA.bInheritHandle := False;
  _PipeInst := CreateNamedPipe(
     PAnsiChar(kFullPipeName),   // pipe name
     PIPE_ACCESS_DUPLEX          // read/write access
     or FILE_FLAG_OVERLAPPED, // overlapped mode
     PIPE_TYPE_BYTE              // byte-type pipe
        or PIPE_READMODE_BYTE    // byte-read mode
        or PIPE_WAIT,            // blocking mode
     cInstancesCount,            // number of instances
     cBufSize,                   // output buffer size
     cBufSize,                   // input buffer size
     cWaitPipeTimeout,           // client time-out
     @kSA);                      // default security attributes


Т.е. задаю явно security attr, так чтобы все могли иметь доступ к каналу.

Есть клиент на другой машине (естественно, он запускается под ограниченной записью пользователя), где я обращаюсь к каналу так:


kPipe := CreateFile(
  PAnsiChar(kFullPipeName),      // pipe name
  GENERIC_READ or GENERIC_WRITE, // read and write access
  0,                             // no sharing
  nil,                           // default security attributes
  OPEN_EXISTING,                 // opens existing pipe
  0,                             // default attributes
  0);                            // no template file


Т.е. не задаю явно security attr - вроде как не нужно.

2. СУТЬ ПРОБЛЕМЫ

Клиент (г. Саратов) после часа работы (т.е. изначально все работало) получает ошибку:


ERROR_DOWNGRADE_DETECTED
1265 (0x4F1)
The system detected a possible attempt to compromise security. Please ensure that you can contact the server that authenticated you.


3. ВОПРОС (ы)

3.1. Может ли причина проблемы состоять в том, что я на клиенте не указываю security attr?

3.2. Если ответ на п. 3.1 "да", то какие атрибуты мне нужно указать в CreateFile?

3.3. В чем может быть еще проблема?

4. ЧТО САМ ИСКАЛ

4.1. Часть гула просмотрена, ответа не нашел.


Суслик_   (2009-12-08 16:38:00) [1]

Да ни, и сервер и клиент у него - мы продаем комплекс.
Т.е. я вообще не знаю, что там происходит.


Rouse_   (2009-12-08 16:34:00) [2]


> Также сказал, что 445-й порт скорее всего у него Каспер
> закрывает

Проверить нужно с обоих сторон. Он может и на твоей стороне закрываться.


Игорь Шевченко   (2009-12-08 16:33:00) [3]


> Клиент (г. Саратов)


Клиент в Саратове, а сервер где ?


Суслик_   (2009-12-08 16:21:00) [4]

2Clickmaker
Благодарю. Да, именно они.

Значит это не мой случай. Завтра он попробует на Windows Server 2003 мой сервер переставить. Посмотрим, что будет.

Также сказал, что 445-й порт скорее всего у него Каспер закрывает. Хотя странно это - то работает, то не работает. Судя по моим данным (скриншоту) у него без проблем все работает в течении 2-3 часов. Если блокировка идет порта, то значит не должно работать вообще.


clickmaker   (2009-12-08 16:02:00) [5]

> какой код ошибки должен быть при превышении лимита?

1220 или 1238?


Суслик_   (2009-12-08 15:55:00) [6]

Я поспрашивал пользователя.

В общем, у них сервер стоит на winxp. Насколько мне известно в WinXP лимит есть на входящие сетевые подключения.

У, правда, меня подключения не держаться (клиент подключился, клиент спросил, сервер ответил, клиент отвалился). Но их достаточно много, могут, видимо, и накладываться так что возникает превышение лимита.

Я вот только думал, что код ошибки при превышении лимита должен быть иной.

ВОПРОС - может ли быть ошибки 1265 использование в качестве сервера НЕсервеной операционной системы Windows?

И вообще, какой код ошибки должен быть при превышении лимита?


Rouse_   (2009-12-08 15:42:00) [7]

445-ый порт в исключения фаервола добавь. Особливо если это стандартный фаервол, бо его вообще не понять он то работает то не работает.


Игорь Шевченко   (2009-12-08 15:38:00) [8]


> 3.1. Может ли причина проблемы состоять в том, что я на
> клиенте не указываю security attr?


Нет. В противном случае ошибка бы появилась при открытии файла, что противоречит "после часа работы (т.е. изначально все работало)"


> 3.3. В чем может быть еще проблема?


В том, что ты не сказал:

а) откуда получается ошибка.
б) какие действия предпринимал клиент для получения ошибки.


Наверх

Титульная страница Поиск, карта сайта Написать письмо