Esempio n. 1
0
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;
   }
}
Esempio n. 2
0
void ReleaseSharedState ( State * state )
{
	shmdt ( state );
	MutexRelease ( KEY );
} // Fin de ReleaseSharedState