• sniknik © (30.08.16 18:15) [0]
    Предыстория:
    Есть прога для агентов, куча их работает, ну и мы сами иногда для чего-то конкретного. Ну вот, трое сотрудников работающих с прогой перебрались в другой домен, другую площадку и вообще сменили офис. Двое нормально, у одного начались ошибки (на https соединении, инди):
    10038 Socket operation on non-socket
    Разбираемся, переставили программу "начисто", и о чудо заработало! Но настройки стерли, начали восстанавливать, сертификат пере-запросили (запрос под тестовым сертификатом делается, т.е. https работало довольно долго), после чего положено(чисто так, на самом деле можно без этого) перезагрузить комп. После перезагрузки ошибка восстановилась... переустановка по новой не помогла. ??? Но у других то двоих работает?! Решили проверить перезагрузили еще одному комп, ничего в настройках и вообще не меняя... стало 2 человека с данной ошибкой. Что за нафиг???!!! Перезагрузился третий, и стало их трое с ошибкой... При том, что до этого, они работали несколько дней и уходя домой комп выключали.

    Предположения? Может быть вирус. Нет? Или админы где-то, на что-то права порезали, наружу из домена. Притом, что такая же программа, включающая тот же модуль dcu для коннектов работает у всех троих, но в нем используется http, а не https. Если да то, что? Говорят порты 80 и 443 открыты. Получается сокетов для http хватает, а для https, или что?
  • Sha © (30.08.16 19:03) [1]
    На мой взгляд, прежде чем копать в другие стороны,
    имеет смысл убедиться,
    что на момент появления ошибки хендл валиден,
    т.е. инициализирован и не закрыт.
  • iop © (30.08.16 19:36) [2]
    прокси горбит
  • TohaNik © (30.08.16 20:00) [3]
    А так и есть, глобализация однако.:(
  • sniknik © (30.08.16 22:01) [4]
    > что на момент появления ошибки хендл валиден,
    У сокета? Гарантированно невалиден, ошибка собственно об этом. Или что другое? Что эта проверка даст в общем?  

    > прокси горбит
    Тоже так думал, но есть но, если убрать настройку прокси, типа сделать "прямое" соединение то на этих машинах вместо "в доступе отказано"/или "нет такого хоста" начинает вылетать AV. Это уже после поста сюда выяснилось.
    Завтра покажу код на чем вылетает (в модуле инди на попытке прочитать ошибку из сокета), т.е. похоже та же фигня из закрытого/неправильного сокета пытается.
    Т.е. и в обход прокси ошибка есть, вернее не та что нужно, а такая же. А значит не он, скорее хаб или, что там "за ним"... кстати количество сокетов ограничено? Ну т.е. вот в хабе можно поставить чтобы только с 2000 по 4000 отдавал? Или если "накрылся" и перестал их закрывать, и они кончились. Возможно?
  • DVM © (30.08.16 22:20) [5]
    Wireshark бы многое прояснил в умелых руках.
  • sniknik © (30.08.16 22:26) [6]
    > Wireshark бы многое прояснил в умелых руках.
    А в неумелых? :)

    Но в любом случае спасибо, посоветую посмотреть им. В нем же будет видно, что соединение/сокет насильственно закрыт касперским например? Брендмауэром. Хотя это проверяли, и касперского и бреннмауэр на компах отключали.
  • Sha © (30.08.16 23:20) [7]
    > sniknik ©   (30.08.16 22:01) [4]
    > Гарантированно невалиден, ошибка собственно об этом.

    Значит, ты должен знать, когда и почему он закрыт.
  • sniknik © (31.08.16 00:42) [8]
    > Значит, ты должен знать, когда и почему он закрыт.
    Если бы... тогда и проблемы не было бы. Его закрывает/блокирует что-то извне.
  • Sha © (31.08.16 00:50) [9]
    > Его закрывает/блокирует что-то извне.

    Например, твоя удаленная программа?
  • sniknik © (31.08.16 10:15) [10]
    > Например, твоя удаленная программа?
    Нет. Там еще около 100500 других подключается, выцепить конкретные 3 из конкретного домена невозможно. Либо все работают либо у всех ошибки. И кстати на сервере Апач, а не моя программа.

    sniknik ©   (30.08.16 22:01) [4]
    > Завтра покажу код на чем вылетает
    > начинает вылетать AV
    function TIdSSLSocket.Recv(var ABuf : TIdBytes): integer;
    var
     err: Integer;
    begin
     Result := IdSslRead(fSSL, @ABuf[0], Length(ABuf));
     err := GetSSLError(Result);
     if (err = OPENSSL_SSL_ERROR_WANT_READ) or (err = OPENSSL_SSL_ERROR_WANT_WRITE) then begin //вот на эту строку встает при "find error" из AV
       Result := IdSslRead(fSSL, @ABuf[0], Length(ABuf));
     end;
    end;


    И как мне думается, по той же причине, что и "10038 Socket operation on non-socket" от прокси, просто в инди нет обработчика подобного, во всяком случае ни номера ни текста ошибки я в исходниках индей не нашел. AV напомню вылетает если пытаться подключится без прокси, напрямую. Хотя с других доменов такое неправильное соединение дает 11001 Host not found.
  • Sha © (31.08.16 10:38) [11]
    > sniknik ©   (31.08.16 10:15) [10]

    1. Имеет смысл один из этих 100500 других попробовать напрямую подключить
    с теми же сомнительными настройками.
    Получишь AV?
    В этом случае, возможно, прокси разные.

    2. Сервер волен рвать соединение как ему вздумается.
    Клиент должен быть к этому готов.
    Возможно, это штатная ситуация.

    3. Перед выполнением очередной операции ты должен быть уверен,
    что все предыдущие операции с этим сокетом завершены успешно.
  • sniknik © (31.08.16 10:42) [12]
    > И кстати на сервере Апач, а не моя программа.
    Еще плюс, кстати, имя сервера определяется сертификатом, по типу (ну не смогли там объединить на одном гостовские и rsa509, или наоборот не смогли разделить по ним, а нужно было. хз почему так), в общем там может быть 4 сервера, + 1 тестовый. Физически разных. Пробовали как минимум 2 рабочих (сертификат писал пере запрашивали) и 1 тестовый, т.е. 3. Не, с серверами у нас все в порядке, как и с программой. Случилось бы это на этапе разработки, я бы мог посомневаться, но она в эксплуатации уже больше года после последнего изменения кода.
    Т.что не будем отвлекаться, в проблему программы/сервера/логики работы в общем (что попало на неработающий в других вариантах кусок кода) я поверю в самом последнем случае... скорее в то, что там в хаб или свич в биос вирус прописался. Или другую ахинею.
  • sniknik © (31.08.16 10:48) [13]
    > Получишь AV?
    Нет, из любого другого домена - 11001 Host not found. Писал же.

    > Клиент должен быть к этому готов.
    Он готов, но там ошибка другая, что-то типа "Connection Closed Gracefully".

    > что все предыдущие операции с этим сокетом завершены успешно.
    Как? Если это происходит в прокси? Ошибка возвращается от него. Да и с сокетами я напрямую не работаю.
    Ну и +  
    > Т.что не будем отвлекаться, в проблему программы/сервера/логики работы в общем
    Программа работает корректно, считай это аксиомой. Можешь не верить, твое право, но все советы с намеком на глюк в коде дальше я буду игнорировать.
  • Sha © (31.08.16 10:52) [14]
    > Клиент должен быть к этому готов.
    Он готов, но там ошибка другая, что-то типа "Connection Closed Gracefully".

    Так с этого и надо было начинать.
    Это нормальный разрыв соединения.
    Осталось установить, кто его инициировал.
  • sniknik © (31.08.16 10:55) [15]
    > Так с этого и надо было начинать.
    Этого в рассматриваемом случае нет, это вообще нормальная ошибка, не проблема, а топик о не нормальной ситуации, о ошибке которой по всем резонам быть не должно.
    Т.что я не мог начинать с того чего нет.
  • Sha © (31.08.16 11:13) [16]
    мы совсем не понимаем друг друга
  • sniknik © (31.08.16 11:22) [17]
    Ты прилагаешь к этому немалые усилия. ИМХО. Я вроде все понятно написал, буквально, as is, читай также буквально... нет в написанном "Connection Closed Gracefully" значит его и не было, а после ты ответил предположением "2. Сервер волен рвать соединение как ему вздумается. Клиент должен быть к этому готов.", я также буквально опроверг -  "там ошибка другая" и написал какая, в опровержение твоего предположения, а не продолжения описания что случилось... Ну все же кристально ясно.

    p.s. Вот потому и не хочу рассматривать предположения о ошибках в коде, начну объяснять/опровергать, а поймут все по своему.
  • sniknik © (31.08.16 12:46) [18]
    Блин, четвертому поставили... все повторилось. + Поэкспериментировали. Логика такая - после установки прога работает, работает, до первой перезагрузки компа. После - "10038 Socket operation on non-socket". Просто переустановка больше не помогает, так и продолжает ошибку давать, НО! если установить в новый каталог, то опять работает... до первой перезагрузки компа. И т.д. новый каталог - работает, в старый (не текущий, а с предыдущей установке) - не работает, даже если каталог был стерт и реестр очищен (использовали CCleaner).
    Такое впечатление, что есть что-то типа "анти брендмауэра", типа запишет себе путь-прогу и начинает ее блокировать, но только рестарта (своего перезапуска). ... Там админы клянутся, что антивирусы, брендмауэр, скайп и и вообще все, что к сети отношение имеет выключено.
    Реально помог бы Wireshark, что-то еще есть, какие нибудь административные тулзы/следилки за работниками, т.е. то что не афишируется особо. Да помог бы НО!, счас будет смешно, Wireshark запрещен безопасниками (как и тимвьювер) и потому не ставится (там где-то правила в доменных политиках прописаны, т.что я не могу ни трафик посмотреть, ни зайти самому поковыряться... хотя, даже не знаю чего уж смотреть ;(, (·) в общем).
  • sniknik © (31.08.16 13:06) [19]
    А ну да, до вчерашнего дня такого не было. Двое из трех с неделю-чуть больше работали, компы после работы выключали. А третий оказывается только вчера приступил. в отпуске был, ну и после установки сам перезапустил комп, а после когда уже настройщик со мной по телефону переустанавливал, я ему без всякой задней мысли посоветовал другой каталог (программ файлес защищается, настройки перезаписывать проблемно).
    Чудеса потихоньку разъясняются. По крайней мере логика/повторяемость появилась. :)
  • ухты © (31.08.16 13:11) [20]
    перезапуск роутера (или чего там) пробовали делать?
    или прокси если есть
  • NoUser © (31.08.16 13:45) [21]
    > sniknik ©   (31.08.16 10:15) [10]
    > Завтра покажу код на чем вылетает
    > начинает вылетать AV

    Я это, просто уточню: то есть, если при ssl чтении случилась ошибка чтения или ошибка записи, то читаем еще разочек, чтоб наверняка, да?


    > AV напомню вылетает если пытаться подключится без прокси, напрямую.
    +
    > Вот потому и не хочу рассматривать предположения о ошибках в коде

    =
    странно ...

    > просто в инди нет обработчика подобного

    вот-вот, может либа не готова к новому повороту событий.

    > sniknik ©   (31.08.16 12:46) [18]

    как вариант, при первом запуске с новой локации что-то происходит с небольшой задержкой (кэширование там, или еще что), а при повторе - без дополнительного переключения контекста, и, например, несколько tcp посылок приходят/уходят одним куском, к чему либа может быть и не предрасположена.
  • sniknik © (31.08.16 14:20) [22]
    > перезапуск роутера (или чего там) пробовали делать?
    Пока нет, нет "админа всея сети". только "местечковые".

    > Я это, просто уточню: то есть, если при ssl чтении случилась ошибка чтения или ошибка записи, то читаем еще разочек, чтоб наверняка, да?
    Да, и что? Нормальная практика для сети. В TCP/IP там вообще троекратное чтение до реально ошибки.
    Код из пакета инди, если не обратил внимания кстати.

    > странно ...
    Чего странного? 1000 светофоров в городе светят красным, один синим, это значит, что светофоры неверно спроектированы? Или таки что на одном не тот фильтр воткнули?

    > как вариант, при первом запуске с новой локации что-то происходит с небольшой задержкой (кэширование там, или еще что),
    Час уже человек на ново поставленной работает, ... любой кеш уже бы заполнился. А вот перезагрузка "убивает" прогу моментально, после одного теста/действия, и пяти минут на перезагруз.
    Вряд ли.
  • iop © (31.08.16 15:11) [23]
    написать скрипт на 15 строк на вбс.
    в скрипте в цикеле дергать любой https ресурс,
    смотреть что происходит.
    ежели все происходит окей, то выкинуть йинди нафик
  • sniknik © (31.08.16 16:36) [24]
    > написать скрипт на 15 строк на вбс.
    > дергать любой https ресурс
    Свои урлы проверил, "любые" смысла нет, политиками могут разрешить/запретить чисто конкретные. И да к любым, в том числе и к нужным из IE доступ есть, правда там ахинею отдает, на нужных (используется чисто протокол, не html содержимое, не текст в общем).

    На конкретные, не работающие -
    Windows Script Host
    ---------------------------
    Error: A connection with the server could not be established
    Code: 80072EFD
    Source:  msxml3.dll

    А теперь где гарантия что это нормальная ошибка (хост нот фаунд), а не преобразованная из того же "сокет не является объектом" что в индях? Он же дает более общую, свою ошибку.
    В любом случае коннекта нет, переустановить vbs в другую папку возможности нет (а может и есть но не хочется).
    Доступ к http к внутри сетевому серверу (про параллельно работающую прогу выше писал, с нее url взял), есть. В общем поведение скрипта аналогично если не обращать внимание на текст ошибки.
  • sniknik © (31.08.16 17:10) [25]
    +
    Вообще вопрос можно считать закрытым... и нет, решения описываемому бреду не нашли ;(. Но нашли комп на котором прога работает, он в том же домене, у них же, на той же площадке, но почему то работает. Админ выдал фразу которая с его точки зрения все объясняет "а, ну так она в другом сегменте", что это значит ХЗ, и почему это сразу нельзя было сказать если все так очевидно - 2 ХЗ. Ну вот на нее поставили серверную часть, у юзеров клиентскую. В общем перешли с локальной установки на клиент серверную. Вот такое вот "решение", и если и на том компе перестанет работать то наступит полная (·), т.к. разумной причины так до сих пор и нет :(.
  • Eraser © (31.08.16 20:10) [26]

    > sniknik ©   (31.08.16 17:10) [25]

    очень похоже на прокси, в котором нужно предварительно логинеться. причем, логин может осуществляться и автоматически или еще как-то хитро, что никто не замечает вроде как.
  • ВладОшин © (31.08.16 22:28) [27]
    SSL_DLL_name         = 'ssleay32.dll';  {Do not localize}
     SSLCLIB_DLL_name   = 'libeay32.dll';  {Do not localize}
    другие не пробовал подменить?
  • Torry © (01.09.16 00:21) [28]
    Я так понимаю, что политики групповые слегка по разному настроены в доменах?

    Аутентификация в прокси в старом домене и новом через AD? Если да, то контролеры доменов на идентичных версиях ОС?
  • sniknik © (01.09.16 10:18) [29]
    > очень похоже на прокси, в котором нужно предварительно логинеться.
    Вообще в индях/и значит в проге есть логин пароль для прокси, или "предварительно" это еще до этого?

    > другие не пробовал подменить?
    Нет. Я там вообще не участвую в реальных действиях, чисто как консультант. Вон варешарк посоветовал, и получил в ответ, ИМХО, отмазку. Админы же, могли запреты отменить, временно на время выяснения.
    А кстати смысл менять? В смысле на другую версию, или есть альтернативные другой конторы? Или другие, вообще другие, так это единственные dll которые программа использует.

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

    > Если да, то контролеры доменов на идентичных версиях ОС?
    ХЗ. Не моя епархия, вполне возможно разные. За время моей работы здесь купили/объединили пару контор к основной. И добавляли их как есть со всеми сетями, доменами... вполне допускаю что там тот еще "зоопарк".
  • Плохиш © (01.09.16 11:22) [30]

    >  Я там вообще не участвую в реальных действиях, чисто как
    > консультант. Вон варешарк посоветовал, и получил в ответ,
    >  ИМХО, отмазку.


    > Не моя епархия,

    Кофе-то хоть не растворимый используете?
  • sniknik © (01.09.16 12:08) [31]
    Прямо в кабинете кофе машина.
  • Плохиш © (01.09.16 13:33) [32]

    > sniknik ©   (01.09.16 12:08) [31]
    >
    > Прямо в кабинете кофе машина.

    Понятно, что так плохо гадаете. Там же гущи недостаточно.
  • han_malign © (01.09.16 14:23) [33]

    > Error: A connection with the server could not be established
    > Code: 80072EFD
    > Source:  msxml3.dll

    http://stackoverflow.com/questions/4355896/msxml3-dll-80072efd-and-800c0005-errors-executing-serverxmlhttp-send-in-classic

    ...
    I then checked the app pools in IIS and sure enough the Classic .Net AppPool was set to use a local machine account that wasn't being recognised by the proxy. Changing the account to use to a domain account fixed the error.



    > Вообще в индях/и значит в проге есть логин пароль для прокси, или "предварительно" это еще до этого?

    - до кучи - W8/W10: secpol.msc
    Локальные политики->Параметры безопасности->Сетевая безопасность: Уровень проверки подлинности LAN Manager
           Отправлять LM и NTLM - использовать сеансовую безопасность NTLMv2 при согласовании
    (по умолчанию - только NTLMv2)
  • ВладОшин © (01.09.16 15:22) [34]

    > смысл менять?

    не знаю. Ну, там версии какие-то делаются, может чего улучшают/ корректируют
    Ошибка из dll проистекает, может они там что-то не так сделали, а потом в след версии поправили
  • Игорь Шевченко © (01.09.16 17:20) [35]
    ВладОшин ©   (01.09.16 15:22) [34]

    Может, тебе обратно к прозе вернуться ?
  • Eraser © (01.09.16 18:15) [36]

    > sniknik ©   (01.09.16 10:18) [29]


    > Вообще в индях/и значит в проге есть логин пароль для прокси,
    >  или "предварительно" это еще до этого?

    эт немного другое, в проге, скорее всего, для непрозрачного прокси, с ним все ясно.
    а вот с прозрачным прокси могут быть грабли. там может быть настроена NTLM авторизация или MAC авторизация или еще что-то вроде того. но, чтобы авторизация выполнилась, нужно, фантазирую, открыть какую-то страницу. может что-то вроде [33].
    или выполнить WNetAddConnection2
  • sniknik © (01.09.16 18:48) [37]
    > фантазирую, открыть какую-то страницу. может что-то вроде [33].
    > или выполнить WNetAddConnection2
    Поздно уже что-то выяснять, "решение" есть (см. [25])... до следующего "аврала", всем пофиг.
    Если только чисто "по теоретизировать", как о таком виртуальном коне в вакууме...

    Что-то уже сомневаюсь что дело в прокси, да и на "железо" наверное зря "грешил", т.к. оно все "вне компа", и вот этого никак не объясняет -
    > [18] ... НО! если установить в новый каталог, то опять работает... до первой перезагрузки компа. ...
    Причем здесь каталог установки, он же никаким боком в сетевые пакеты не вшивается, чтобы в проксях его проверять/отшибать по нему. (???) Скорее что-то программное, типа брендмауэра, в котором можно указать для какой программы делать исключения в проверке трафика. Локальное что-то, и свеже (с пару недель назад) установленное, причем админскими методами с сервера (у нас так касперского ставили для примера, не было не было, а после раз и появился, как бы сам, по доменным политикам с сервера "разлился"). ИМХО конечно, но точно уже никому и не нужно, даже если выяснится (/кто-то знает, что ставили) местные админы не скажут, "затихарят" (кто вообще признается в установке "зловреда"?).
  • ВладОшин © (01.09.16 18:56) [38]
    Игорь Шевченко ©
    как же тебе тяжело то, наверное, живется
  • Eraser © (01.09.16 22:08) [39]

    > sniknik ©   (01.09.16 18:48) [37]


    > НО! если установить в новый каталог, то опять работает..
    > . до первой перезагрузки компа. ...
    > Причем здесь каталог установки, он же никаким боком в сетевые
    > пакеты не вшивается, чтобы в проксях его проверять/отшибать
    > по нему. (???) Скорее что-то программное, типа брендмауэра,
    >  в котором можно указать для какой программы делать исключения
    > в проверке трафика. Локальное что-то, и свеже (с пару недель
    > назад) установленное, причем админскими методами с сервера
    > (у нас так касперского ставили для примера, не было не было,
    >  а после раз и появился, как бы сам, по доменным политикам
    > с сервера "разлился"). ИМХО конечно, но точно уже никому
    > и не нужно, даже если выяснится (/кто-то знает, что ставили)
    > местные админы не скажут, "затихарят" (кто вообще признается
    > в установке "зловреда"?).

    посмотрите, с какими правами запускается инсталлер? возможно он стартует с правами админа, затем запускает программу с правами админа же. а после перезагрузки программа стартует от обычного юзера. опять же, фантазирую )
  • sniknik © (01.09.16 22:27) [40]
    > затем запускает программу с правами админа же.
    С правами system-а, это клиент сервер, сервер в виде сервиса.

    > опять же, фантазирую )
    Догадался.
  • sniknik © (25.09.16 19:36) [41]
    Eraser ©   (31.08.16 20:10) [26]
    >> sniknik ©   (31.08.16 17:10) [25]
    >очень похоже на прокси, в котором нужно предварительно логинеться. причем, логин может осуществляться и автоматически или еще как-то хитро, что никто не замечает вроде как.
    +!
    Насчет "никто не замечает", ну невозможно такое не заметить (разве, что разбиравшийся тогда с проблемой админ "не заметил", или просто не посчитал существенным, "это же естественно так у всех"(сарказм), мне не сообщил в общем), но в остальном ты прав.

    Вчера переехали... да пришлось в субботу выходить, типа чтобы проверить сеть, и с понедельника не тормозить работу. Стали понятны местные "чудеса".
    В общем, "маленькая особенность" по словам местного админа (ИМХО - "большое западло"), входа в инет - при отключенном прокси(!!!) по любому урлу выдается страничка местной безопасности, логинишься туда, причем логин-пароль может не совпадать с доменным/входом в винду, после этого включаешь прокси и инет есть... если забыл, и первый запрос сделать через прокси инет блокируется на время работы компа. Комп правда можно не сразу перегружать, а повторить процедуру в другом браузере, хотя первому браузеру это уже не поможет, до успешной процедуры в нем после перезагрузки, тогда разблокирует.

    Это все объясняет :) (кроме дебилизма или садизма, не уверен, это придумавших ;(), сервис стартуя первым делом проверяет обновления (по умочанию не отключено), и тут же блокируется т.к. запрос сразу через прокси (а как еще? это же не браузер, автоматически все). Если переустанавливали, то до этого проверяли инет, после все работало, т.к. прокси открыт, кроме уже заблокированных прог/установок, блокировки не снимаются, прога получает статус "зловреда" или чего там (понятно причем тут пути, они к имени прилагаются) пока админы не снимут статус (в браузерах это автоматом, стоит пройти процедуру заново после перезагрузки, а вот там где некому отключать прокси/вводить другой логин, ... не судьба им в общем).
Есть новые Нет новых   [134467   +6][b:0][p:0.001]