Prototypes for send and recv. Fixed send (pass null address) and sendto
(fail when a null address is passed to a socket that is not connected).
This commit is contained in:
		
							parent
							
								
									371ac29c9f
								
							
						
					
					
						commit
						59830eda3f
					
				@ -65,9 +65,13 @@ _PROTOTYPE( int setsockopt,(int _socket, int _level, int _option_name,
 | 
				
			|||||||
_PROTOTYPE( int getsockopt, (int _socket, int _level, int _option_name,
 | 
					_PROTOTYPE( int getsockopt, (int _socket, int _level, int _option_name,
 | 
				
			||||||
        void *_RESTRICT _option_value, socklen_t *_RESTRICT _option_len));
 | 
					        void *_RESTRICT _option_value, socklen_t *_RESTRICT _option_len));
 | 
				
			||||||
_PROTOTYPE( int listen, (int _socket, int _backlog)			);
 | 
					_PROTOTYPE( int listen, (int _socket, int _backlog)			);
 | 
				
			||||||
 | 
					_PROTOTYPE( ssize_t recv, (int _socket, void *_buffer, size_t _length,
 | 
				
			||||||
 | 
												int _flags)	);
 | 
				
			||||||
_PROTOTYPE( ssize_t recvfrom, (int _socket, void *_RESTRICT _buffer,
 | 
					_PROTOTYPE( ssize_t recvfrom, (int _socket, void *_RESTRICT _buffer,
 | 
				
			||||||
	size_t _length, int _flags, struct sockaddr *_RESTRICT _address,
 | 
						size_t _length, int _flags, struct sockaddr *_RESTRICT _address,
 | 
				
			||||||
				socklen_t *_RESTRICT _address_len)	);
 | 
									socklen_t *_RESTRICT _address_len)	);
 | 
				
			||||||
 | 
					_PROTOTYPE( ssize_t send, (int _socket, const void *_buffer,
 | 
				
			||||||
 | 
										size_t _length, int _flags)	);
 | 
				
			||||||
_PROTOTYPE( ssize_t sendto, (int _socket, const void *_message,
 | 
					_PROTOTYPE( ssize_t sendto, (int _socket, const void *_message,
 | 
				
			||||||
	size_t _length, int _flags, const struct sockaddr *_dest_addr,
 | 
						size_t _length, int _flags, const struct sockaddr *_dest_addr,
 | 
				
			||||||
						socklen_t _dest_len)	);
 | 
											socklen_t _dest_len)	);
 | 
				
			||||||
 | 
				
			|||||||
@ -3,9 +3,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
ssize_t send(int socket, const void *buffer, size_t length, int flags)
 | 
					ssize_t send(int socket, const void *buffer, size_t length, int flags)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct sockaddr sa;
 | 
						return sendto(socket, buffer, length, flags, NULL, 0);
 | 
				
			||||||
 | 
					 | 
				
			||||||
	sa.sa_family= AF_UNSPEC;
 | 
					 | 
				
			||||||
	return sendto(socket, buffer, length, flags, &sa, sizeof(sa));
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -68,6 +68,12 @@ static ssize_t _udp_sendto(int socket, const void *message, size_t length,
 | 
				
			|||||||
	if ((udpoptp->nwuo_flags & NWUO_RP_ANY) ||
 | 
						if ((udpoptp->nwuo_flags & NWUO_RP_ANY) ||
 | 
				
			||||||
		(udpoptp->nwuo_flags & NWUO_RA_ANY))
 | 
							(udpoptp->nwuo_flags & NWUO_RA_ANY))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
							if (!dest_addr)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								errno= ENOTCONN;
 | 
				
			||||||
 | 
								return -1;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* Check destination address */
 | 
							/* Check destination address */
 | 
				
			||||||
		if (dest_len < sizeof(*sinp))
 | 
							if (dest_len < sizeof(*sinp))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user