Fixed buffer disconnecting pushed inputs if they shared a PID with a viewer that disconnected
This commit is contained in:
		
							parent
							
								
									3baa8d1524
								
							
						
					
					
						commit
						9f2fe22074
					
				
					 2 changed files with 6 additions and 6 deletions
				
			
		|  | @ -519,7 +519,7 @@ namespace Mist{ | |||
|     ///\todo Add tracing of earliest watched keys, to prevent data going out of memory for
 | ||||
|     /// still-watching viewers
 | ||||
|     if (!(users.getStatus(id) & COMM_STATUS_DISCONNECT) && (users.getStatus(id) & COMM_STATUS_SOURCE)){ | ||||
|       sourcePids[users.getPid(id)].insert(users.getTrack(id)); | ||||
|       sourcePids[id] = users.getTrack(id); | ||||
|       // GeneratePids holds the pids of the process that generate data, so ignore those for determining if a push is ingested.
 | ||||
|       if (M.trackValid(users.getTrack(id)) && !generatePids.count(users.getPid(id))){hasPush = true;} | ||||
|     } | ||||
|  | @ -527,11 +527,11 @@ namespace Mist{ | |||
|     if (!(users.getStatus(id) & COMM_STATUS_DONOTTRACK)){++connectedUsers;} | ||||
|   } | ||||
|   void inputBuffer::userOnDisconnect(size_t id){ | ||||
|     if (sourcePids.count(users.getPid(id)) && sourcePids[users.getPid(id)].count(users.getTrack(id))){ | ||||
|       INFO_MSG("Disconnected track %" PRIu32, users.getTrack(id)); | ||||
|     if (sourcePids.count(id)){ | ||||
|       INFO_MSG("Disconnected track %zu", sourcePids[id]); | ||||
|       meta.refresh(); | ||||
|       removeTrack(users.getTrack(id)); | ||||
|       sourcePids[users.getPid(id)].erase(users.getTrack(id)); | ||||
|       removeTrack(sourcePids[id]); | ||||
|       sourcePids.erase(id); | ||||
|     } | ||||
|   } | ||||
|   void inputBuffer::userLeadOut(){ | ||||
|  |  | |||
|  | @ -53,7 +53,7 @@ namespace Mist{ | |||
|     std::map<std::string, pid_t> runningProcs;     // LTS
 | ||||
| 
 | ||||
|     std::set<size_t> generatePids; | ||||
|     std::map<size_t, std::set<size_t> > sourcePids; | ||||
|     std::map<size_t, size_t> sourcePids; | ||||
|   }; | ||||
| }// namespace Mist
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Thulinma
						Thulinma