|  | @@ -993,6 +993,7 @@ bool IncomingPacket::_doCIRCUIT_TEST(const RuntimeEnvironment *RR,const SharedPt
 | 
	
		
			
				|  |  |  			outp.append((uint16_t)0); // error code, currently unused
 | 
	
		
			
				|  |  |  			outp.append((uint64_t)0); // flags, currently unused
 | 
	
		
			
				|  |  |  			outp.append((uint64_t)packetId());
 | 
	
		
			
				|  |  | +			peer->address().appendTo(outp);
 | 
	
		
			
				|  |  |  			outp.append((uint8_t)hops());
 | 
	
		
			
				|  |  |  			_localAddress.serialize(outp);
 | 
	
		
			
				|  |  |  			_remoteAddress.serialize(outp);
 | 
	
	
		
			
				|  | @@ -1039,13 +1040,14 @@ bool IncomingPacket::_doCIRCUIT_TEST_REPORT(const RuntimeEnvironment *RR,const S
 | 
	
		
			
				|  |  |  		ZT_CircuitTestReport report;
 | 
	
		
			
				|  |  |  		memset(&report,0,sizeof(report));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		report.address = peer->address().toInt();
 | 
	
		
			
				|  |  | +		report.current = peer->address().toInt();
 | 
	
		
			
				|  |  | +		report.upstream = Address(field(ZT_PACKET_IDX_PAYLOAD + 52,ZT_ADDRESS_LENGTH),ZT_ADDRESS_LENGTH).toInt();
 | 
	
		
			
				|  |  |  		report.testId = at<uint64_t>(ZT_PACKET_IDX_PAYLOAD + 8);
 | 
	
		
			
				|  |  |  		report.timestamp = at<uint64_t>(ZT_PACKET_IDX_PAYLOAD);
 | 
	
		
			
				|  |  |  		report.remoteTimestamp = at<uint64_t>(ZT_PACKET_IDX_PAYLOAD + 16);
 | 
	
		
			
				|  |  |  		report.sourcePacketId = at<uint64_t>(ZT_PACKET_IDX_PAYLOAD + 44);
 | 
	
		
			
				|  |  |  		report.flags = at<uint64_t>(ZT_PACKET_IDX_PAYLOAD + 36);
 | 
	
		
			
				|  |  | -		report.sourcePacketHopCount = (*this)[ZT_PACKET_IDX_PAYLOAD + 52];
 | 
	
		
			
				|  |  | +		report.sourcePacketHopCount = (*this)[ZT_PACKET_IDX_PAYLOAD + 57]; // end of fixed length headers: 58
 | 
	
		
			
				|  |  |  		report.errorCode = at<uint16_t>(ZT_PACKET_IDX_PAYLOAD + 34);
 | 
	
		
			
				|  |  |  		report.vendor = (enum ZT_Vendor)((*this)[ZT_PACKET_IDX_PAYLOAD + 24]);
 | 
	
		
			
				|  |  |  		report.protocolVersion = (*this)[ZT_PACKET_IDX_PAYLOAD + 25];
 | 
	
	
		
			
				|  | @@ -1055,10 +1057,10 @@ bool IncomingPacket::_doCIRCUIT_TEST_REPORT(const RuntimeEnvironment *RR,const S
 | 
	
		
			
				|  |  |  		report.platform = (enum ZT_Platform)at<uint16_t>(ZT_PACKET_IDX_PAYLOAD + 30);
 | 
	
		
			
				|  |  |  		report.architecture = (enum ZT_Architecture)at<uint16_t>(ZT_PACKET_IDX_PAYLOAD + 32);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		const unsigned int receivedOnLocalAddressLen = reinterpret_cast<InetAddress *>(&(report.receivedOnLocalAddress))->deserialize(*this,ZT_PACKET_IDX_PAYLOAD + 53);
 | 
	
		
			
				|  |  | -		const unsigned int receivedFromRemoteAddressLen = reinterpret_cast<InetAddress *>(&(report.receivedFromRemoteAddress))->deserialize(*this,ZT_PACKET_IDX_PAYLOAD + 53 + receivedOnLocalAddressLen);
 | 
	
		
			
				|  |  | +		const unsigned int receivedOnLocalAddressLen = reinterpret_cast<InetAddress *>(&(report.receivedOnLocalAddress))->deserialize(*this,ZT_PACKET_IDX_PAYLOAD + 58);
 | 
	
		
			
				|  |  | +		const unsigned int receivedFromRemoteAddressLen = reinterpret_cast<InetAddress *>(&(report.receivedFromRemoteAddress))->deserialize(*this,ZT_PACKET_IDX_PAYLOAD + 58 + receivedOnLocalAddressLen);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		unsigned int nhptr = ZT_PACKET_IDX_PAYLOAD + 53 + receivedOnLocalAddressLen + receivedFromRemoteAddressLen;
 | 
	
		
			
				|  |  | +		unsigned int nhptr = ZT_PACKET_IDX_PAYLOAD + 58 + receivedOnLocalAddressLen + receivedFromRemoteAddressLen;
 | 
	
		
			
				|  |  |  		nhptr += at<uint16_t>(nhptr) + 2; // add "additional field" length, which right now will be zero
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		report.nextHopCount = (*this)[nhptr++];
 |