David Balažic wrote: > Ethan Blanton wrote: > > If you *just* restarted or reconnected, this can happen. They should be > > reaped shortly. (They're due to the DNS subsystem.) > > Wow, after 20 years this is still an issue on unix? > I remember experiencing it first with early versions of Netscape in > the nineties. > > this=application freezes for few seconds due to DNS things
Sort of. The "standard" DNS APIs in C are synchronous. This is because neither ISO C nor POSIX really provides a good mechanism for general asynchronous APIs. (There are a variety of mechanisms to provide asynchrony, but not trivially wrapped in a generic API without some sort of runtime.) This means that every DNS lookup using those APIs must wait until the DNS subsystem responds with either an IP address (or domain name, for reverse lookups) or an error, which can take many seconds. There are, however, a wide variety of asynchonous DNS resolver APIs provided by various runtime packages (including glib, which we use). The libpurple implementation of asynchronous DNS using fork() predates the availability of a good, generally available implementation that did not require the addition of a large and complex runtime dependency. Now that glib (really, GIO) provides a good asynchronous DNS API that is both generally available on the platforms libpurple supports and not an additional large dependency, we will be dropping our internal implementation in 3.0. This could have happened some years ago, except for our policies regarding backwards compatability and API changes. The version bump for 3.0 frees us from those constraints. Ethan _______________________________________________ Support@pidgin.im mailing list Want to unsubscribe? Use this link: https://pidgin.im/cgi-bin/mailman/listinfo/support