diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp
index d23760d8687b23410be48b439e5b3250d553f1ee..f0186067e71afa84c29cb741f637d3731f934975 100644
--- a/sflphone-common/src/managerimpl.cpp
+++ b/sflphone-common/src/managerimpl.cpp
@@ -2321,6 +2321,7 @@ void ManagerImpl::stopTone ()
 		std::string filepath = _audiofile->getFilePath();
 		_dbus->getCallManager()->recordPlaybackStoped(filepath);
 		delete _audiofile;
+		_audiofile = NULL;
     }
 
     _toneMutex.leaveMutex();
@@ -2410,13 +2411,8 @@ void ManagerImpl::ringtone (const std::string& accountID)
 		}
 		else {
 			sfl::Codec *codec;
-			if (ringchoice.find (".ul") != std::string::npos)
+			if (ringchoice.find (".ul") != std::string::npos || ringchoice.find (".au") != std::string::npos)
 			     codec = _audioCodecFactory.getCodec(PAYLOAD_CODEC_ULAW);
-			/*
-			 * FIXME : RawFile() only handles ULAW
-			 else if (ringchoice.find (".au") != std::string::npos)
-			     codec = _audioCodecFactory.getCodec(PAYLOAD_CODEC_GSM);
-			 */
 			else
 		        throw AudioFileException("Couldn't guess an appropriate decoder");
 			_audiofile = new RawFile(ringchoice, static_cast<sfl::AudioCodec *>(codec), samplerate);