Skip to content

Commit

Permalink
reflect mdns tcp support in session estabishment
Browse files Browse the repository at this point in the history
  • Loading branch information
hnnajh committed May 17, 2024
1 parent a76de01 commit 4e79b91
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 9 deletions.
13 changes: 8 additions & 5 deletions src/app/OperationalSessionSetup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -195,8 +195,9 @@ void OperationalSessionSetup::Connect(Callback::Callback<OnDeviceConnected> * on
Connect(onConnection, nullptr, onSetupFailure, transportPayloadCapability);
}

void OperationalSessionSetup::UpdateDeviceData(const Transport::PeerAddress & addr, const ReliableMessageProtocolConfig & config)
void OperationalSessionSetup::UpdateDeviceData(const Transport::PeerAddress & addr, const ResolveResult & result)
{
auto config = result.mrpRemoteConfig;
#if CHIP_DEVICE_CONFIG_ENABLE_AUTOMATIC_CASE_RETRIES
// Make sure to clear out our reason for trying the next result first thing,
// so it does not stick around in various error cases.
Expand Down Expand Up @@ -246,7 +247,7 @@ void OperationalSessionSetup::UpdateDeviceData(const Transport::PeerAddress & ad
return;
}

CHIP_ERROR err = EstablishConnection(config);
CHIP_ERROR err = EstablishConnection(result);
LogErrorOnFailure(err);
if (err == CHIP_NO_ERROR)
{
Expand Down Expand Up @@ -290,12 +291,14 @@ void OperationalSessionSetup::UpdateDeviceData(const Transport::PeerAddress & ad
// Do not touch `this` instance anymore; it has been destroyed in DequeueConnectionCallbacks.
}

CHIP_ERROR OperationalSessionSetup::EstablishConnection(const ReliableMessageProtocolConfig & config)
CHIP_ERROR OperationalSessionSetup::EstablishConnection(const ResolveResult & result)
{
auto config = result.mrpRemoteConfig;
#if INET_CONFIG_ENABLE_TCP_ENDPOINT
// TODO: Combine LargePayload flag with DNS-SD advertisements from peer.
// Issue #32348.
if (mTransportPayloadCapability == TransportPayloadCapability::kLargePayload)
if (mTransportPayloadCapability == TransportPayloadCapability::kLargePayload &&
result.supportsTcpServer && result.supportsTcpClient)
{
// Set the transport type for carrying large payloads
mDeviceAddress.SetTransportType(chip::Transport::Type::kTcp);
Expand Down Expand Up @@ -643,7 +646,7 @@ void OperationalSessionSetup::PerformAddressUpdate()

void OperationalSessionSetup::OnNodeAddressResolved(const PeerId & peerId, const ResolveResult & result)
{
UpdateDeviceData(result.address, result.mrpRemoteConfig);
UpdateDeviceData(result.address, result);
}

void OperationalSessionSetup::OnNodeAddressResolutionFailed(const PeerId & peerId, CHIP_ERROR reason)
Expand Down
4 changes: 2 additions & 2 deletions src/app/OperationalSessionSetup.h
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ class DLL_EXPORT OperationalSessionSetup : public SessionEstablishmentDelegate,

void MoveToState(State aTargetState);

CHIP_ERROR EstablishConnection(const ReliableMessageProtocolConfig & config);
CHIP_ERROR EstablishConnection(const AddressResolve::ResolveResult & result);

/*
* This checks to see if an existing CASE session exists to the peer within the SessionManager
Expand Down Expand Up @@ -421,7 +421,7 @@ class DLL_EXPORT OperationalSessionSetup : public SessionEstablishmentDelegate,
/**
* This function will set new IP address, port and MRP retransmission intervals of the device.
*/
void UpdateDeviceData(const Transport::PeerAddress & addr, const ReliableMessageProtocolConfig & config);
void UpdateDeviceData(const Transport::PeerAddress & addr, const AddressResolve::ResolveResult & result);

#if CHIP_DEVICE_CONFIG_ENABLE_AUTOMATIC_CASE_RETRIES
/**
Expand Down
2 changes: 0 additions & 2 deletions src/lib/address_resolve/AddressResolve_DefaultImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -306,8 +306,6 @@ void Resolver::OnOperationalNodeResolved(const Dnssd::ResolvedNodeData & nodeDat
}
#endif
result.address.SetIPAddress(nodeData.resolutionData.ipAddress[i]);
result.address.SetTransportType((result.supportsTcpClient || result.supportsTcpServer) ? Transport::Type::kTcp
: Transport::Type::kUdp);
current->LookupResult(result);
}

Expand Down

0 comments on commit 4e79b91

Please sign in to comment.