+ }
+ else if (request->flags & RMA || request->size < async_small_thresh){
+ //We have to check both mailboxes (because SSEND messages are sent to the large mbox). begin with the more appropriate one : the small one.
+ mailbox = smpi_process_mailbox_small();
+ XBT_DEBUG("Is there a corresponding send already posted in the small mailbox %p (in case of SSEND)?", mailbox);
+ smx_synchro_t action = simcall_comm_iprobe(mailbox, 0, request->src,request->tag, &match_recv, (void*)request);
+
+ if(action ==NULL){
+ mailbox = smpi_process_mailbox();
+ XBT_DEBUG("No, nothing in the small mailbox test the other one : %p", mailbox);
+ action = simcall_comm_iprobe(mailbox, 0, request->src,request->tag, &match_recv, (void*)request);
+ if(action ==NULL){
+ XBT_DEBUG("Still nothing, switch back to the small mailbox : %p", mailbox);
+ mailbox = smpi_process_mailbox_small();
+ }
+ }else{
+ XBT_DEBUG("yes there was something for us in the large mailbox");
+ }
+ }else{
+ mailbox = smpi_process_mailbox_small();
+ XBT_DEBUG("Is there a corresponding send already posted the small mailbox?");
+ smx_synchro_t action = simcall_comm_iprobe(mailbox, 0, request->src,request->tag, &match_recv, (void*)request);
+
+ if(action ==NULL){
+ XBT_DEBUG("No, nothing in the permanent receive mailbox");
+ mailbox = smpi_process_mailbox();
+ }else{
+ XBT_DEBUG("yes there was something for us in the small mailbox");
+ }
+ }
+
+ //integrate pseudo-timing for buffering of small messages, do not bother to execute the simcall if 0
+ double sleeptime = request->detached ? smpi_or(request->size) : 0.0;
+ if(sleeptime!=0.0){
+ simcall_process_sleep(sleeptime);
+ XBT_DEBUG("receiving size of %zu : sleep %f ", request->size, smpi_or(request->size));
+ }
+