Subject Re: [firebird-support] Re: Undefined service gds_db/tcp error
Author Helen Borrie
At 02:12 AM 16/05/2006, you wrote:
>So when should that entry be made? Does installing Firebird normally
>do it automatically?

Yes. But also, a Firebird 1.5 client and a Firebird 1.5 server uses
port 3050 by default unless the port is specified otherwise, e.g. in
the connection string or in a configuration setting. The combination
of IB's gds32.dll and an IB server doesn't default to any
port. Likewise with the Fb 1.0 gds32.dll and a Fb 1.0 server. For
those configurations you DO need the services entry on the client.

> > > I have some beta software being tested by a client. The software runs
> > > fine on all of my machines but one tester is seeing several apparently
> > > random errors including this one:
> > >
> > > exception class : EIB_ISCError
> > > exception message : ISC ERROR CODE:335544721ISC ERROR
>MESSAGE:Unable to
> > > complete network request to host "XXX".Failed to locate host
> > > machine.Undefined service gds_db/tcp..

It means either that port 3050 is firewalled - not likely here if the
occurrence is random - or something else has commandeered port
3050. So see whether they are also running InterBase. Or some
network fault is breaking the connection. Or host "XXX" doesn't exist.

> > >
> > > I have set the project to use fbclient.dll using a file containing the
> > > code:
> > > IB_Constants.IB_GDS32 := 'fbclient.DLL';
> > >
> > > Which gets added to the uses clause my project.

Not sure what this means. That should be the only line of code in a
unit named, for example IB_SessionFB, which must be included in the
uses clause in the DPR file as the very first inclusion.

unit
IB_SessionFB;

interface

uses
IB_Constants;

implementation

initialization
// Replace the normal value with the alternate client DLL value.
IB_Constants.IB_GDS32 := 'fbclient.DLL';

end.

And, of course, since it is pathless, the application has to find
fbclient.dll in the system path.

> > >
> > > The `client install' includes installing Firebird-1.5.0.4306-Win32.exe
> > > with Parameters: "/silent /NOGDS32 /COMPONENTS=""ClientComponent"""
> > > and the full install of Firebird-1.5.0.4306-Win32.exe has parameters:
> > > /silent /NOGDS32

From the installation readme:

/NOGDS32

Don't install a copy of the client library into
the system directory, even if installation
analysis concludes it is OK to do so.

So, wherever fbclient.dll is, it's not in the system directory, which
is where your application's assignment (if it is in time) is
implicitly telling it to look.

> > >
> > > Can anyone suggest what is happening? If I'm getting the message
> > > `Undefined service gds_db/tcp' does that mean the software isn't using
> > > fbclient.dll?

The "gds" in the names of the port handle and the IB/Fb 1.0 client
library is merely a coincidence of naming conventions. The server
wouldn't care if the client library was called "petesouthwest.dll",
as long as the application knew that was what it had to load.

It just means that whatever client is loaded can't find port 3050
listening on the network, for whatever reason.

Depending on where you put your application's assignment code for the
GDS_32 variable, the app might or might not know it is supposed to
load "fbclient.dll" anyway and always loads gds32.dll from the system
directory--even on your development system. Even an IB client can
find the Fb 1.5 server if it knows what it is looking for...

./heLen