Всем привет. Есть непонимание почему происходит следующее: 1. Есть вэб-сервер (банальный апач, но это не важно). Он нормально пингуется. 2. Есть дллка которая грузиться руками и из которой происходит взаимодействие с этим серверорм. 3. На Вин 8+ (вне зависимости от разряности все хоккей). На Вин 7 - то работает то не (то есть коннект, то нет, то шлет то нет, то тянет данные то нет).
Код тривиален. Есть неблокирующий сокет и для ожидания используется селект. Пример (кусок коннекта, сенд ресив по такой же аналогии)
select - вываливается с 0 (timeout) что крайне странно. Причем если тот же код вынести в exe/dll и дергать гетпрок или просто через линковку (те в exe в импорте будут) - то везде ок.
Оттебажил через виндбг и до проваливания в ядро все ок. Но может я что упустил. Если подскажете в чем может быть дело и куда копать (вдруг кто сталкивался) - буду признателен.
там же NULL должен быть указатель на timeout для select , чтобы он встал в ожидание? я не знаю что это за язык, и воспринимает ли он 0 как NULL, но может есть возможность вместо timeout написать просто NULL и попробовать?
reversecode thnx, думал об этом. но как-то не придумал как может влиять. еще момент. воспроизводся так - без впн работает, с впн нет, но браузеры тянут ок. wget тоже. если задержка то секунда может. тоже не думаю что код, так как все по мсдн в плане кода.
Ранг: 1053.6 (!!!!), 1078thx Активность: 1.06↘0.81 Статус: Участник
Создано: 14 сентября 2016 11:23 · Поправил: reversecode · Личное сообщение · #8
тот же процесс хакер показывает что происходит с тцп коннектами можно поиграться с ваершарком на локальной машине по интерфейсу проблема может быть и с той стороны на впн сервере, банальный tcp mss fix, хотя он и проявляется по другому, но а вдруг
reversecode в ваершарке вижу норм тсп хэндшейк без впн, с впном его не увидишь - там все в туннель заворачивается. возможно ты и прав что дропаются какие-то пакеты. но черт побери как вгет то тянет без проблем...
Ранг: 7.1 (гость) Активность: 0.02↘0 Статус: Участник
Создано: 14 сентября 2016 11:43 · Поправил: superakira · Личное сообщение · #11
reversecode видит что в туннел летит) на разделить проблемотично. по вгету - именно так, с той же машины, но впном тянет норм. какая опция сокета может на это влиять - ума не приложу.
На селекте для коннекта 10 секунда, для сенда 20, для ресива 30 =) я не скупился
Добавлено спустя 4 минуты И еще напомню, что писал выше Причем если тот же код вынести в exe/dll и дергать гетпрок или просто через линковку (те в exe в импорте будут) - то везде ок.
reversecode на счет вгет - не вариант, но хотелось бы. В процессе ничего не биндиться, только шлеться (связка коннект-сенд-ресив-дисконнект). было бы не странно - я бы не писал) еще вопрос - может ли как-то влиять то что длл загружена руками?
то что не биндится неправильно, сбиндите перед коннектом на какой то айпи а то может у вас там интерфейсов много и оно уходит с какого то левого плутая ?
может загруженная руками получает меньше прав ? я в политиках винды не особо
бинд говорит с какого айпи будут уходить пакеты если бинда нет то с первого доступного интерфейса если у вас их много(интерфейсов), то пакет может уходить не оттуда откуда ожидается
Добавлено спустя 3 минуты таблицы роутинга в принципе все это поправляют, но бывают ситуации
Ранг: 7.1 (гость) Активность: 0.02↘0 Статус: Участник
Создано: 14 сентября 2016 12:33 · Поправил: superakira · Личное сообщение · #23
думаешь надо прикрутить вгет код? ну честно говоря я уже все перепробовал и мне не кажется это странной идеей)
Добавлено спустя 1 минуту посмотрел вайршарком. исходящий интерфейс всегда одинаков (с впн и без до проваливания в туннель) - так что по идее бинд не нужен.
Ранг: 1053.6 (!!!!), 1078thx Активность: 1.06↘0.81 Статус: Участник
Создано: 14 сентября 2016 12:36 · Поправил: reversecode · Личное сообщение · #24
есть вгет оспаривать корректность которого смысла нет, так ? значит если он не будет работать в длл,значит какая то политика винды если будет работать в длл, значит копать дальше код
reversecode забавно, но код вгета отработал. я не оформлял в виде длл или либы, просто рипнул код котрый мне был нужен. там просто написано. перегнал в асм и прикрутил к себе. все хоккей. они работают с блокирующими сокетами и по хитрому обрабатывают коннект (в отдельном потоке), сенд ресив на селектах (но чуть по другому). в общем кто бы мог подумать, что с неблокирующими такой плавающий баг. и это поведение только на 7. на 8+ все хоккей. такие дела.
Ранг: 1053.6 (!!!!), 1078thx Активность: 1.06↘0.81 Статус: Участник
Создано: 15 сентября 2016 17:08 · Поправил: reversecode · Личное сообщение · #27
кода мы не видели, поэтому верим наслово очевидно в нем недоработки, просто разные потоки, ничего нового привнести не могли да и если бы на винде 7 были такие глюки, они бы уже стали всем известны