Re: panel error *** ORBit patch ***



<beware, soapbox content included. I've also reordered the chunks of the
message a bit.>

On Thu, 13 Aug 1998, Frederick I Gleef wrote:

> > I refuse to put broken DNS hacks in in order to cater to broken system
> > setups. I quite honestly do not care to support broken systems - should I
> > also check to make sure that you have IPv4 support on your system before
> > attempting to use it? :)
> 
> I beg you to reconsider.  Broken DNS is common

If programs encounter a broken runtime environment, they are not required
to run perfectly. If the environment does not provide the basic
necessities (which, for a network desktop, includes core network
services), then it's reasonable to exit

On the flip side, robust error detection (and if possible, recovery) is a
must, so while your patch didn't quite fit the bill, your message pointed
out some really broken code of mine :) Thanks once again!

> Some users are beholden on others for DNS services.  For example many
> people with just a dialup connection only have access to reverse DNS
> when they are connected (and with some ISP's not even then).  These
> users often have dynamic IP addresses.  While you and I have the
> knowledge to write a script to adjust /etc/hosts for a dynamic number,
> and possibly a dynamic name, many users don't.  We shouldn't require
> that level of knowledge just to get Panel working. 

The default /etc/hosts on most systems (which would produce localhost ->
127.0.0.1 -> localhost.localdomain, I think) should work fine. If you
don't have DNS access, it's when you have '/bin/hostname' print out a
hostname that is not listed in your /etc/hosts file, and/or you have dns
listed in /etc/nsswitch.conf before files for the hosts map, that problems
ensue.

> Remember, DNS is not a requirement for an IPv4 network to work.

No DNS requirement was made. /etc/hosts fits the bill.

> A better (in my mind), but still not perfect solution would be a
> configure option for localhost-only compilation.

I have no problem telling people that IMHO, their system is broken. They
can feel free to prove otherwise to me, of course :)

The big problem with putting little hacks like this in is that we wind up
with a "good enough" mentality similar to the one that Bill "640k will be
enough" Gates purportedly holds. Yes, we could indeed hard-code
"localhost" in, but that would defeat the whole point of having a NETWORK
desktop.

Basic idea is to work with the broadest range of systems possible without
limiting functionality in any way... 

> The best option, in my mind, would be for it to do the DNS and reverse
> DNS checks.  If the tests succeed, great, if not (i.e. hent==NULL)
> rather than failing with an error or segfaulting, contunue with
> server_cnx->hostname = g_strdup("localhost").  This way, machines with
> proper DNS will have a properly networked ORBit, machines without it
> will not, but still work locally.

DNS does not have to be involved, /etc/hosts is your friend.

> Should I pass on this offer to any BOOTP / DHCP user having problems
> with Panel :-).  I think your time would be better spent on coding than
> tech support.

Here's the premises I'm working under:
	- 'hostname' should resolve to a valid IP address, loopback or otherwise.
	- The IP address pointed to by 'hostname' should reverse-resolve
	  to a valid hostname (presumably, but not required to be, the FQDN)
	- The 'hostname' and/or FQDN retrieved using the above procedure
	  should be valid for the lifetime of a CORBA server (and the

Here's the requirements for a solution to make things work better:
	- At the time of object reference creation in the server, it must
	  put a valid hostname (Internet-accessable if at all possible)
	  into the IOR.
	- That hostname needs to continue to work (resolvable to a
	  connectable IP) as long as the IOR is
	  published for use by clients.
[I think those are the only requirements, I might have missed one]

Stepping down from the soapbox, note that all of the above may be more or
less rhetorically speaking, because the ORBit in CVS should do something like:

	hostname = gethostname();
	hostent = gethostbyname(hostname);
	if(hostent) {
		addrent = gethostbyaddr(hostent->host_address);
		if(addrent) {
			internet_accessable_hostname = addrent->host_fqdn;
		} else
			internet_accessable_hostname = ip_address_into_string(hostent->host_address);
	} else
		internet_accessable_hostname = hostname;

(And then internet_accessable_hostname is of course what gets encoded into
theh IOR and advertised as "the host to access this object on"). 

Does anyone know how X handles this whole conundrum? It has the _exact_
same problem WRT setting $DISPLAY and all. Even if its solution is not
"perfect", the solution (a) sets precedent (b) works pretty well most of
the time (c) even if we get a better solution, the X one is going to limit
us, because all GNOME programs on a particular desktop session share the
same display.

(Part of the problem is that CORBA encodes the hostname inside the IOR
instead of leaving it directly manipulatable like X $DISPLAY's do. Perhaps
we just need an iiop:// URL parser instead - any volunteers? It shouldn't
be too hard, since all ORBit object keys are strings... :-)

Hope this helps,
-- Elliot
Progress (n.): The process through which Usenet has evolved from smart
people in front of dumb terminals to dumb people in front of smart
terminals.  -- obs@burnout.demon.co.uk





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]