FBClient использует настройки локального сервера при подключ

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
pincher1519
Сообщения: 15
Зарегистрирован: 10 сен 2012, 11:51

FBClient использует настройки локального сервера при подключ

Сообщение pincher1519 » 23 дек 2013, 10:01

Доброго времени суток!

Программа производит подключение к удаленному firebird серверу 2.1 через клиентскую библиотеку fbclient.dll, однако использует настройки подключения локального firebird сервера.

Долго ломал голову, почему не могу подключиться к удаленному серверу, пока не запустил процессмонитор, и не обнаружил, что, по какой-то причине, клиентская часть ищет установленный сервер на локальной машине, и после обнаружения его, считывает его настройки, в частности порт для поключения (на локальной машине он намеренно прописан как 3055), после чего ломится на удаленный сервер по данному порту (на удаленном сервере порт используется по умолчанию 3050).

Не могу найти информации почему такое происходит, и с какой целью такое поведение сделано у клиентской библиотеки.

Может кто сталкивался с таким поведением?

PS: FBClient.dll из комплекта сервера 2.1.1.17910, Программа разработана на ms vc++ с использованием mfc

Спасибо

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: FBClient использует настройки локального сервера при под

Сообщение hvlad » 23 дек 2013, 12:42

На пальцах:

- сервер ищет firebird.conf в каталоге установки (на один каталог выше самого сервера) и НЕ использует запись в реестре.
- клиент сначала смотрит в реестр и, если там нет соотв. записи, то ищет firebird.conf так же как и сервер.

PS 2.1.1??? Сколько ему лет и сколько раз он обновлялся - в курсе ?

pincher1519
Сообщения: 15
Зарегистрирован: 10 сен 2012, 11:51

Re: FBClient использует настройки локального сервера при под

Сообщение pincher1519 » 23 дек 2013, 14:44

hvlad писал(а):На пальцах:
- сервер ищет firebird.conf в каталоге установки (на один каталог выше самого сервера) и НЕ использует запись в реестре.
Ну это я и пытался сказать. Мониторинг показал, что было обращение к ветке реестра, где прописан каталог установки сервера, после этого было обращение к конфигу сервера. Методом тыка было выявлено, что использовался именно тот порт, который прописан в конфиге.
hvlad писал(а): - клиент сначала смотрит в реестр и, если там нет соотв. записи, то ищет firebird.conf так же как и сервер.
Вот именно от этого и хотелось бы отказаться, чтобы клиент не смотрел на конфигурацию сервера, установленого на клиентской машине.
hvlad писал(а): PS 2.1.1??? Сколько ему лет и сколько раз он обновлялся - в курсе ?
Знаю что древний, но возможности перейти на более свежие варианты пока нет, т.к. потребуется уделить много времени на допиливания сервера и клиента по общению друг с другом. (Канал между сервером и клиентом шифрованный, плюс используется физический ключ для дешифрации баз, которые сервер поднимает на себе при обращении).

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: FBClient использует настройки локального сервера при под

Сообщение hvlad » 23 дек 2013, 16:46

pincher1519 писал(а):
hvlad писал(а): - клиент сначала смотрит в реестр и, если там нет соотв. записи, то ищет firebird.conf так же как и сервер.
Вот именно от этого и хотелось бы отказаться, чтобы клиент не смотрел на конфигурацию сервера, установленого на клиентской машине.
Алгоритм поиска конфигурации я на пальцах показал. Он меняться не будет.
Запись в реестре "мешает"? Убери её, серверу она не нужна.
Запись в реестре нужна ? Сделай так, чтобы она указывала на другой firebird.conf, там где не изменён порт.
Или используй переменную среды FIREBIRD в приложении.
pincher1519 писал(а):
hvlad писал(а): PS 2.1.1??? Сколько ему лет и сколько раз он обновлялся - в курсе ?
Знаю что древний, но возможности перейти на более свежие варианты пока нет, т.к. потребуется уделить много времени на допиливания сервера и клиента по общению друг с другом. (Канал между сервером и клиентом шифрованный, плюс используется физический ключ для дешифрации баз, которые сервер поднимает на себе при обращении).
Не вижу повода не обновиться до последнего 2.1.х.
Впрочем, это не мои проблемы, раз уж так нравятся старые баги ...

Ответить