PostgreSQL Source Code git master
|
#include <netinet/in.h>
#include "lib/stringinfo.h"
#include "libpq/libpq-be.h"
#include "storage/latch.h"
Go to the source code of this file.
Data Structures | |
struct | PQcommMethods |
Macros | |
#define | PQ_SMALL_MESSAGE_LIMIT 10000 |
#define | PQ_LARGE_MESSAGE_LIMIT (MaxAllocSize - 1) |
#define | pq_comm_reset() (PqCommMethods->comm_reset()) |
#define | pq_flush() (PqCommMethods->flush()) |
#define | pq_flush_if_writable() (PqCommMethods->flush_if_writable()) |
#define | pq_is_send_pending() (PqCommMethods->is_send_pending()) |
#define | pq_putmessage(msgtype, s, len) (PqCommMethods->putmessage(msgtype, s, len)) |
#define | pq_putmessage_noblock(msgtype, s, len) (PqCommMethods->putmessage_noblock(msgtype, s, len)) |
#define | FeBeWaitSetSocketPos 0 |
#define | FeBeWaitSetLatchPos 1 |
#define | FeBeWaitSetNEvents 3 |
Enumerations | |
enum | ssl_protocol_versions { PG_TLS_ANY = 0 , PG_TLS1_VERSION , PG_TLS1_1_VERSION , PG_TLS1_2_VERSION , PG_TLS1_3_VERSION } |
Functions | |
int | ListenServerPort (int family, const char *hostName, unsigned short portNumber, const char *unixSocketDir, pgsocket ListenSockets[], int *NumListenSockets, int MaxListen) |
int | AcceptConnection (pgsocket server_fd, ClientSocket *client_sock) |
void | TouchSocketFiles (void) |
void | RemoveSocketFiles (void) |
Port * | pq_init (ClientSocket *client_sock) |
int | pq_getbytes (char *s, size_t len) |
void | pq_startmsgread (void) |
void | pq_endmsgread (void) |
bool | pq_is_reading_msg (void) |
int | pq_getmessage (StringInfo s, int maxlen) |
int | pq_getbyte (void) |
int | pq_peekbyte (void) |
int | pq_getbyte_if_available (unsigned char *c) |
ssize_t | pq_buffer_remaining_data (void) |
int | pq_putmessage_v2 (char msgtype, const char *s, size_t len) |
bool | pq_check_connection (void) |
int | secure_initialize (bool isServerStart) |
bool | secure_loaded_verify_locations (void) |
void | secure_destroy (void) |
int | secure_open_server (Port *port) |
void | secure_close (Port *port) |
ssize_t | secure_read (Port *port, void *ptr, size_t len) |
ssize_t | secure_write (Port *port, const void *ptr, size_t len) |
ssize_t | secure_raw_read (Port *port, void *ptr, size_t len) |
ssize_t | secure_raw_write (Port *port, const void *ptr, size_t len) |
int | run_ssl_passphrase_command (const char *prompt, bool is_server_start, char *buf, int size) |
bool | check_ssl_key_file_permissions (const char *ssl_key_file, bool isServerStart) |
Variables | |
const PGDLLIMPORT PQcommMethods * | PqCommMethods |
PGDLLIMPORT WaitEventSet * | FeBeWaitSet |
PGDLLIMPORT char * | ssl_library |
PGDLLIMPORT char * | ssl_ca_file |
PGDLLIMPORT char * | ssl_cert_file |
PGDLLIMPORT char * | ssl_crl_file |
PGDLLIMPORT char * | ssl_crl_dir |
PGDLLIMPORT char * | ssl_key_file |
PGDLLIMPORT int | ssl_min_protocol_version |
PGDLLIMPORT int | ssl_max_protocol_version |
PGDLLIMPORT char * | ssl_passphrase_command |
PGDLLIMPORT bool | ssl_passphrase_command_supports_reload |
PGDLLIMPORT char * | ssl_dh_params_file |
PGDLLIMPORT char * | SSLCipherSuites |
PGDLLIMPORT char * | SSLCipherList |
PGDLLIMPORT char * | SSLECDHCurve |
PGDLLIMPORT bool | SSLPreferServerCiphers |
#define pq_comm_reset | ( | ) | (PqCommMethods->comm_reset()) |
#define pq_flush | ( | ) | (PqCommMethods->flush()) |
#define pq_flush_if_writable | ( | ) | (PqCommMethods->flush_if_writable()) |
#define pq_is_send_pending | ( | ) | (PqCommMethods->is_send_pending()) |
#define PQ_LARGE_MESSAGE_LIMIT (MaxAllocSize - 1) |
#define pq_putmessage | ( | msgtype, | |
s, | |||
len | |||
) | (PqCommMethods->putmessage(msgtype, s, len)) |
#define pq_putmessage_noblock | ( | msgtype, | |
s, | |||
len | |||
) | (PqCommMethods->putmessage_noblock(msgtype, s, len)) |
Enumerator | |
---|---|
PG_TLS_ANY | |
PG_TLS1_VERSION | |
PG_TLS1_1_VERSION | |
PG_TLS1_2_VERSION | |
PG_TLS1_3_VERSION |
Definition at line 128 of file libpq.h.
int AcceptConnection | ( | pgsocket | server_fd, |
ClientSocket * | client_sock | ||
) |
Definition at line 794 of file pqcomm.c.
References accept, SockAddr::addr, ereport, errcode_for_socket_access(), errmsg(), LOG, pg_usleep(), PGINVALID_SOCKET, ClientSocket::raddr, SockAddr::salen, ClientSocket::sock, STATUS_ERROR, and STATUS_OK.
Referenced by ServerLoop().
bool check_ssl_key_file_permissions | ( | const char * | ssl_key_file, |
bool | isServerStart | ||
) |
Definition at line 114 of file be-secure-common.c.
References buf, ereport, errcode(), errcode_for_file_access(), errdetail(), errmsg(), FATAL, LOG, S_IRWXG, S_IRWXO, S_ISREG, S_IWGRP, S_IXGRP, ssl_key_file, and stat.
Referenced by be_tls_init().
int ListenServerPort | ( | int | family, |
const char * | hostName, | ||
unsigned short | portNumber, | ||
const char * | unixSocketDir, | ||
pgsocket | ListenSockets[], | ||
int * | NumListenSockets, | ||
int | MaxListen | ||
) |
Definition at line 418 of file pqcomm.c.
References _, bind, closesocket, EADDRINUSE, elog, ereport, err(), errcode_for_socket_access(), errhint(), errmsg(), FATAL, fd(), gai_strerror(), listen, ListenSockets, Lock_AF_UNIX(), LOG, MaxConnections, MAXPGPATH, MemSet, NumListenSockets, pg_freeaddrinfo_all(), pg_getaddrinfo_all(), pg_getnameinfo_all(), PGINVALID_SOCKET, Setup_AF_UNIX(), snprintf, socket, STATUS_ERROR, STATUS_OK, UNIXSOCK_PATH, and UNIXSOCK_PATH_BUFLEN.
Referenced by PostmasterMain().
ssize_t pq_buffer_remaining_data | ( | void | ) |
Definition at line 1127 of file pqcomm.c.
References Assert, PqRecvLength, and PqRecvPointer.
Referenced by ProcessStartupPacket(), and secure_open_server().
bool pq_check_connection | ( | void | ) |
Definition at line 2054 of file pqcomm.c.
References FeBeWaitSet, FeBeWaitSetNEvents, FeBeWaitSetSocketPos, i, lengthof, ModifyWaitEvent(), MyLatch, ResetLatch(), WaitEventSetWait(), WL_LATCH_SET, and WL_SOCKET_CLOSED.
Referenced by ProcessInterrupts().
void pq_endmsgread | ( | void | ) |
Definition at line 1165 of file pqcomm.c.
References Assert, and PqCommReadingMsg.
Referenced by ProcessRepliesIfAny(), ProcessSSLStartup(), ProcessStartupPacket(), and secure_open_server().
int pq_getbyte | ( | void | ) |
Definition at line 964 of file pqcomm.c.
References Assert, pq_recvbuf(), PqCommReadingMsg, PqRecvBuffer, PqRecvLength, and PqRecvPointer.
Referenced by CheckSASLAuth(), CopyGetData(), HandleUploadManifestPacket(), recv_password_packet(), and SocketBackend().
int pq_getbyte_if_available | ( | unsigned char * | c | ) |
Definition at line 1004 of file pqcomm.c.
References Assert, COMMERROR, EAGAIN, EINTR, ereport, errcode_for_socket_access(), errmsg(), EWOULDBLOCK, MyProcPort, PqCommReadingMsg, PqRecvBuffer, PqRecvLength, PqRecvPointer, secure_read(), and socket_set_nonblocking().
Referenced by ProcessRepliesIfAny().
int pq_getbytes | ( | char * | s, |
size_t | len | ||
) |
Definition at line 1063 of file pqcomm.c.
References Assert, len, pq_recvbuf(), PqCommReadingMsg, PqRecvBuffer, PqRecvLength, and PqRecvPointer.
Referenced by pq_getmessage(), ProcessStartupPacket(), and secure_open_server().
int pq_getmessage | ( | StringInfo | s, |
int | maxlen | ||
) |
Definition at line 1203 of file pqcomm.c.
References Assert, COMMERROR, StringInfoData::data, enlargeStringInfo(), ereport, errcode(), errmsg(), StringInfoData::len, len, PG_CATCH, PG_END_TRY, pg_ntoh32, PG_RE_THROW, PG_TRY, pq_discardbytes(), pq_getbytes(), PqCommReadingMsg, and resetStringInfo().
Referenced by CheckSASLAuth(), CopyGetData(), HandleUploadManifestPacket(), ProcessRepliesIfAny(), recv_password_packet(), and SocketBackend().
Port * pq_init | ( | ClientSocket * | client_sock | ) |
Definition at line 174 of file pqcomm.c.
References SockAddr::addr, AddWaitEventToSet(), Assert, CreateWaitEventSet(), elog, ereport, errmsg(), FATAL, FeBeWaitSet, FeBeWaitSetLatchPos, FeBeWaitSetNEvents, FeBeWaitSetSocketPos, MemoryContextAlloc(), MyLatch, on_proc_exit(), palloc0(), pg_set_noblock(), PG_USED_FOR_ASSERTS_ONLY, PGINVALID_SOCKET, port, PQ_SEND_BUFFER_SIZE, pq_setkeepalivescount(), pq_setkeepalivesidle(), pq_setkeepalivesinterval(), pq_settcpusertimeout(), PqCommBusy, PqCommReadingMsg, PqRecvLength, PqRecvPointer, PqSendBuffer, PqSendBufferSize, PqSendPointer, PqSendStart, ClientSocket::raddr, SockAddr::salen, ClientSocket::sock, socket_close(), tcp_keepalives_count, tcp_keepalives_idle, tcp_keepalives_interval, tcp_user_timeout, TopMemoryContext, WL_LATCH_SET, WL_POSTMASTER_DEATH, and WL_SOCKET_WRITEABLE.
Referenced by BackendInitialize().
bool pq_is_reading_msg | ( | void | ) |
Definition at line 1181 of file pqcomm.c.
References PqCommReadingMsg.
Referenced by PostgresMain().
int pq_peekbyte | ( | void | ) |
Definition at line 983 of file pqcomm.c.
References Assert, pq_recvbuf(), PqCommReadingMsg, PqRecvBuffer, PqRecvLength, and PqRecvPointer.
Referenced by ProcessSSLStartup().
int pq_putmessage_v2 | ( | char | msgtype, |
const char * | s, | ||
size_t | len | ||
) |
Definition at line 1559 of file pqcomm.c.
References Assert, internal_putbytes(), len, and PqCommBusy.
Referenced by send_message_to_frontend().
void pq_startmsgread | ( | void | ) |
Definition at line 1141 of file pqcomm.c.
References ereport, errcode(), errmsg(), FATAL, and PqCommReadingMsg.
Referenced by CheckSASLAuth(), CopyGetData(), HandleUploadManifestPacket(), ProcessRepliesIfAny(), ProcessSSLStartup(), ProcessStartupPacket(), recv_password_packet(), secure_open_server(), and SocketBackend().
void RemoveSocketFiles | ( | void | ) |
Definition at line 848 of file pqcomm.c.
References lfirst, NIL, and sock_paths.
Referenced by CloseServerPorts().
int run_ssl_passphrase_command | ( | const char * | prompt, |
bool | is_server_start, | ||
char * | buf, | ||
int | size | ||
) |
Definition at line 40 of file be-secure-common.c.
References Assert, buf, ClosePipeStream(), ereport, errcode_for_file_access(), errdetail_internal(), errmsg(), ERROR, error(), explicit_bzero(), len, LOG, OpenPipeStream(), pfree(), pg_strip_crlf(), replace_percent_placeholders(), size, ssl_passphrase_command, and wait_result_to_str().
Referenced by ssl_external_passwd_cb().
void secure_close | ( | Port * | port | ) |
Definition at line 167 of file be-secure.c.
References be_tls_close(), and port.
Referenced by socket_close().
void secure_destroy | ( | void | ) |
Definition at line 88 of file be-secure.c.
References be_tls_destroy().
Referenced by process_pm_reload_request().
int secure_initialize | ( | bool | isServerStart | ) |
Definition at line 75 of file be-secure.c.
References be_tls_init().
Referenced by BackendMain(), PostmasterMain(), and process_pm_reload_request().
bool secure_loaded_verify_locations | ( | void | ) |
Definition at line 99 of file be-secure.c.
Referenced by ClientAuthentication().
int secure_open_server | ( | Port * | port | ) |
Definition at line 112 of file be-secure.c.
References Assert, be_tls_open_server(), buf, DEBUG2, elog, ereport, errmsg_internal(), INJECTION_POINT, len, LOG, palloc(), pfree(), port, pq_buffer_remaining_data(), pq_endmsgread(), pq_getbytes(), pq_startmsgread(), and STATUS_ERROR.
Referenced by ProcessSSLStartup(), and ProcessStartupPacket().
ssize_t secure_raw_read | ( | Port * | port, |
void * | ptr, | ||
size_t | len | ||
) |
Definition at line 268 of file be-secure.c.
References Assert, len, pgwin32_noblock, port, and recv.
Referenced by be_gssapi_read(), port_bio_read(), read_or_wait(), and secure_read().
ssize_t secure_raw_write | ( | Port * | port, |
const void * | ptr, | ||
size_t | len | ||
) |
Definition at line 377 of file be-secure.c.
References len, pgwin32_noblock, port, and send.
Referenced by be_gssapi_write(), port_bio_write(), secure_open_gssapi(), and secure_write().
ssize_t secure_read | ( | Port * | port, |
void * | ptr, | ||
size_t | len | ||
) |
Definition at line 179 of file be-secure.c.
References Assert, be_gssapi_read(), be_tls_read(), EAGAIN, ereport, errcode(), errmsg(), WaitEvent::events, EWOULDBLOCK, FATAL, FeBeWaitSet, FeBeWaitSetSocketPos, len, ModifyWaitEvent(), MyLatch, port, ProcessClientReadInterrupt(), ResetLatch(), secure_raw_read(), WaitEventSetWait(), WL_LATCH_SET, WL_POSTMASTER_DEATH, and WL_SOCKET_READABLE.
Referenced by pq_getbyte_if_available(), and pq_recvbuf().
ssize_t secure_write | ( | Port * | port, |
const void * | ptr, | ||
size_t | len | ||
) |
Definition at line 305 of file be-secure.c.
References Assert, be_gssapi_write(), be_tls_write(), EAGAIN, ereport, errcode(), errmsg(), WaitEvent::events, EWOULDBLOCK, FATAL, FeBeWaitSet, FeBeWaitSetSocketPos, len, ModifyWaitEvent(), MyLatch, port, ProcessClientWriteInterrupt(), ResetLatch(), secure_raw_write(), WaitEventSetWait(), WL_LATCH_SET, WL_POSTMASTER_DEATH, and WL_SOCKET_WRITEABLE.
Referenced by internal_flush_buffer(), and ProcessStartupPacket().
void TouchSocketFiles | ( | void | ) |
Definition at line 830 of file pqcomm.c.
References lfirst, and sock_paths.
Referenced by ServerLoop().
|
extern |
Definition at line 166 of file pqcomm.c.
Referenced by pq_check_connection(), pq_init(), secure_read(), secure_write(), SwitchBackToLocalLatch(), SwitchToSharedLatch(), and WalSndWait().
|
extern |
Definition at line 164 of file pqcomm.c.
Referenced by pq_redirect_to_shm_mq(), and pq_set_parallel_leader().
|
extern |
Definition at line 39 of file be-secure.c.
Referenced by be_tls_init().
|
extern |
Definition at line 37 of file be-secure.c.
Referenced by be_tls_init().
|
extern |
Definition at line 41 of file be-secure.c.
Referenced by be_tls_init().
|
extern |
Definition at line 40 of file be-secure.c.
Referenced by be_tls_init().
|
extern |
Definition at line 42 of file be-secure.c.
Referenced by initialize_dh().
|
extern |
Definition at line 38 of file be-secure.c.
Referenced by be_tls_init(), and check_ssl_key_file_permissions().
|
extern |
Definition at line 36 of file be-secure.c.
|
extern |
Definition at line 61 of file be-secure.c.
Referenced by be_tls_init(), and be_tls_open_server().
|
extern |
Definition at line 60 of file be-secure.c.
Referenced by be_tls_init(), and be_tls_open_server().
|
extern |
Definition at line 43 of file be-secure.c.
Referenced by default_openssl_tls_init(), run_ssl_passphrase_command(), and set_rot13().
|
extern |
Definition at line 44 of file be-secure.c.
Referenced by default_openssl_tls_init().
|
extern |
Definition at line 52 of file be-secure.c.
Referenced by be_tls_init().
|
extern |
Definition at line 51 of file be-secure.c.
Referenced by be_tls_init().
|
extern |
Definition at line 55 of file be-secure.c.
Referenced by initialize_ecdh().
|
extern |
Definition at line 58 of file be-secure.c.
Referenced by be_tls_init().