| Lines 414-441
          
      
      
        Link Here | 
        
          | 414 | 			}; | 414 | 			}; | 
        
          | 415 | 			int ret; | 415 | 			int ret; | 
        
          | 416 | 			ret = setsockopt(client->fd, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)); | 416 | 			ret = setsockopt(client->fd, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)); | 
          
            
              | 417 | 			if (ret < 0) | 417 | 			if (ret < 0) { | 
        
          | 418 | 				univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_WARN, "Failed to set SO_RCVTIMEO\n"); | 418 | 				univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_WARN, "Failed to set SO_RCVTIMEO\n"); | 
            
              |  |  | 419 | 			} | 
        
          | 419 | 			ret = setsockopt(client->fd, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(timeout)); | 420 | 			ret = setsockopt(client->fd, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(timeout)); | 
          
            
              | 420 | 			if (ret < 0) | 421 | 			if (ret < 0) { | 
        
          | 421 | 				univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_WARN, "Failed to set SO_SNDTIMEO\n"); | 422 | 				univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_WARN, "Failed to set SO_SNDTIMEO\n"); | 
            
              |  |  | 423 | 			} | 
        
          | 422 |  | 424 |  | 
        
          | 423 | 			const int enable = 1; | 425 | 			const int enable = 1; | 
        
          | 424 | 			ret = setsockopt(client->fd, SOL_SOCKET, SO_KEEPALIVE, &enable, sizeof(enable)); | 426 | 			ret = setsockopt(client->fd, SOL_SOCKET, SO_KEEPALIVE, &enable, sizeof(enable)); | 
          
            
              | 425 | 			if (ret < 0) | 427 | 			if (ret < 0) { | 
        
          | 426 | 				univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_WARN, "Failed to enable TCP KEEPALIVE\n"); | 428 | 				univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_WARN, "Failed to enable TCP KEEPALIVE\n"); | 
            
              |  |  | 429 | 			} | 
        
          | 427 | 			const int idle = 60; | 430 | 			const int idle = 60; | 
        
          | 428 | 			ret = setsockopt(client->fd, SOL_TCP, TCP_KEEPIDLE, &idle, sizeof(idle)); | 431 | 			ret = setsockopt(client->fd, SOL_TCP, TCP_KEEPIDLE, &idle, sizeof(idle)); | 
          
            
              | 429 | 			if (ret < 0) | 432 | 			if (ret < 0) { | 
        
          | 430 | 				univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_WARN, "Failed to set TCP_KEEPIDLE\n"); | 433 | 				univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_WARN, "Failed to set TCP_KEEPIDLE\n"); | 
            
              |  |  | 434 | 			} | 
        
          | 431 | 			const int probes = 12; | 435 | 			const int probes = 12; | 
        
          | 432 | 			ret = setsockopt(client->fd, SOL_TCP, TCP_KEEPCNT, &probes, sizeof(probes)); | 436 | 			ret = setsockopt(client->fd, SOL_TCP, TCP_KEEPCNT, &probes, sizeof(probes)); | 
          
            
              | 433 | 			if (ret < 0) | 437 | 			if (ret < 0) { | 
        
          | 434 | 				univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_WARN, "Failed to set TCP_KEEPCNT\n"); | 438 | 				univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_WARN, "Failed to set TCP_KEEPCNT\n"); | 
            
              |  |  | 439 | 			} | 
        
          | 435 | 			const int interval = 5; | 440 | 			const int interval = 5; | 
        
          | 436 | 			ret = setsockopt(client->fd, SOL_TCP, TCP_KEEPINTVL, &interval, sizeof(interval)); | 441 | 			ret = setsockopt(client->fd, SOL_TCP, TCP_KEEPINTVL, &interval, sizeof(interval)); | 
          
            
              | 437 | 			if (ret < 0) | 442 | 			if (ret < 0) { | 
        
          | 438 | 				univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_WARN, "Failed to set TCP_KEEPINTVL\n"); | 443 | 				univention_debug(UV_DEBUG_LISTENER, UV_DEBUG_WARN, "Failed to set TCP_KEEPINTVL\n"); | 
            
              |  |  | 444 | 			} | 
        
          | 439 | 		} | 445 | 		} | 
        
          | 440 |  | 446 |  | 
        
          | 441 | 		if (connect(client->fd, address, addrlen) == -1) { | 447 | 		if (connect(client->fd, address, addrlen) == -1) { |