Here is some information about the Chooser that may be of help.
When the Macintosh Chooser is opened, several things happen.
The Macintosh first sends a ZIP GetZoneList request to whatever AppleTalk
router it has stored as its "A-ROUTER" value (the last router this Macintosh
received an RTMP packet from).
The GetZoneList command is sent to the router with the zone list index set
to 1. This tells the router to return the zone list to the requesting
workstation, starting with the first entry.
The ZIP GetZoneList command is sent using the ATP at-least-once (ALO)
protocol.
The time-out value used for the ATP request is set to 1 second; the number of
retries for this transaction is set to 5.
The Macintosh sends out the GetZoneList command and expects to hear back
from a router within one second. This is reasonable, because the router is
usually connected directly to the same cable that the requesting Macintosh is
attached to.
The router replies to the GetZoneList command by sending a ZIP GetZoneList
reply with the current zone list. If the zone list does not fit in one ZIP
reply packet, the router indicates that there are more zones by setting a flag
in the reply packet. The Macintosh requesting the zone list would then send
another GetZoneList request to the router with the zone list index set to the
number of the last zone name in the current reply packet plus one. This tells
the router to then send the next chunk of zone names starting at index number
X. A ZIP GetZoneList reply packet can usually hold around 40 zone names, but
the exact number of zone names you will get into a single ZIP reply packet
varies, depending on the length of the zone names themselves.
This may offer an explanation to why you have seen the symptoms you described.
The user opens the Chooser:
ZIP GetZoneList(index=1) -----> router
wait 1 second
re-transmit 2nd attempt
ZIP GetZoneList(index=1) -----> router
wait 1 second
re-transmit 3rd attempt
ZIP GetZoneList(index=1) -----> router
wait 1 second
re-transmit 4th attempt
ZIP GetZoneList(index=1) -----> router
wait 1 second
re-transmit 5th and last attempt
ZIP GetZoneList(index=1) -----> router
<----- router responds with a GetZoneList()
with the more to come flag set.
ZIP GetZoneList(index=40) -----> router
wait 1 second
no response
ZIP GetZoneList(index=40) -----> router
wait 1 second
no response
ZIP GetZoneList(index=40) -----> router
wait 1 second
no response
ZIP GetZoneList(index=40) -----> router
wait 1 second
no response
ZIP GetZoneList(index=40) -----> router
wait 1 second
no response
No response, so we give up and display the zones we've received so far in
the Chooser. The user ends up seeing only 39 zones.
In summary, if the router does not respond back to the first GetZoneList
request within one second, we re-send the request. If, at the end of five
requests, we still haven't received a reply, we give up and display no zone
list in the Chooser window. If we receive the initial zone list, and the
router has marked the "more to come" flag, we will request the next set of
zone names with the same time-out and retry values as used previously (1
and 5). This is how you can end up with partial zone lists.
There is no easy way to change the retry or time-out values associated
with this ZIP transaction. The AppleTalk protocol suite was developed to
be used on a local area network where high reliability and low round-trip
delays are prevalent. Apple has no plans to change or adopt the protocol
to suit every physical data link on which AppleTalk may be implemented.
Several third-party companies have developed products that push the
AppleTalk protocol to its limits when used with their asynchronous or
wide-area network products.