diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 88fee221adf904493f0ae27cd67ef7fdf4c8b617..9d3e5f1267fdef43795b177b97ed8447a85b244f 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2794,6 +2794,9 @@ void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)
 //				LLWearableBridge::removeItemFromAvatar(item_to_remove);
 //			}
 // [SL:KB] - Patch: Appearance-RemoveWearableFromAvatar | Checked: 2010-08-13 (Catznip-2.1.2a) | Added: Catznip-2.1.1d
+// [RLVa:KB] - Checked: 2010-09-04 (RLVa-1.2.1c) | Added: RLVa-1.2.1c
+			if ( (!rlv_handler_t::isEnabled()) || (gRlvWearableLocks.canRemove(item_to_remove)) )
+// [/RLVa:KB]
 			{
 				/*const*/ LLWearable* pWearable = gAgentWearables.getWearableFromItemID(item_to_remove->getLinkedUUID());
 				if ( (pWearable) && (LLAssetType::AT_BODYPART != pWearable->getAssetType()) )
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 3683b7eaacdc4472a7cdfd525bdddb08e28ebf1b..1665286516bae67e790a654c8c1809421930e05b 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -3985,10 +3985,7 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
 	else if (isRemoveAction(action))
 	{
 		LLInventoryItem* item = gInventory.getItem(mUUID);
-//		if(item)
-// [RLVa:KB] - Checked: 2010-03-04 (RLVa-1.2.0a) | Added: RLVa-1.2.0a
-		if ( (item) && ((!rlv_handler_t::isEnabled()) || (gRlvAttachmentLocks.canDetach(item))) )
-// [/RLVa:KB]
+		if(item)
 		{
 			LLVOAvatarSelf::detachAttachmentIntoInventory(item->getLinkedUUID());
 		}
@@ -4408,10 +4405,7 @@ void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_
 			for(i = 0; i  < obj_count; ++i)
 			{
 				LLViewerInventoryItem *obj_item = obj_item_array.get(i);
-//				if (get_is_item_worn(obj_item->getUUID()))
-// [RLVa:KB] - Checked: 2010-03-16 (RLVa-1.2.0a) | Modified: RLVa-1.0.5a
-				if ((get_is_item_worn(obj_item->getUUID())) && ((!rlv_handler_t::isEnabled()) || (gRlvAttachmentLocks.canDetach(obj_item))))
-// [/RVLa:KB]
+				if (get_is_item_worn(obj_item->getUUID()))
 				{
 					LLVOAvatarSelf::detachAttachmentIntoInventory(obj_item->getLinkedUUID());
 				}
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 4adb65b2d957ef9d3cc7c54a0d6c2f74e851f4aa..eeb7d3e63bdad4e04baf7e4930f70fe91965102f 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1209,7 +1209,10 @@ BOOL LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object)
 BOOL LLVOAvatarSelf::detachAttachmentIntoInventory(const LLUUID &item_id)
 {
 	LLInventoryItem* item = gInventory.getItem(item_id);
-	if (item)
+//	if (item)
+// [RLVa:KB] - Checked: 2010-09-04 (RLVa-1.2.1c) | Added: RLVa-1.2.1c
+	if ( (item) && ((!rlv_handler_t::isEnabled()) || (gRlvAttachmentLocks.canDetach(item))) )
+// [/RLVa:KB]
 	{
 		gMessageSystem->newMessageFast(_PREHASH_DetachAttachmentIntoInv);
 		gMessageSystem->nextBlockFast(_PREHASH_ObjectData);
diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp
index d19da6c10c9a62ef18167ef3548b4ab3495a701b..f939f81f24b61f3ea2bbf7dce35f061a39ffaa8d 100644
--- a/indra/newview/rlvhandler.cpp
+++ b/indra/newview/rlvhandler.cpp
@@ -1357,21 +1357,14 @@ ERlvCmdRet RlvHandler::processForceCommand(const RlvCommand& rlvCmd) const
 				}
 			}
 			break;
-		case RLV_BHVR_DETACHME:		// @detachme=force						- Checked: 2010-04-04 (RLVa-1.2.0c) | Modified: RLVa-1.2.0c
+		case RLV_BHVR_DETACHME:		// @detachme=force						- Checked: 2010-09-04 (RLVa-1.2.1c) | Modified: RLVa-1.2.1c
 			{
 				VERIFY_OPTION(rlvCmd.getOption().empty());
 				// NOTE: @detachme should respect locks but shouldn't respect things like nostrip
 				const LLViewerObject* pAttachObj = gObjectList.findObject(rlvCmd.getObjectID());
-				if ( (pAttachObj) && (pAttachObj->isAttachment()) && (!gRlvAttachmentLocks.isLockedAttachment(pAttachObj)) )
+				if ( (pAttachObj) && (pAttachObj->isAttachment()) )
 				{
-					gMessageSystem->newMessage("ObjectDetach");
-					gMessageSystem->nextBlockFast(_PREHASH_AgentData);
-					gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
-					gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
-
-					gMessageSystem->nextBlockFast(_PREHASH_ObjectData);
-					gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, pAttachObj->getLocalID());
-					gMessageSystem->sendReliable( gAgent.getRegionHost() );
+					LLVOAvatarSelf::detachAttachmentIntoInventory(pAttachObj->getAttachmentItemID());
 				}
 			}
 			break;