1087 //(2) Rejoing this flow. During rejoin scenario, it's the new owner obtains its new |
1087 //(2) Rejoing this flow. During rejoin scenario, it's the new owner obtains its new |
1088 //dataclient ('this') before ('this') dataclient knowing. The rejoin procedure is make |
1088 //dataclient ('this') before ('this') dataclient knowing. The rejoin procedure is make |
1089 //before break, hence it tries to apply the new owner, during which time the new |
1089 //before break, hence it tries to apply the new owner, during which time the new |
1090 //owner starts and hence attempts to TBindTo his new child. The child hates it |
1090 //owner starts and hence attempts to TBindTo his new child. The child hates it |
1091 //as it arrives from an unknown node. The rejoin protocol needs rethinking. |
1091 //as it arrives from an unknown node. The rejoin protocol needs rethinking. |
1092 RClientInterface::OpenPostMessageClose(Id(), aSender, TCFDataClient::TBindToComplete(KErrNone).CRef()); |
1092 RClientInterface::OpenPostMessageClose(Id(), aSender, TCFDataClient::TBindToComplete().CRef()); |
1093 return; |
1093 return; |
1094 } |
1094 } |
1095 CNetworkFlow::ReceivedL(aSender, aRecipient, aMessage); |
1095 CNetworkFlow::ReceivedL(aSender, aRecipient, aMessage); |
1096 #ifdef SYMBIAN_NETWORKING_UPS |
1096 #ifdef SYMBIAN_NETWORKING_UPS |
1097 // Allow derived classes to process received messages. |
1097 // Allow derived classes to process received messages. |
1159 { |
1159 { |
1160 TCFDataClient::TBindTo& bindToMsg(static_cast<TCFDataClient::TBindTo&>(aMessage)); |
1160 TCFDataClient::TBindTo& bindToMsg(static_cast<TCFDataClient::TBindTo&>(aMessage)); |
1161 TRAPD(err,BindToL(bindToMsg)); |
1161 TRAPD(err,BindToL(bindToMsg)); |
1162 // Ensure that TBindToComplete message gets sent before TIdle so that it gets to the destination |
1162 // Ensure that TBindToComplete message gets sent before TIdle so that it gets to the destination |
1163 // before destroy processing. |
1163 // before destroy processing. |
1164 RClientInterface::OpenPostMessageClose(Id(), aSender, TCFDataClient::TBindToComplete(err).CRef()); |
1164 if(err == KErrNone) |
|
1165 { |
|
1166 RClientInterface::OpenPostMessageClose(Id(), aSender, TCFDataClient::TBindToComplete().CRef()); |
|
1167 } |
|
1168 else |
|
1169 { |
|
1170 RClientInterface::OpenPostMessageClose(Id(), aSender, TEBase::TError(aMessage.MessageId(), err).CRef()); |
|
1171 } |
|
1172 |
|
1173 |
1165 ProcessDCIdleState(); // in case we were waiting to send idle |
1174 ProcessDCIdleState(); // in case we were waiting to send idle |
1166 //If we have received TDataClientStart before (when we did not yet have a bearer), |
1175 //If we have received TDataClientStart before (when we did not yet have a bearer), |
1167 //we complete the start here as well |
1176 //we complete the start here as well |
1168 if (err != KErrNone) |
1177 if (err != KErrNone) |
1169 { |
1178 { |