-
Предыстория: Есть прога для агентов, куча их работает, ну и мы сами иногда для чего-то конкретного. Ну вот, трое сотрудников работающих с прогой перебрались в другой домен, другую площадку и вообще сменили офис. Двое нормально, у одного начались ошибки (на https соединении, инди): 10038 Socket operation on non-socket Разбираемся, переставили программу "начисто", и о чудо заработало! Но настройки стерли, начали восстанавливать, сертификат пере-запросили (запрос под тестовым сертификатом делается, т.е. https работало довольно долго), после чего положено(чисто так, на самом деле можно без этого) перезагрузить комп. После перезагрузки ошибка восстановилась... переустановка по новой не помогла. ??? Но у других то двоих работает?! Решили проверить перезагрузили еще одному комп, ничего в настройках и вообще не меняя... стало 2 человека с данной ошибкой. Что за нафиг???!!! Перезагрузился третий, и стало их трое с ошибкой... При том, что до этого, они работали несколько дней и уходя домой комп выключали.
Предположения? Может быть вирус. Нет? Или админы где-то, на что-то права порезали, наружу из домена. Притом, что такая же программа, включающая тот же модуль dcu для коннектов работает у всех троих, но в нем используется http, а не https. Если да то, что? Говорят порты 80 и 443 открыты. Получается сокетов для http хватает, а для https, или что?
-
На мой взгляд, прежде чем копать в другие стороны, имеет смысл убедиться, что на момент появления ошибки хендл валиден, т.е. инициализирован и не закрыт.
-
прокси горбит
-
А так и есть, глобализация однако.:(
-
> что на момент появления ошибки хендл валиден, У сокета? Гарантированно невалиден, ошибка собственно об этом. Или что другое? Что эта проверка даст в общем?
> прокси горбит Тоже так думал, но есть но, если убрать настройку прокси, типа сделать "прямое" соединение то на этих машинах вместо "в доступе отказано"/или "нет такого хоста" начинает вылетать AV. Это уже после поста сюда выяснилось. Завтра покажу код на чем вылетает (в модуле инди на попытке прочитать ошибку из сокета), т.е. похоже та же фигня из закрытого/неправильного сокета пытается. Т.е. и в обход прокси ошибка есть, вернее не та что нужно, а такая же. А значит не он, скорее хаб или, что там "за ним"... кстати количество сокетов ограничено? Ну т.е. вот в хабе можно поставить чтобы только с 2000 по 4000 отдавал? Или если "накрылся" и перестал их закрывать, и они кончились. Возможно?
-
Wireshark бы многое прояснил в умелых руках.
-
> Wireshark бы многое прояснил в умелых руках. А в неумелых? :)
Но в любом случае спасибо, посоветую посмотреть им. В нем же будет видно, что соединение/сокет насильственно закрыт касперским например? Брендмауэром. Хотя это проверяли, и касперского и бреннмауэр на компах отключали.
-
> sniknik © (30.08.16 22:01) [4] > Гарантированно невалиден, ошибка собственно об этом.
Значит, ты должен знать, когда и почему он закрыт.
-
> Значит, ты должен знать, когда и почему он закрыт. Если бы... тогда и проблемы не было бы. Его закрывает/блокирует что-то извне.
-
> Его закрывает/блокирует что-то извне.
Например, твоя удаленная программа?
-
> Например, твоя удаленная программа? Нет. Там еще около 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.
-
> sniknik © (31.08.16 10:15) [10]
1. Имеет смысл один из этих 100500 других попробовать напрямую подключить с теми же сомнительными настройками. Получишь AV? В этом случае, возможно, прокси разные.
2. Сервер волен рвать соединение как ему вздумается. Клиент должен быть к этому готов. Возможно, это штатная ситуация.
3. Перед выполнением очередной операции ты должен быть уверен, что все предыдущие операции с этим сокетом завершены успешно.
-
> И кстати на сервере Апач, а не моя программа. Еще плюс, кстати, имя сервера определяется сертификатом, по типу (ну не смогли там объединить на одном гостовские и rsa509, или наоборот не смогли разделить по ним, а нужно было. хз почему так), в общем там может быть 4 сервера, + 1 тестовый. Физически разных. Пробовали как минимум 2 рабочих (сертификат писал пере запрашивали) и 1 тестовый, т.е. 3. Не, с серверами у нас все в порядке, как и с программой. Случилось бы это на этапе разработки, я бы мог посомневаться, но она в эксплуатации уже больше года после последнего изменения кода. Т.что не будем отвлекаться, в проблему программы/сервера/логики работы в общем (что попало на неработающий в других вариантах кусок кода) я поверю в самом последнем случае... скорее в то, что там в хаб или свич в биос вирус прописался. Или другую ахинею.
-
> Получишь AV? Нет, из любого другого домена - 11001 Host not found. Писал же.
> Клиент должен быть к этому готов. Он готов, но там ошибка другая, что-то типа "Connection Closed Gracefully".
> что все предыдущие операции с этим сокетом завершены успешно. Как? Если это происходит в прокси? Ошибка возвращается от него. Да и с сокетами я напрямую не работаю. Ну и + > Т.что не будем отвлекаться, в проблему программы/сервера/логики работы в общем Программа работает корректно, считай это аксиомой. Можешь не верить, твое право, но все советы с намеком на глюк в коде дальше я буду игнорировать.
-
> Клиент должен быть к этому готов. Он готов, но там ошибка другая, что-то типа "Connection Closed Gracefully".
Так с этого и надо было начинать. Это нормальный разрыв соединения. Осталось установить, кто его инициировал.
-
> Так с этого и надо было начинать. Этого в рассматриваемом случае нет, это вообще нормальная ошибка, не проблема, а топик о не нормальной ситуации, о ошибке которой по всем резонам быть не должно. Т.что я не мог начинать с того чего нет.
-
мы совсем не понимаем друг друга
-
Ты прилагаешь к этому немалые усилия. ИМХО. Я вроде все понятно написал, буквально, as is, читай также буквально... нет в написанном "Connection Closed Gracefully" значит его и не было, а после ты ответил предположением "2. Сервер волен рвать соединение как ему вздумается. Клиент должен быть к этому готов.", я также буквально опроверг - "там ошибка другая" и написал какая, в опровержение твоего предположения, а не продолжения описания что случилось... Ну все же кристально ясно.
p.s. Вот потому и не хочу рассматривать предположения о ошибках в коде, начну объяснять/опровергать, а поймут все по своему.
-
Блин, четвертому поставили... все повторилось. + Поэкспериментировали. Логика такая - после установки прога работает, работает, до первой перезагрузки компа. После - "10038 Socket operation on non-socket". Просто переустановка больше не помогает, так и продолжает ошибку давать, НО! если установить в новый каталог, то опять работает... до первой перезагрузки компа. И т.д. новый каталог - работает, в старый (не текущий, а с предыдущей установке) - не работает, даже если каталог был стерт и реестр очищен (использовали CCleaner). Такое впечатление, что есть что-то типа "анти брендмауэра", типа запишет себе путь-прогу и начинает ее блокировать, но только рестарта (своего перезапуска). ... Там админы клянутся, что антивирусы, брендмауэр, скайп и и вообще все, что к сети отношение имеет выключено. Реально помог бы Wireshark, что-то еще есть, какие нибудь административные тулзы/следилки за работниками, т.е. то что не афишируется особо. Да помог бы НО!, счас будет смешно, Wireshark запрещен безопасниками (как и тимвьювер) и потому не ставится (там где-то правила в доменных политиках прописаны, т.что я не могу ни трафик посмотреть, ни зайти самому поковыряться... хотя, даже не знаю чего уж смотреть ;(, (·) в общем).
-
А ну да, до вчерашнего дня такого не было. Двое из трех с неделю-чуть больше работали, компы после работы выключали. А третий оказывается только вчера приступил. в отпуске был, ну и после установки сам перезапустил комп, а после когда уже настройщик со мной по телефону переустанавливал, я ему без всякой задней мысли посоветовал другой каталог (программ файлес защищается, настройки перезаписывать проблемно). Чудеса потихоньку разъясняются. По крайней мере логика/повторяемость появилась. :)
|