comm.h File Reference
#include "comm/IoCallback.h"
#include "CommCalls.h"
#include "StoreIOBuffer.h"
Include dependency graph for comm.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  CommSelectEngine
 

Namespaces

 Ip
 

Macros

#define comm_close(x)   (_comm_close((x), __FILE__, __LINE__))
 

Functions

bool comm_iocallbackpending (void)
 
int commSetNonBlocking (int fd)
 
int commUnsetNonBlocking (int fd)
 
void commSetCloseOnExec (int fd)
 
void commSetTcpKeepalive (int fd, int idle, int interval, int timeout)
 
void _comm_close (int fd, char const *file, int line)
 
void old_comm_reset_close (int fd)
 
void comm_reset_close (const Comm::ConnectionPointer &conn)
 
int comm_connect_addr (int sock, const Ip::Address &addr)
 
void comm_init (void)
 
void comm_exit (void)
 
int comm_open (int, int, Ip::Address &, int, const char *note)
 
int comm_open_uds (int sock_type, int proto, struct sockaddr_un *addr, int flags)
 Create a unix-domain socket (UDS) that only supports FD_MSGHDR I/O. More...
 
void comm_import_opened (const Comm::ConnectionPointer &, const char *note, struct addrinfo *AI)
 update Comm state after getting a comm_open() FD from another process More...
 
int comm_open_listener (int sock_type, int proto, Ip::Address &addr, int flags, const char *note)
 
void comm_open_listener (int sock_type, int proto, Comm::ConnectionPointer &conn, const char *note)
 
int comm_openex (int, int, Ip::Address &, int, const char *)
 
unsigned short comm_local_port (int fd)
 
int comm_udp_sendto (int sock, const Ip::Address &to, const void *buf, int buflen)
 
void commCallCloseHandlers (int fd)
 
void commUnsetFdTimeout (int fd)
 clear a timeout handler by FD number More...
 
int commSetConnTimeout (const Comm::ConnectionPointer &conn, int seconds, AsyncCall::Pointer &callback)
 
int commUnsetConnTimeout (const Comm::ConnectionPointer &conn)
 
int ignoreErrno (int)
 
void commCloseAllSockets (void)
 
void checkTimeouts (void)
 
AsyncCall::Pointer comm_add_close_handler (int fd, CLCB *, void *)
 
void comm_add_close_handler (int fd, AsyncCall::Pointer &)
 
void comm_remove_close_handler (int fd, CLCB *, void *)
 
void comm_remove_close_handler (int fd, AsyncCall::Pointer &)
 
int comm_udp_recvfrom (int fd, void *buf, size_t len, int flags, Ip::Address &from)
 
int comm_udp_recv (int fd, void *buf, size_t len, int flags)
 
ssize_t comm_udp_send (int s, const void *buf, size_t len, int flags)
 
bool comm_has_incomplete_write (int)
 
void commStartHalfClosedMonitor (int fd)
 Start waiting for a possibly half-closed connection to close. More...
 
bool commHasHalfClosedMonitor (int fd)
 checks whether we are waiting for possibly half-closed connection to close More...
 
void commMarkHalfClosed (int fd)
 
bool commIsHalfClosed (int fd)
 

Macro Definition Documentation

Function Documentation

void comm_add_close_handler ( int  fd,
AsyncCall::Pointer  
)

Definition at line 973 of file comm.cc.

References debugs, and fd_table.

void comm_exit ( void  )

Definition at line 1234 of file comm.cc.

References Comm::CallbackTableDestruct(), fd_table, NULL, safe_free, and TheHalfClosed.

Referenced by SquidShutdown().

bool comm_has_incomplete_write ( int  )

Definition at line 147 of file comm.cc.

References assert, COMMIO_FD_WRITECB, isOpen(), and NULL.

Referenced by PconnPool::push().

bool comm_iocallbackpending ( void  )
unsigned short comm_local_port ( int  fd)
int comm_open ( int  sock_type,
int  proto,
Ip::Address addr,
int  flags,
const char *  note 
)

Create a socket. Default is blocking, stream (TCP) socket. IO_TYPE is OR of flags specified in comm.h. Defaults TOS

Definition at line 222 of file comm.cc.

References comm_openex().

Referenced by accessLogInit(), comm_open_uds(), comm_openex(), ipc_thread_1(), ipcCreate(), and logfile_mod_udp_open().

int comm_open_listener ( int  sock_type,
int  proto,
Ip::Address addr,
int  flags,
const char *  note 
)

Open a port specially bound for listening or sending through a specific port. This is a wrapper providing IPv4/IPv6 failover around comm_openex(). Please use for all listening sockets and bind() outbound sockets.

It will open a socket bound for:

  • IPv4 if IPv6 is disabled or address is IPv4-native.
  • IPv6 if address is IPv6-native
  • IPv6 dual-stack mode if able to open [::]

When an open performs failover it update the given address to feedback the new IPv4-only status of the socket. Further displays of the IP (in debugs or cachemgr) will occur in Native IPv4 format. A reconfigure is needed to reset the stored IP in most cases and attempt a port re-open.

Definition at line 245 of file comm.cc.

References COMM_DOBIND, and comm_openex().

void comm_remove_close_handler ( int  fd,
AsyncCall::Pointer  
)

Definition at line 1017 of file comm.cc.

References assert, debugs, fd_table, isOpen(), NULL, and p.

void comm_reset_close ( const Comm::ConnectionPointer conn)

enable linger with time of 0 so that when the socket is closed, TCP generates a RESET

Definition at line 792 of file comm.cc.

References Comm::Connection::close(), DBG_CRITICAL, debugs, Comm::Connection::fd, and xstrerr().

Referenced by ConnStateData::abortChunkedRequestBody(), clientProcessRequestFinished(), Adaptation::Icap::ServiceRep::putConnection(), and ConnStateData::setAuth().

int comm_udp_recv ( int  fd,
void *  buf,
size_t  len,
int  flags 
)

Definition at line 134 of file comm.cc.

References comm_udp_recvfrom().

Referenced by ipcCreate(), and IcmpSquid::Recv().

int comm_udp_recvfrom ( int  fd,
void *  buf,
size_t  len,
int  flags,
Ip::Address from 
)
ssize_t comm_udp_send ( int  s,
const void *  buf,
size_t  len,
int  flags 
)

Definition at line 141 of file comm.cc.

Referenced by ipcCreate(), IcmpSquid::SendEcho(), wccpAssignBuckets(), and wccpHereIam().

void commCallCloseHandlers ( int  fd)

Definition at line 719 of file comm.cc.

References fde::closeHandler, debugs, F(), fd_table, NULL, and ScheduleCallHere.

Referenced by _comm_close(), and examine_select().

bool commHasHalfClosedMonitor ( int  fd)
bool commIsHalfClosed ( int  fd)
inline
void commMarkHalfClosed ( int  fd)
inline

Definition at line 100 of file comm.h.

References commStartHalfClosedMonitor().

Referenced by Server::doClientRead().

void commSetCloseOnExec ( int  fd)
int commSetConnTimeout ( const Comm::ConnectionPointer conn,
int  seconds,
AsyncCall::Pointer callback 
)
void commSetTcpKeepalive ( int  fd,
int  idle,
int  interval,
int  timeout 
)

Definition at line 1176 of file comm.cc.

References DBG_IMPORTANT, debugs, MYNAME, and xstrerr().

Referenced by Ftp::Server::AcceptCtrlConnection(), httpAccept(), and httpsAccept().

void commStartHalfClosedMonitor ( int  fd)

The read channel has closed and the caller does not expect more data but needs to detect connection aborts. The current detection method uses 0-length reads: We read until the error occurs or the writer closes the connection. If there is a read error, we close the connection.

Definition at line 1608 of file comm.cc.

References DescriptorSet::add(), assert, commHasHalfClosedMonitor(), commPlanHalfClosedCheck(), debugs, HERE(), and isOpen().

Referenced by commMarkHalfClosed().

int commUnsetNonBlocking ( int  fd)
void old_comm_reset_close ( int  fd)

Definition at line 807 of file comm.cc.

References comm_close, DBG_CRITICAL, debugs, and xstrerr().

Referenced by commCloseAllSockets().

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors