• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: [[NSHost currentHost] name] blocking on 10.6 ?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [[NSHost currentHost] name] blocking on 10.6 ?


  • Subject: Re: [[NSHost currentHost] name] blocking on 10.6 ?
  • From: Marc Krochmal <email@hidden>
  • Date: Tue, 08 Sep 2009 15:31:32 -0700

Hi Brent,

I may have been one of those appalled Apple engineers. In general, [NSHost currentHost] is the worst API on the system and people should avoid it like the plague.

Jonathan, just use SCDynamicStoreCopyLocalHostName instead. gethostname probably isn't going to do what you want.

Cheers,
-Marc



On Sep 8, 2009, at 2:44 PM, Brent Gulanowski wrote:

While I don't speak for Apple, we ran into this with Daylite Server, and
found out that you shouldn't be using those calls.
Basically, your computer is NOT the authority on your computer's host name.
The DNS system is the authority. So these calls tend to trigger DNS lookups,
at which point you're at the mercy of DNS, especially badly configured DNS,
or DNS servers that are down, or what-have-you.


Beyond that, I haven't worked out all the intricacies. But I believe that
gethostname() gets a cached host name that gets set at system startup, and
is in no way authoritative (it is I think the C API which underlies the
"hostname" command, and has a complementary sethostname command). That old
way of doing stuff is pretty much obsolete.


Mac OS X always tries to discover its name from DNS first, and falls back to
the mDNS if there is no good response from DNS. Or that seems to be what's
going on. The Apple engineers at WWDC were appalled by the very idea of
NSHost -currentHost and anything related to it, and basically said that if
you're using them, you've got problems in your design.


Not making any judgements, just relating my (now somewhat fuzzy) experience.



On Tue, Sep 8, 2009 at 4:15 PM, email@hidden <
email@hidden> wrote:

I am not sure if this is a problem unique to me or not but under 10.5
[[NSHost currentHost] name] or [[[NSProcessInfo] processInfo] hostname] were
quick and easy ways to get an mDNS friendly hostname such as imac-2.local


On 10.6 I find that both these combinations block badly (NSProcessInfo
merely defers to NSHost I think).


The list has a few references to the possibility of these blocking but I
never encountered it until now.
According to a stack sample getnameinfo() seems to be the library call that
is blocking.
_mdns_query_mDNSResponder seems to be the actual blocking call.


Anyone else seeing this behaviour?

There seem to be two alternatives:

NSString *name = NSMakeCollectable(SCDynamicStoreCopyLocalHostName (NULL));

This gives the correct mDNS friendly hostname but omits the local pseudo
domain.


Otherwise this seems suitable:

char hostname[_POSIX_HOST_NAME_MAX + 1];
gethostname(hostname, _POSIX_HOST_NAME_MAX);
name = [NSString stringWithCString:hostname encoding:NSUTF8StringEncoding];


Jonathan Mitchell

Developer
http://www.mugginsoft.com





_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden




-- Brent Gulanowski _______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: [[NSHost currentHost] name] blocking on 10.6 ?
      • From: Jayson Adams <email@hidden>
References: 
 >[[NSHost currentHost] name] blocking on 10.6 ? (From: "email@hidden" <email@hidden>)
 >Re: [[NSHost currentHost] name] blocking on 10.6 ? (From: Brent Gulanowski <email@hidden>)

  • Prev by Date: Re: Framework versioning and handling multiple OS SDK's?
  • Next by Date: Re: Framework versioning and handling multiple OS SDK's?
  • Previous by thread: Re: [[NSHost currentHost] name] blocking on 10.6 ?
  • Next by thread: Re: [[NSHost currentHost] name] blocking on 10.6 ?
  • Index(es):
    • Date
    • Thread