afs_int32 tl;
struct rx_serverQueueEntry *np, *nqe;
+ /*
+ * Only respond to client-initiated Rx debug packets,
+ * and clear the client flag in the response.
+ */
+ if (ap->header.flags & RX_CLIENT_INITIATED) {
+ ap->header.flags = ap->header.flags & ~RX_CLIENT_INITIATED;
+ rxi_EncodePacketHeader(ap);
+ } else {
+ return ap;
+ }
+
rx_packetread(ap, 0, sizeof(struct rx_debugIn), (char *)&tin);
/* all done with packet, now set length to the truth, so we can
* reuse this packet */
register struct rx_packet *ap;
int istack;
{
- afs_int32 tl;
- rx_packetwrite(ap, 0, 65, cml_version_number+4);
- tl = ap->length;
+ afs_int32 tl;
+
+ /*
+ * Only respond to client-initiated version requests, and
+ * clear that flag in the response.
+ */
+ if (ap->header.flags & RX_CLIENT_INITIATED) {
+ char buf[66];
+
+ ap->header.flags = ap->header.flags & ~RX_CLIENT_INITIATED;
+ rxi_EncodePacketHeader(ap);
+ bzero(buf, sizeof(buf));
+ snprintf(buf, sizeof(buf), "%s", cml_version_number+4);
+ rx_packetwrite(ap, 0, 65, buf);
+ tl = ap->length;
ap->length = 65;
rxi_SendDebugPacket(ap, asocket, ahost, aport, istack);
- ap->length = tl;
- return ap;
+ ap->length = tl;
+ }
+
+ return ap;
}