Menu

#89 KnownDADiscoveryRqstRply includes LIBSLP's scope list

open
nobody
5
2012-11-14
2007-01-20
Alan
No

Through any of LIBSLP UA's DA discovery functions, when KnownDADiscoveryRqstRply is called, the scope list passed is included in the "service:directory-agent" query that solicits a DA advertisement response.

This appears to disagree with LIBSLP UA's intention and RFC operation. RFC 2608 "8.5 Directory Agent Advertisement" says of the SrvRqst that solicits a DA Advertisement that "the <scope-list> of the SrvRqst must either be omitted or include a scope which the DA supports".

This would appear to put LIBSLP UA at fault for having included a scope list in the "service:directory-agent" query when there is no reason to think the DA supports the scopes LIBSLP UA is specifying, nor any intention of LIBSLP UA being limited to only those scopes if the DA supported others.

LIBSLP UA should have omitted any scope list from the request, in order to learn whichever scope(s) the DA is supporting, as per the user scope model.

Note that if the DA in question is OpenSLP-based, the facts of this issue might not produce a negative outcome. Based only on code review, SLPDKnownDAGenerateMyDAAdvert in Open SLP 1.2.1, 1.3.0 and the 2.0 alpha all appear to use the G_SlpdProperty.useScopes in its entierty during every response, without considering what scope a remote query might have specified.

So even when the LIBSLP UA's "service:directory-agent" query contains a specific scope list, an OpenSLP-based DA will apparently respond with its entire supported scope list regardless. Which is good in terms of results for the LIBSLP UA client behavior, but does not appear to be an RFC-specified or guaranteed behavior on the SLP DA's part.

Against an unknown (but presumably Novell NetWare 6.5-based) SLP DA during which this issue was observed, LIBSLP UA was in a default configuration and specified "DEFAULT" in the scope list of the SrvRqst.

The response from the DA was apparently a union of the scope(s) requested by the UA and the scope(s) the DA actually supported. Which in the case observed resulted in an empty scope list being returned in the DA Advertisement response, because there was no union between "DEFAULT" and "MYSCOPE" (the scope the DA supported).

Sending a "service:directory-agent" query with an empty scope list (as is the default behavior of the SRVLOC UA in the Novell Client 4.xx for Windows) to the same unknown DA yields a DA Advertisement response with the supported scopes for the DA ("MYSCOPE"). Thereby allowing the UA to learn the scope(s) that the DA supports.

Discussion


Log in to post a comment.