void AdminProcessSessionBuffer(session_node *s) { char ch; while (s->receive_list != NULL) { if (ReadSessionBytes(s,1,&ch) == False) return; /* give up receive mutex, so the interface/socket thread can read data for us, even if doing something long (GC/save/reload sys) */ if (!MutexRelease(s->muxReceive)) eprintf("APSBPollSession released mutex it didn't own in session %i\n", s->session_id); AdminInputChar(s,ch); if (!MutexAcquireWithTimeout(s->muxReceive,10000)) { eprintf("APSB bailed waiting for mutex on session %i\n",s->session_id); return; } /* any character could change our state. if so, leave */ if (s->hangup == True || s->state != STATE_ADMIN) return; } }
void ReleaseSharedState ( State * state ) { shmdt ( state ); MutexRelease ( KEY ); } // Fin de ReleaseSharedState