nix-daemon: Simplify stderr handling
This commit is contained in:
		
							parent
							
								
									78224cd871
								
							
						
					
					
						commit
						d0fad1779f
					
				
					 2 changed files with 2 additions and 7 deletions
				
			
		|  | @ -850,6 +850,7 @@ pid_t startProcess(std::function<void()> fun, const string & errorPrefix) | ||||||
|     if (pid == -1) throw SysError("unable to fork"); |     if (pid == -1) throw SysError("unable to fork"); | ||||||
| 
 | 
 | ||||||
|     if (pid == 0) { |     if (pid == 0) { | ||||||
|  |         _writeToStderr = defaultWriteToStderr; | ||||||
|         try { |         try { | ||||||
|             restoreAffinity(); |             restoreAffinity(); | ||||||
|             fun(); |             fun(); | ||||||
|  |  | ||||||
|  | @ -29,7 +29,6 @@ static FdSource from(STDIN_FILENO); | ||||||
| static FdSink to(STDOUT_FILENO); | static FdSink to(STDOUT_FILENO); | ||||||
| 
 | 
 | ||||||
| bool canSendStderr; | bool canSendStderr; | ||||||
| pid_t myPid; |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /* This function is called anytime we want to write something to
 | /* This function is called anytime we want to write something to
 | ||||||
|  | @ -38,11 +37,7 @@ pid_t myPid; | ||||||
|    socket. */ |    socket. */ | ||||||
| static void tunnelStderr(const unsigned char * buf, size_t count) | static void tunnelStderr(const unsigned char * buf, size_t count) | ||||||
| { | { | ||||||
|     /* Don't send the message to the client if we're a child of the
 |     if (canSendStderr) { | ||||||
|        process handling the connection.  Otherwise we could screw up |  | ||||||
|        the protocol.  It's up to the parent to redirect stderr and |  | ||||||
|        send it to the client somehow (e.g., as in build.cc). */ |  | ||||||
|     if (canSendStderr && myPid == getpid()) { |  | ||||||
|         try { |         try { | ||||||
|             writeInt(STDERR_NEXT, to); |             writeInt(STDERR_NEXT, to); | ||||||
|             writeString(buf, count, to); |             writeString(buf, count, to); | ||||||
|  | @ -533,7 +528,6 @@ static void processConnection(bool trusted) | ||||||
|     MonitorFdHup monitor(from.fd); |     MonitorFdHup monitor(from.fd); | ||||||
| 
 | 
 | ||||||
|     canSendStderr = false; |     canSendStderr = false; | ||||||
|     myPid = getpid(); |  | ||||||
|     _writeToStderr = tunnelStderr; |     _writeToStderr = tunnelStderr; | ||||||
| 
 | 
 | ||||||
|     /* Exchange the greeting. */ |     /* Exchange the greeting. */ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue