All pastes #90053 Raw Edit

Something

public text v1 · immutable
#90053 ·published 2006-07-17 08:24 UTC
rendered paste body
for(;;) {
    /* diag(SS_MAIN|INFO,"sleeping on select()\n"); */
    read_fds=active_fds;
    do {
       ss=select(1+m,&read_fds,0,0,NULL);
       if(ss<0 && errno!=EINTR) diag(SS_MAIN|DIERR,"select() failed");
       } while(ss<0);
    for(i=0;i<STREAMS;i++) {
       if(i==AUDIO_STREAM && config.noaudio) continue;
       if(FD_ISSET(fd[i],&read_fds)) {
          sock=accept(fd[i],(struct sockaddr *)&name,&a_size);
          if(sock<0) {
             diag(SS_MAIN|ERR,"accept() for stream #%d (port %d) failed",
                i,config.tcp_base_port+i);
             continue;
             }
          diag(SS_MAIN|INFO,"%s:%hd #%d: connection accepted, spawning server.\n",
             inet_ntoa(name.sin_addr),ntohs(name.sin_port),i);
          if(i==VIDEO_STREAM) {
             int cls, launch_result=0;
             pthread_mutex_lock(&clients_mtx);
             cls=++clients;
             diag(SS_MAIN|DEBUG,"%d client(s) connected\n",clients);
	     //*****************************************//
	     //	Modifica per evitare il lock dei client	//
	     //	   Massimiliano Vitale 06/07/2004	//
	     //*****************************************//
//             if(!novideo && clients==1) {
             if(clients==1) {
                 sigemptyset(&sigs);
                 sigaddset(&sigs,SIGHUP);
                 pthread_sigmask(SIG_BLOCK,&sigs,0);		 		 
                 if((launch_result=pthread_create(&capture_tid,&thr_attr,(void*(*)(void*))capture_thread,(void*)0))!=0) {
		    if (clients > 0) clients--; //controlla che il numero di clients non scenda al di sotto di zero
		 }
                 pthread_sigmask(SIG_UNBLOCK,&sigs,0);
             }
	     
             pthread_mutex_unlock(&clients_mtx);