Small typo fix and set slpd sockt O_NONBLOCK
This commit is contained in:
		
							parent
							
								
									756a6607e1
								
							
						
					
					
						commit
						99e0f5777c
					
				
					 2 changed files with 20 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -1628,7 +1628,7 @@ void handle_incoming_slpd_data(void *data, int flags) {
 | 
			
		|||
	sockaddr_t addr = {};
 | 
			
		||||
	socklen_t addrlen = sizeof addr;
 | 
			
		||||
 | 
			
		||||
	logger(DEBUG_SCARY_THINGS, LOG_INFO, "Receiving LPD packet");
 | 
			
		||||
	logger(DEBUG_SCARY_THINGS, LOG_INFO, "Receiving SLPD packet");
 | 
			
		||||
 | 
			
		||||
	int len = recvfrom(ls->udp.fd, (void *)&pkt, MAXSIZE, 0, &addr.sa, &addrlen);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -323,6 +323,23 @@ int setup_slpd_in_socket(void) {
 | 
			
		|||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
#ifdef FD_CLOEXEC
 | 
			
		||||
	fcntl(nfd, F_SETFD, FD_CLOEXEC);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef O_NONBLOCK
 | 
			
		||||
	{
 | 
			
		||||
		int flags = fcntl(nfd, F_GETFL);
 | 
			
		||||
 | 
			
		||||
		if(fcntl(nfd, F_SETFL, flags | O_NONBLOCK) < 0) {
 | 
			
		||||
			closesocket(nfd);
 | 
			
		||||
			logger(DEBUG_ALWAYS, LOG_ERR, "System call `%s' failed: %s", "fcntl",
 | 
			
		||||
				   strerror(errno));
 | 
			
		||||
			return -1;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	int reuse = 1;
 | 
			
		||||
	if(setsockopt(nfd, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse, sizeof(reuse)) < 0) {
 | 
			
		||||
		logger(DEBUG_ALWAYS, LOG_ERR, "Can not set SO_REUSEADDR for SLPD %s", sockstrerror(sockerrno));
 | 
			
		||||
| 
						 | 
				
			
			@ -343,11 +360,13 @@ int setup_slpd_in_socket(void) {
 | 
			
		|||
 | 
			
		||||
	group.imr_multiaddr.s_addr = inet_addr(my_slpd_group);
 | 
			
		||||
	group.imr_interface.s_addr = htonl(INADDR_ANY);
 | 
			
		||||
 | 
			
		||||
	if(setsockopt(nfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&group, sizeof(group)) < 0) {
 | 
			
		||||
		logger(DEBUG_ALWAYS, LOG_ERR, "Can not join group for SLPD %s", sockstrerror(sockerrno));
 | 
			
		||||
		closesocket(nfd);
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	logger(DEBUG_STATUS, LOG_INFO, "SLPD socket ready (%d)", nfd);
 | 
			
		||||
 | 
			
		||||
	return nfd;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue