diff --git a/.hgtags b/.hgtags
index 9ff4eeb04a97f78634e4623eceff586594ca4615..1c0d088a97f57eebbe2354b81306d6335cdc307f 100644
--- a/.hgtags
+++ b/.hgtags
@@ -399,3 +399,4 @@ e1bb1ae7d8b12faeb37933a737c199cc9b9f89cc 3.4.4-release
 7c6dfdc1b7a2ce0d8e3a8f3ce3058547ea065c0f DRTVWR-250
 b9ff9730daa53a541925300cbd02bb14575a5705 DRTVWR-277
 af6b711a97073431953b55ee808aaa09900c27e5 DRTVWR-276
+8302fefde6c8f4a64bfc7f04929f8bc85f5c6c7b DRTVWR-279
diff --git a/indra/llmessage/llxfermanager.cpp b/indra/llmessage/llxfermanager.cpp
index b9cddc8e45434ba3f69583bcb055cf3f3ea3507d..00b9d81611b6d1dba65bbe6706d9b34b1207c47a 100644
--- a/indra/llmessage/llxfermanager.cpp
+++ b/indra/llmessage/llxfermanager.cpp
@@ -886,8 +886,17 @@ void LLXferManager::processFileRequest (LLMessageSystem *mesgsys, void ** /*user
 				return;
 		}
 
-
-		std::string expanded_filename = gDirUtilp->getExpandedFilename( local_path, local_filename );
+		// If we want to use a special path (e.g. LL_PATH_CACHE), we want to make sure we create the
+		// proper expanded filename.
+		std::string expanded_filename;
+		if (local_path != LL_PATH_NONE)
+		{
+			expanded_filename = gDirUtilp->getExpandedFilename( local_path, local_filename );
+		}
+		else
+		{
+			expanded_filename = local_filename;
+		}
 		llinfos << "starting file transfer: " <<  expanded_filename << " to " << mesgsys->getSender() << llendl;
 
 		BOOL delete_local_on_completion = FALSE;