Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ accept(2) — HP-UX 8.05

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

bind(2)

connect(2)

listen(2)

select(2)

socket(2)

socketx25(7)

accept(2)

Requires Optional LAN/X.25 Software

NAME

accept − accept a connection on a socket

SYNOPSIS

#include <sys/socket.h>

AF_CCITT only:

#include <x25/x25addrstr.h>

int accept(int s, void ∗addr, int ∗addrlen);

DESCRIPTION

This call is used with connection-based socket types, such as SOCK_STREAM.  The argument s is a socket descriptor created with socket(2), bound to an address with bind(2), and listening for connections after a listen(2). accept extracts the first connection on the queue of pending connections, creates a new socket with the same properties as s, and allocates a new file descriptor, ns, for the socket. If no pending connections are present on the queue and non-blocking mode has not been enabled using the O_NONBLOCK or O_NDELAY fcntl flags or the FIOSNBIO ioctl request, accept blocks the caller until a connection is present.  ( O_NONBLOCK and O_NDELAY are defined in <sys/fcntl.h>; see fcntl(2) fcntl(5), and socket(7). FIOSNBIO is defined in <sys/ioctl.h>; see ioctl(2), ioctl(5), and socket(7).) If the socket is marked non-blocking and no pending connections are present on the queue, accept returns an error as described below.  The accepted socket, ns, cannot be used to accept more connections. The original socket s remains open.  It is possible to determine if a listening socket has pending connection requests ready for an accept call by using select(2) for reading.

The argument addr should point to a local socket address structure.  The accept call fills in this structure with the address of the connecting entity, as known to the underlying protocol.  The format of the address depends upon the protocol and the address-family of the socket s. The addrlen is a pointer to an int; it should initially contain the size of the structure pointed to by addr. On return, it contains the actual length (in bytes) of the address returned. If the memory pointed to by addr is not large enough to contain the entire address, only the first addrlen bytes of the address are returned. 

Since both the fcntl O_NONBLOCK flag and FIOSNBIO ioctl request are supported, some clarification on how these features interact is necessary.  If the O_NONBLOCK flag has been set, accept requests behave accordingly, regardless of any FIOSNBIO requests.  If the O_NONBLOCK flag has not been set, FIOSNBIO requests control the behavior of accept. AF_CCITT only: The addr parameter to accept() returns addressing information for the connecting entity, except for the x25ifname[] field of addr which contains the name of the local X.25 interface through which the connection request arrived.  Call-acceptance can be controlled with the X25_CALL_ACPT_APPROVAL ioctl() call described in socketx25(7).

RETURN VALUE

The call returns −1 on error.  If successful, it returns a non-negative integer which is a descriptor for the accepted socket. 

DIAGNOSTICS

accept fails if:

[EBADF] The file descriptor s is invalid. 

[ENOTSOCK] The file descriptor s references a file, not a socket. 

[EOPNOTSUPP] The socket referenced by s is not of type SOCK_STREAM. 

[EFAULT] The addr parameter is not in a valid pointer. 

[EWOULDBLOCK] Non-blocking I/O is enabled using O_NDELAY or FIOSNBIO and no connections are present to be accepted. 

[EMFILE] The maximum number of file descriptors for this process are already currently open. 

[ENFILE] The system’s table of open files is full and no more accepts can be accepted at this time.

[ENOBUFS] No buffer space is available.  The accept cannot complete.  The queued socket connect request is aborted. 

[EINVAL] The socket referenced by s is not currently a listen socket or has been shutdown. A listen must be done before an accept is allowed. 

[EAGAIN] Non-blocking I/O is enabled using O_NONBLOCK and no connections are present to be accepted. 

[EINTR] The call was interrupted by a signal before a valid connection arrived. 

AUTHOR

accept was developed by the University of California, Berkeley. 

SEE ALSO

bind(2), connect(2), listen(2), select(2), socket(2) socketx25(7). 

Hewlett-Packard Company  —  HP-UX Release 8.05: June 1991

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026