Function: set-process-datagram-address

set-process-datagram-address is a function defined in process.c.

Signature

(set-process-datagram-address PROCESS ADDRESS)

Documentation

Set the datagram address for PROCESS to ADDRESS.

Return nil upon error setting address, ADDRESS otherwise.

If PROCESS is a non-blocking network process that hasn't been fully set up yet, this function will block until socket setup has completed.

Probably introduced at or before Emacs version 22.1.

Source Code

// Defined in /usr/src/emacs/src/process.c
{
  int channel;
  int family;
  ptrdiff_t len;

  CHECK_PROCESS (process);

  if (NETCONN_P (process))
    wait_for_socket_fds (process, "set-process-datagram-address");

  if (!DATAGRAM_CONN_P (process))
    return Qnil;

  channel = XPROCESS (process)->infd;

  len = get_lisp_to_sockaddr_size (address, &family);
  eassert (0 <= channel && channel < FD_SETSIZE);
  if (len == 0 || datagram_address[channel].len != len)
    return Qnil;
  conv_lisp_to_sockaddr (family, address, datagram_address[channel].sa, len);
  return address;
}