3.2.4.1 Hello

The client adheres to the requirements as specified in [WS-Discovery] section 4.1. In addition, BITS Peer-Caching: Peer Discovery Protocol adds the following requirements:

  • The client MUST verify that the message satisfies the requirements in section 2.2.3 and section 3.1.4.1, discarding the message if not.

  • The client MUST verify that the message's /s:Envelope/s:Body/d:Hello/d:Types element includes the type msbits:PeerServer, discarding the message if not.

  • The client MAY verify other administratively defined criteria, discarding the message if they are not satisfied.<21>

  • The client SHOULD add the server data to its tables as follows:

    1. Find or create the server row. From the /s:Body/d:Hello/a:EndpointReference element, set M_INSTANCE to the value of the a:Address child element, M_VERSION to the value of the msbits:version child element, and M_FQDN to the value of the msbits:Fqdn child element. Then, for each row in the table of servers, perform a case-insensitive comparison of the row's FQDN with M_FQDN. If a row matches, update the row's protocol version with M_VERSION and skip to step 2; otherwise, create a new row using M_FQDN, M_VERSION, and M_INSTANCE.

    2. Integrate server addresses. For each address URI in the /s:Body/d:Hello/d:XAddrs element, convert into an IPv4 or an IPv6 address as appropriate, then check whether the address matches an existing row in the table of subnets. If no row matches, the address MUST be discarded. Otherwise, search in the associated table of server addresses for a row matching M_FQDN. If no row matches, create a new row by using the address from the message. Set the timestamp of the row to the current UTC time; set the address of the row to the current message address.