diff -r c84cf270c54f -r 8871b09be73b phoneengine/loghandling/src/cpeloghandling.cpp --- a/phoneengine/loghandling/src/cpeloghandling.cpp Tue Feb 02 00:10:04 2010 +0200 +++ b/phoneengine/loghandling/src/cpeloghandling.cpp Fri Feb 19 22:50:26 2010 +0200 @@ -394,13 +394,16 @@ if ( EPECallTypeVoIP == iDataStore.CallType( aCallId ) ) { - // voip address field must be used for voip calls - aLogInfo.SetVoipAddress( aLogInfo.PhoneNumber() ); - aLogInfo.SetPhoneNumber( KNullDesC() ); + if ( EFalse == IsValidPhoneNumber( aLogInfo.PhoneNumber() ) ) + { + // voip address field must be used for voip calls if + // string is not valid for CS call. + aLogInfo.SetVoipAddress( aLogInfo.PhoneNumber() ); + aLogInfo.SetPhoneNumber( KNullDesC() ); + } } } - // ----------------------------------------------------------------------------- // CPELogHandling::SaveCallInfoL // Update log external data. @@ -841,4 +844,23 @@ return CPELogExtensionWrapper::NewLC( aPluginUid ); } +// ----------------------------------------------------------------------------- +// CPELogHandling::IsValidPhoneNumber +// ----------------------------------------------------------------------------- +// +TBool CPELogHandling::IsValidPhoneNumber( + const TDesC& aString ) const + { + _LIT( KAllowedCharsInPhoneNumber, "0123456789*+pw#PW" ); + + TLex input( aString ); + TPtrC validChars( KAllowedCharsInPhoneNumber ); + while ( validChars.Locate( input.Peek() ) != KErrNotFound ) + { + input.Inc(); + } + + return ( !input.Remainder().Length() ); + } + // End of File