diff --git a/src/Network/XmlPush/Xmpp/Server/Common.hs b/src/Network/XmlPush/Xmpp/Server/Common.hs
--- a/src/Network/XmlPush/Xmpp/Server/Common.hs
+++ b/src/Network/XmlPush/Xmpp/Server/Common.hs
@@ -101,12 +101,12 @@
 	(XmlNode -> Bool) -> Jid -> TChan BS.ByteString ->
 	Pipe Mpi Mpi (HandleMonad h) ()
 setIds h ynr you rids = (await >>=) . maybe (return ()) $ \mpi -> do
-	yield mpi
 	if boolXmlNode ynr mpi
 	then when (isGetSet mpi) . lift . liftBase . atomically
 		$ writeTChan rids (fromJust $ getId mpi)
 	else lift $ returnEmpty h (fromJust $ getId mpi) you
 	lift . hlDebug h "medium" . BSC.pack $ "\nsetIds: " ++ show (getId mpi)
+	yield mpi
 	setIds h ynr you rids
 
 isGetSet :: Mpi -> Bool
diff --git a/xml-push.cabal b/xml-push.cabal
--- a/xml-push.cabal
+++ b/xml-push.cabal
@@ -2,7 +2,7 @@
 cabal-version:	>= 1.8
 
 name:		xml-push
-version:	0.0.0.17
+version:	0.0.0.18
 stability:	Experimenmtal
 author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp>
 maintainer:	Yoshikuni Jujo <PAF01143@nifty.ne.jp>
@@ -100,7 +100,7 @@
 source-repository	this
     type:	git
     location:	git://github.com/YoshikuniJujo/xml-push.git
-    tag:	xml-push-0.0.0.17
+    tag:	xml-push-0.0.0.18
 
 library
     hs-source-dirs:	src
