Index: XIOS3/trunk/src/transport/one_sided_client_buffer.cpp
===================================================================
--- XIOS3/trunk/src/transport/one_sided_client_buffer.cpp	(revision 2520)
+++ XIOS3/trunk/src/transport/one_sided_client_buffer.cpp	(revision 2526)
@@ -8,5 +8,5 @@
   extern CLogType logProtocol;
 
-  COneSidedClientBuffer::COneSidedClientBuffer(MPI_Comm& interComm, int serverRank, MPI_Comm& commSelf, MPI_Comm& interCommMerged, int intraServerRank) : interComm_(interComm), serverRank_(serverRank)
+  COneSidedClientBuffer::COneSidedClientBuffer(MPI_Comm& interComm, int serverRank, MPI_Comm& commSelf, MPI_Comm& interCommMerged, int intraServerRank) : interComm_(interComm), serverRank_(serverRank), interCommMerged_(interCommMerged), intraServerRank_(intraServerRank)
   {
     
@@ -261,5 +261,5 @@
     }
     if (info.isActive(logProtocol)) CTimer::get("sendTimelineEvent : MPI_Isend").resume() ;
-    MPI_Isend(request.buffer->start(),request.buffer->count(), MPI_CHAR, serverRank_, 20, interComm_, &request.mpiRequest ) ;
+    MPI_Isend(request.buffer->start(),request.buffer->count(), MPI_CHAR, intraServerRank_, 20, interCommMerged_, &request.mpiRequest ) ;
     if (info.isActive(logProtocol)) CTimer::get("sendTimelineEvent : MPI_Isend").suspend() ;
     info(logProtocol)<<outStr.str()<<endl ;
@@ -272,5 +272,5 @@
     request.buffer = new CBufferOut(sizeof(EVENT_BUFFER_RESIZE)+sizeof(timeline)+sizeof(size)) ; 
     *(request.buffer)<<EVENT_BUFFER_RESIZE<<timeline<<size ;
-    MPI_Isend(request.buffer->start(),request.buffer->count(), MPI_CHAR, serverRank_, 20, interComm_, &request.mpiRequest ) ;
+    MPI_Isend(request.buffer->start(),request.buffer->count(), MPI_CHAR, intraServerRank_, 20, interCommMerged_, &request.mpiRequest ) ;
     requests_.push_back(request) ;
   }
@@ -280,5 +280,5 @@
     MPI_Aint controlAddr ;
     MPI_Get_address(control_, &controlAddr) ;
-    MPI_Send(&controlAddr, 1, MPI_AINT, serverRank_, 20, interComm_) ;
+    MPI_Send(&controlAddr, 1, MPI_AINT, intraServerRank_, 20, interCommMerged_) ;
   }
 
Index: XIOS3/trunk/src/transport/one_sided_client_buffer.hpp
===================================================================
--- XIOS3/trunk/src/transport/one_sided_client_buffer.hpp	(revision 2520)
+++ XIOS3/trunk/src/transport/one_sided_client_buffer.hpp	(revision 2526)
@@ -182,4 +182,7 @@
       int serverRank_ ;
 
+      MPI_Comm interCommMerged_; 
+      int intraServerRank_ ;
+
       std::list<CBuffer*> buffers_ ;
       std::list<SBloc> blocs_ ;
Index: XIOS3/trunk/src/transport/one_sided_context_server.cpp
===================================================================
--- XIOS3/trunk/src/transport/one_sided_context_server.cpp	(revision 2520)
+++ XIOS3/trunk/src/transport/one_sided_context_server.cpp	(revision 2526)
@@ -98,12 +98,13 @@
     {
       traceOff();
-      MPI_Iprobe(MPI_ANY_SOURCE, 20,interComm, &flag, &status);
+      MPI_Iprobe(MPI_ANY_SOURCE, 20,interCommMerged_, &flag, &status);
       traceOn();
       if (flag==true)
       {
-        requests_.push_back(CRequest(interComm, status)) ;
-        if (requests_.back().test()) 
+        requests_.push_back(new CRequest(interCommMerged_, status)) ;
+        if (requests_.back()->test()) 
         {
-          processRequest(requests_.back()) ;
+          processRequest(*(requests_.back())) ;
+          delete requests_.back();
           requests_.pop_back() ;
         }
@@ -117,7 +118,8 @@
     while (it != requests_.end())
     {
-      if (it->test())
-      {
-        processRequest(*it) ;
+      if ((*it)->test())
+      {
+        processRequest(*(*it)) ;
+        delete (*it);
         auto it2=it ;
         ++it ;
Index: XIOS3/trunk/src/transport/one_sided_context_server.hpp
===================================================================
--- XIOS3/trunk/src/transport/one_sided_context_server.hpp	(revision 2520)
+++ XIOS3/trunk/src/transport/one_sided_context_server.hpp	(revision 2526)
@@ -106,5 +106,5 @@
       MPI_Request processEventRequest_ ;
 
-      std::list<CRequest> requests_ ;
+      std::list<CRequest*> requests_ ;
 
       std::map<size_t, SPendingEvent> pendingEvents_   ;
