Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Подземелье Магов
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  21:39[Войти] | [Зарегистрироваться]

Обсуждение материала
Как подружить OpenSSL и библиотеку Synapse
Полный текст материала


Другие публикации автора: Игорь Шикарев

Цитата или краткий комментарий:

«... Фирма, в которой я в настоящее время тружусь, занимается написанием и сопровождением софта для касс и киосков по приему коммунальных платежей от населения. Помимо приема коммунальных платежей, кассы принимают платежи за сотовые телефоны, Яндекс-Деньги, WebMoney. Такие платежи проводятся через систему E-Port. ...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.

Результаты голосования
Оценка содержания

  Содержит полезные и(или) интересные сведения
[1]375%
 
  Ничего особенно нового и интересного
[2]125%
 
  Написано неверно (обязательно укажите почему)
[3]00%
 
Всего проголосовали: 4

Оценка стиля изложения

  Все понятно, материал читается легко
[1]3100%
 
  Есть неясности в изложении
[2]00%
 
  Непонятно написано, трудно читается
[3]00%
 
Всего проголосовали: 3




Смотрите также материалы по темам:


Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 15

28-01-2008 01:12
причина до смешного банальна: не захотело работать, хоть и скачивал "специальные" пакеты с библиотеками OpenSSL. Поиски в инете не дали результата, только просьбы о помощи и восторженные восклицания, что "у меня заработало вот с таким набором библиотек"


Странно, на сайте поддержки indy есть ссылки на сайт компании, занимающейся коммерческой поддержкой пакета. Так там есть исходники (бесплатно) клиент-серверной системы на SSL.
Сервер компилируется и работает, а клиент я не проверял.


26-01-2008 07:59
сообщение от автора материала
Коллеги, своей статьей я не претендую на абсолютно верное решение проблемы. Надо было закрыть проект.

Отвечаю на вопросы:
Кстати, а почему решение на Indy10 вас не устроило?
причина до смешного банальна: не захотело работать, хоть и скачивал "специальные" пакеты с библиотеками OpenSSL. Поиски в инете не дали результата, только просьбы о помощи и восторженные восклицания, что "у меня заработало вот с таким набором библиотек"

ответ для DRON:
глубокого анализа мы не проводили, надо было уложиться в сроки, поэтому применили "железобетонный" способ замены имен библиотек. Кстати, не все что пишут в MSDN на деле работает так как пишут, надо все проверять опытным путем.


25-01-2008 18:58
Вернёмся к моему первому вопросу... Я тут наконец нашёл время и решил проверить описываемое вами поведение, но ничего такого у себя на XP SP2 не обнаружил: никаких "но все равно винда берет уже загруженную DLL с точно таким именем". Проверял и статическую и динамическую загрузки, менял по разному IMAGEBASE, проверял как одну библиотеку, так и две связанные (ваш случай), запускал множество процессов в разном порядке...
Вобщем всё работает как и описано в MSDN, никаких сюрпризов, более того, даже в ОДИН процесс две библиотеки с одинаковыми именами грузятся совершенно нормально.
Так что видимо причина не работы ваших библиотек кроется в чём-то другом...

По результатам экспериментов могу сказать следующее:
в плане загрузки библиотек разные процессы вообще НИКАК друг на друга не влияют;
если задать полный путь до библиотеки (при динамической загрузке конечно), то никаких "замен" винда не производит, будет загружена строго заданная библиотека, даже если библиотека с таким именем уже загружена;
если задано только имя и библиотека с таким именем не была загружена в адресное пространство данного процесса (подчёркиваю, именно "данного", а что там в других значения не имеет), то приоритет имеет библиотека находящаяся в той же папке что и программа;
если задано только имя, но библиотека с таким именем уже грузилась, то использована будет именно она, независимо ни от чего.

Что у вас могло быть на самом деле:
1) Ваши библиотеки оказались внесены в "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs" что полносью меняет поведение. Детально я этот режим пока не проверял, так как надо каждый раз перезагружаться.
2) OpenSSL хранит какую-то информацию в реестре или файлах, таким образом одна версия библиотеки может что-то подпортить для другой.
3) OpenSSL использует какие-то объекты общие для всех копий, это могут быть MMF, расшареные секции итд, тогда причина может быть в несовместимости этих объектов для разных версий OpenSSL.
Проверка вариантов 2,3 на реалистичность требует копания в исходниках OpenSSL, чем я не занимался.
4) Кто-то грузит свои библиотеки OpenSSL в ваш процесс до того как это делаете вы. Такое может происходить в каком нибудь хуке или расширении оболочки (например какой нибудь приблуде, для просмотра/проверки сертификатов), но на мой взгляд очень маловероятно.

Хотелось бы всё таки узнать реальную причину проблем, поэтому возникают вопросы.
Использовали ли вы в процессе "борьбы с багом" утилиты ProcessExplorer и ProcessMonitor? Там должно быть видно в какие процессы были загружены ssleay32.dll и libeay32.dll, а также полный путь до этих библиотек для каждого процесса и порядок их загрузки. И хорошо бы ещё знать на что кроме имён библиотек влияют SSLEAY и LIBEAY, может какие-то константы в коде меняются (это я на пункты 2 и 3 намекаю).
 DRON


25-01-2008 06:46
Нет, слава богу, не под GPL. Более того их лицензия несовместима с GPL.
Опа, а я то был уверен в обратном.
Надо снова посмотреть.

Кстати, а почему решение на Indy10 вас не устроило?


24-01-2008 12:44
Вот и глупость сделали, поскольку метод совершенно официальный.
Хакерский он в смысле кривизны реализации: винда не знает о таких "библиотеках" и некоторые функции будут работать неправильно.
Библиотеки-то по GPL распространяются.
Нет, слава богу, не под GPL. Более того их лицензия несовместима с GPL.
 DRON


24-01-2008 10:15
но наш "консилиум" программистов отнес этот метод к хакерским, поэтому отклонили.

Вот и глупость сделали, поскольку метод совершенно официальный. Библиотеки-то по GPL распространяются. Если вы их код не меняли, то можете использовать для любых целей.
Кстати, вы должны опубликовать код измененных файлов Synapce, вы это знаете (если уж речь о лицензионности)?


24-01-2008 09:48
сообщение от автора материала
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1294
Но не факт что заработает, надо проверять.

Читал по этой ссылки, хотел так и сделать, но наш "консилиум" программистов отнес этот метод к хакерским, поэтому отклонили.


24-01-2008 09:03
Можите привести рабочий пример такой проекции?
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1294
Но не факт что заработает, надо проверять.
 DRON


24-01-2008 09:02
Можите привести рабочий пример такой проекции?
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1294
Но не факт что заработает, надо проверять.
 DRON


24-01-2008 02:37
сообщение от автора материала

А почему нельзя сделать проекцию библиотек в память с другим именем, загрузив их из ресурсов приложения?
А код ссылки на библиотеки в OpenSSL подправить?


Можите привести рабочий пример такой проекции?


24-01-2008 02:27
А почему нельзя сделать проекцию библиотек в память с другим именем, загрузив их из ресурсов приложения?
А код ссылки на библиотеки в OpenSSL подправить?


23-01-2008 02:14
сообщение от автора материала
Про папку WinSxS, к совему стыду, не слыхал, надо будет проработать эту тему. А вот наличие исходников от OpenSSL не дает ровным счетом ничего, так как нет легальных (не хакерских) способов вкомпилировать исходник на C в код Pascal, разве что OBJ файлы создать, но тогда надо делать и заголовочный файл для Pascal.


23-01-2008 01:57
Вообще-то для решения этой проблемы есть механизм WinSxS (посмотрите эту папочку). Так же не понятно зачем использовать DLL, когда есть исходники…


23-01-2008 00:23
сообщение от автора материала
Пробовали так делать, путь указывали... но все равно винда берет уже загруженную DLL с точно таким именем, если ее кто-то уже загрузил. Если перегрузить комп, то если повезе загрузятся DLL, которые указывали в пути загрузки. Проверяли на Windows XP SP2 и Windows 2003


22-01-2008 18:27
Может я конечно что-то путаю, но почему бы просто не грузить эти библиотеки через LoadLibrary с полным указанием пути? В этом случае, по идее, всё должно правильно заработать и без переименования.
 DRON


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Два кольца, два конца, посередине гвоздик.
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.

Оценка содержания
 
Содержит полезные и(или) интересные сведения
 
Ничего особенно нового и интересного
 
Написано неверно (обязательно укажите почему)


Оценка стиля изложения
 
Все понятно, материал читается легко
 
Есть неясности в изложении
 
Непонятно написано, трудно читается

Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования