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
 |     ///\todo Add tracing of earliest watched keys, to prevent data going out of memory for
 | ||||||
|     /// still-watching viewers
 |     /// still-watching viewers
 | ||||||
|     if (!(users.getStatus(id) & COMM_STATUS_DISCONNECT) && (users.getStatus(id) & COMM_STATUS_SOURCE)){ |     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.
 |       // 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;} |       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;} |     if (!(users.getStatus(id) & COMM_STATUS_DONOTTRACK)){++connectedUsers;} | ||||||
|   } |   } | ||||||
|   void inputBuffer::userOnDisconnect(size_t id){ |   void inputBuffer::userOnDisconnect(size_t id){ | ||||||
|     if (sourcePids.count(users.getPid(id)) && sourcePids[users.getPid(id)].count(users.getTrack(id))){ |     if (sourcePids.count(id)){ | ||||||
|       INFO_MSG("Disconnected track %" PRIu32, users.getTrack(id)); |       INFO_MSG("Disconnected track %zu", sourcePids[id]); | ||||||
|       meta.refresh(); |       meta.refresh(); | ||||||
|       removeTrack(users.getTrack(id)); |       removeTrack(sourcePids[id]); | ||||||
|       sourcePids[users.getPid(id)].erase(users.getTrack(id)); |       sourcePids.erase(id); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   void inputBuffer::userLeadOut(){ |   void inputBuffer::userLeadOut(){ | ||||||
|  |  | ||||||
|  | @ -53,7 +53,7 @@ namespace Mist{ | ||||||
|     std::map<std::string, pid_t> runningProcs;     // LTS
 |     std::map<std::string, pid_t> runningProcs;     // LTS
 | ||||||
| 
 | 
 | ||||||
|     std::set<size_t> generatePids; |     std::set<size_t> generatePids; | ||||||
|     std::map<size_t, std::set<size_t> > sourcePids; |     std::map<size_t, size_t> sourcePids; | ||||||
|   }; |   }; | ||||||
| }// namespace Mist
 | }// namespace Mist
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Thulinma
						Thulinma