usr/src/lib/libslp/javalib/com/sun/slp/SSrvMsg.java
author Mark J. Nelson <Mark.J.Nelson@Sun.COM>
Wed, 06 Aug 2008 16:29:39 -0600
changeset 7298 b69e27387f74
parent 0 68f95e015346
permissions -rw-r--r--
6733918 Teamware has retired, please welcome your new manager, Mercurial 4758439 some files use "current date" sccs keywords 6560843 asm sources should not rely on .file "%M%" for naming STT_FILE symbols 6560958 Solaris:: perl modules should not use SCCS keywords in version information 6729074 webrev doesn't deal well with remote ssh hg parents
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     2
 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
7298
b69e27387f74 6733918 Teamware has retired, please welcome your new manager, Mercurial
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents: 0
diff changeset
     5
 * Common Development and Distribution License (the "License").
b69e27387f74 6733918 Teamware has retired, please welcome your new manager, Mercurial
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents: 0
diff changeset
     6
 * You may not use this file except in compliance with the License.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    21
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    22
 * Copyright (c) 1999 by Sun Microsystems, Inc.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    23
 * All rights reserved.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    24
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
//  SSrvMsg.java:     Message class for SLP service request.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
//  Author:           James Kempf
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
//  Created On:       Thu Oct  9 13:40:16 1997
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
//  Last Modified By: James Kempf
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
//  Last Modified On: Tue Oct 27 10:57:38 1998
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
//  Update Count:     112
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
//
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
package com.sun.slp;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
import java.util.*;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
import java.io.*;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
/**
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
 * The SSrvMsg class models the SLP service (request, reply) message
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
 * server side. Subclasses for other versions can specialize the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
 * initialize() and makeReply() methods.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
 * @author James Kempf
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
class SSrvMsg extends SrvLocMsgImpl {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
    String serviceType = "";	// service type and naming authority
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
    String query = "";		// the query
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
    String spi = "";
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
    protected SSrvMsg() {}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
    // Construct a SSrvMsg from the byte input stream.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
    SSrvMsg(SrvLocHeader hdr, DataInputStream dis)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
	throws ServiceLocationException, IOException {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
	super(hdr, SrvLocHeader.SrvReq);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
	this.initialize(dis);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
    }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
    // Initialize the message from the input stream.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
    void initialize(DataInputStream dis)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
	throws ServiceLocationException, IOException {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
	SLPServerHeaderV2 hdr = (SLPServerHeaderV2)getHeader();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
	StringBuffer buf = new StringBuffer();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
	// First get the previous responder.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
	hdr.parsePreviousRespondersIn(dis);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
	// Get the service type.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
	hdr.getString(buf, dis);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
	serviceType = buf.toString();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
	if (serviceType.length() <= 0) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
	    throw
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
		new ServiceLocationException(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
				ServiceLocationException.PARSE_ERROR,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
				"srq_stype_missing",
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
				new Object[0]);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
	ServiceType t = new ServiceType(serviceType);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
	serviceType = t.toString();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
	// Get vector of scopes.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
	hdr.getString(buf, dis);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
	hdr.scopes = hdr.parseCommaSeparatedListIn(buf.toString(), true);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   102
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   103
	// Validate, but check for empty if solicitation for DAAdvert
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
	//  or SAAdvert.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
	if (hdr.scopes.size() <= 0) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
	    if (!t.equals(Defaults.DA_SERVICE_TYPE) &&
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
		!t.equals(Defaults.SA_SERVICE_TYPE)) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
		throw
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
		    new ServiceLocationException(
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
					ServiceLocationException.PARSE_ERROR,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
					"no_scope_vector",
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
					new Object[0]);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
	    }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
	} else {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
	    // Unescape scope strings.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
	    hdr.unescapeScopeStrings(hdr.scopes);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   120
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   121
	    DATable.validateScopes(hdr.scopes, hdr.locale);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   122
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
	// Get the query.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   126
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
	hdr.getString(buf, dis);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   128
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   129
	query = buf.toString();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   130
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   131
	// Get the SPI
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   132
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   133
	hdr.getString(buf, dis);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   134
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   135
	spi = buf.toString();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   136
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   137
	hdr.constructDescription("SrvRqst",
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   138
				 "        service type=``" +
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   139
				 serviceType + "''\n" +
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   140
				 "        query=``" +
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   141
				 query + "''\n" +
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   142
				 "        spi=``" +
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   143
				 spi + "''");
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   144
    }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   145
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   146
    // Construct a SSrvMsg from the arguments. This will be a SrvRply
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   147
    //  for transmission to the client.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   148
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   149
    SrvLocMsg makeReply(Hashtable urls, Hashtable URLSignatures)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   150
	throws ServiceLocationException {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   151
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   152
	SLPServerHeaderV2 hdr =
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   153
	    ((SLPServerHeaderV2)getHeader()).makeReplyHeader();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   154
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   155
	hdr.iNumReplies = urls.size();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   156
	// keep this info so SAs can drop 0 replies
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   157
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   158
	ByteArrayOutputStream baos = new ByteArrayOutputStream();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   159
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   160
	int n = urls.size();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   161
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   162
	String authDesc = "\n";
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   163
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   164
	// Write out size.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   165
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   166
	hdr.putInt(n, baos);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   167
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   168
	Enumeration en = urls.keys();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   169
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   170
	int nurls = 0;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   171
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   172
	// Write out the members of the list, including the lifetime.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   173
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   174
	while (en.hasMoreElements()) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   175
	    ServiceURL surl = (ServiceURL)en.nextElement();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   176
	    Hashtable auth = null;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   177
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   178
	    if (URLSignatures != null) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   179
		auth = (Hashtable)URLSignatures.get(surl);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   180
		AuthBlock selectedAuth =
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   181
		    AuthBlock.getEquivalentAuth(spi, auth);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   182
		auth = null;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   183
		if (selectedAuth != null) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   184
		    auth = new Hashtable();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   185
		    auth.put(spi, selectedAuth);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   186
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   187
		authDesc =
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   188
		    authDesc + "         " + surl.toString() + ": " +
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   189
		    (auth != null ?
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   190
		     selectedAuth.toString() :
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   191
		     "No Auth Block\n");
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   192
	    }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   193
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   194
	    // Parse out a URL entry. Check overflow. If the packet has filled
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   195
	    //  up, then break out of the loop.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   196
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   197
	    if (hdr.parseServiceURLOut(surl,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   198
				       (auth != null),
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   199
				       auth,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   200
				       baos,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   201
				       true) == false) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   202
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   203
		// Note that we set overflow here because there are additional
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   204
		//  URL's, but we don't have to truncate the packet.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   205
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   206
		hdr.overflow = true;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   207
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   208
		// We need to rewrite the size to what it should be.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   209
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   210
		byte[] bytes = baos.toByteArray();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   211
		baos.reset();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   212
		SrvLocHeader.putInteger(nurls, baos);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   213
		baos.write(bytes, 2, bytes.length - 2);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   214
		break;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   215
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   216
	    }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   217
	
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   218
	    nurls++;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   219
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   220
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   221
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   222
	hdr.payload = baos.toByteArray();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   223
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   224
	// Construct description.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   225
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   226
	hdr.constructDescription("SrvRply",
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   227
				 "        service URLs=``" + urls + "''\n" +
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   228
				 "        auth block=" + authDesc + "\n");
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   229
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   230
	return hdr;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   231
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   232
    }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   233
}