48 #if defined(HAVE_GSSAPI_H)
51 #include <gssapi/gssapi.h>
56 #define SECURITY_WIN32
57 #if defined(WIN32) && !defined(_MSC_VER)
76 #include <openssl/ssl.h>
77 #include <openssl/err.h>
79 #ifndef OPENSSL_NO_ENGINE
80 #define USE_SSL_ENGINE
89 #define CMDSTATUS_LEN 64
136 #define NULL_LEN (-1)
558 #ifdef USE_SSL_ENGINE
574 gss_name_t gtarg_nam;
582 char *gss_SendBuffer;
586 int gss_SendConsumed;
588 char *gss_RecvBuffer;
590 char *gss_ResultBuffer;
591 int gss_ResultLength;
600 CredHandle *sspicred;
652 #define USER_CERT_FILE ".postgresql/postgresql.crt"
653 #define USER_KEY_FILE ".postgresql/postgresql.key"
654 #define ROOT_CERT_FILE ".postgresql/root.crt"
655 #define ROOT_CRL_FILE ".postgresql/root.crl"
658 #define USER_CERT_FILE "postgresql.crt"
659 #define USER_KEY_FILE "postgresql.key"
660 #define ROOT_CERT_FILE "root.crt"
661 #define ROOT_CRL_FILE "root.crl"
679 const void *
buf,
size_t buf_len);
684 #define pglock_thread() pg_g_threadlock(true)
685 #define pgunlock_thread() pg_g_threadlock(false)
718 int *result_buf,
int *actual_result_len,
873 #define pqClearConnErrorState(conn) \
874 (resetPQExpBuffer(&(conn)->errorMessage), \
875 (conn)->errorReported = 0)
882 #define pgHavePendingResult(conn) \
883 ((conn)->result != NULL || (conn)->error_result)
889 #define pqIsnonblocking(conn) ((conn)->nonblocking)
894 #define OUTBUFFER_THRESHOLD 65536
900 #define libpq_gettext(x) (x)
901 #define libpq_ngettext(s, p, n) ((n) == 1 ? (s) : (p))
917 #define SOCK_ERRNO (WSAGetLastError())
918 #define SOCK_STRERROR winsock_strerror
919 #define SOCK_ERRNO_SET(e) WSASetLastError(e)
921 #define SOCK_ERRNO errno
922 #define SOCK_STRERROR strerror_r
923 #define SOCK_ERRNO_SET(e) (errno = (e))
#define pg_attribute_format_arg(a)
#define pg_attribute_printf(f, a)
#define FLEXIBLE_ARRAY_MEMBER
static void PGresult * res
ssize_t pg_GSS_read(PGconn *conn, void *ptr, size_t len)
ssize_t pg_GSS_write(PGconn *conn, const void *ptr, size_t len)
PostgresPollingStatusType pqsecure_open_gss(PGconn *conn)
int(* PGEventProc)(PGEventId evtId, void *evtInfo, void *passThrough)
void(* pgthreadlock_t)(int acquire)
void(* PQnoticeReceiver)(void *arg, const PGresult *res)
void(* PQnoticeProcessor)(void *arg, const char *message)
PostgresPollingStatusType
int pqPutc(char c, PGconn *conn)
int pqReadData(PGconn *conn)
void pqDropConnection(PGconn *conn, bool flushInput)
int PQsendQueryContinue(PGconn *conn, const char *query)
int pqPutInt(int value, size_t bytes, PGconn *conn)
void pq_reset_sigpipe(sigset_t *osigset, bool sigpipe_pending, bool got_epipe)
int pqCheckOutBufferSpace(size_t bytes_needed, PGconn *conn)
ssize_t pqsecure_raw_write(PGconn *, const void *ptr, size_t len)
int pqFlush(PGconn *conn)
void pqBuildErrorMessage3(PQExpBuffer msg, const PGresult *res, PGVerbosity verbosity, PGContextVisibility show_context)
void pqParseInput3(PGconn *conn)
ssize_t pqsecure_raw_read(PGconn *, void *ptr, size_t len)
int pqReadReady(PGconn *conn)
ssize_t pqsecure_write(PGconn *, const void *ptr, size_t len)
int pqPutMsgStart(char msg_type, PGconn *conn)
int pqSkipnchar(size_t len, PGconn *conn)
int pqEndcopy3(PGconn *conn)
PGresult * pqFunctionCall3(PGconn *conn, Oid fnid, int *result_buf, int *actual_result_len, int result_is_int, const PQArgBlock *args, int nargs)
bool pqGetHomeDirectory(char *buf, int bufsize)
void libpq_append_error(PQExpBuffer errorMessage, const char *fmt,...) pg_attribute_printf(2
int pgtls_verify_peer_name_matches_certificate_guts(PGconn *conn, int *names_examined, char **first_name)
int pq_block_sigpipe(sigset_t *osigset, bool *sigpipe_pending)
void pqSetResultError(PGresult *res, PQExpBuffer errorMessage, int offset)
struct pg_conn_host pg_conn_host
void pqSaveErrorResult(PGconn *conn)
char *const pgresStatus[]
PostgresPollingStatusType pgtls_open_client(PGconn *conn)
bool pgtls_read_pending(PGconn *conn)
char * pqResultStrdup(PGresult *res, const char *str)
int pqGetlineAsync3(PGconn *conn, char *buffer, int bufsize)
int pqGetCopyData3(PGconn *conn, char **buffer, int async)
int pqRowProcessor(PGconn *conn, const char **errmsgp)
struct pgresParamDesc PGresParamDesc
int pqGetc(char *result, PGconn *conn)
struct PGcmdQueueEntry PGcmdQueueEntry
int pqsecure_initialize(PGconn *, bool, bool)
int pqGetNegotiateProtocolVersion3(PGconn *conn)
void pgtls_init_library(bool do_ssl, int do_crypto)
int pqGetInt(int *result, size_t bytes, PGconn *conn)
int pqGetnchar(char *s, size_t len, PGconn *conn)
ssize_t pgtls_read(PGconn *conn, void *ptr, size_t len)
void pqsecure_close(PGconn *)
void void libpq_append_conn_error(PGconn *conn, const char *fmt,...) pg_attribute_printf(2
void void pqSaveMessageField(PGresult *res, char code, const char *value)
ssize_t pgtls_write(PGconn *conn, const void *ptr, size_t len)
int pqWait(int forRead, int forWrite, PGconn *conn)
PostgresPollingStatusType pqsecure_open_client(PGconn *)
int pgtls_init(PGconn *conn, bool do_ssl, bool do_crypto)
struct pgParameterStatus pgParameterStatus
pgthreadlock_t pg_g_threadlock
int pqGets(PQExpBuffer buf, PGconn *conn)
struct pgMessageField PGMessageField
void pqSaveParameterStatus(PGconn *conn, const char *name, const char *value)
void pqClearAsyncResult(PGconn *conn)
void pqTraceOutputMessage(PGconn *conn, const char *message, bool toServer)
int pqCheckInBufferSpace(size_t bytes_needed, PGconn *conn)
int pqPutnchar(const char *s, size_t len, PGconn *conn)
struct pgDataValue PGdataValue
void pqInternalNotice(const PGNoticeHooks *hooks, const char *fmt,...) pg_attribute_printf(2
#define libpq_ngettext(s, p, n)
void * pqResultAlloc(PGresult *res, size_t nBytes, bool isBinary)
int pqPuts(const char *s, PGconn *conn)
ssize_t pqsecure_read(PGconn *, void *ptr, size_t len)
struct PQEnvironmentOption PQEnvironmentOption
char * pgtls_get_peer_certificate_hash(PGconn *conn, size_t *len)
int pqWaitTimed(int forRead, int forWrite, PGconn *conn, time_t finish_time)
@ SERVER_TYPE_PREFER_STANDBY_PASS2
@ SERVER_TYPE_PREFER_STANDBY
int pqGetline3(PGconn *conn, char *s, int maxlen)
int pqGetErrorNotice3(PGconn *conn, bool isError)
void pgtls_close(PGconn *conn)
char * pqBuildStartupPacket3(PGconn *conn, int *packetlen, const PQEnvironmentOption *options)
struct pgLobjfuncs PGlobjfuncs
void pqTraceOutputNoTypeByteMessage(PGconn *conn, const char *message)
int pqGets_append(PQExpBuffer buf, PGconn *conn)
PGresult * pqPrepareAsyncResult(PGconn *conn)
int pqWriteReady(PGconn *conn)
int pqPutMsgEnd(PGconn *conn)
struct pgresAttValue PGresAttValue
int pqPacketSend(PGconn *conn, char pack_type, const void *buf, size_t buf_len)
void pqCommandQueueAdvance(PGconn *conn)
static void const char * fmt
PQnoticeReceiver noticeRec
PQnoticeProcessor noticeProc
struct PGcmdQueueEntry * next
struct pgMessageField * next
char contents[FLEXIBLE_ARRAY_MEMBER]
struct pgParameterStatus * next
PGTransactionStatusType xactStatus
const pg_fe_sasl_mech * sasl
char * ssl_max_protocol_version
PGTernaryBool in_hot_standby
bool client_finished_auth
PGcmdQueueEntry * cmd_queue_recycle
uint32 allowed_auth_methods
char * target_session_attrs
PGcmdQueueEntry * cmd_queue_tail
PQExpBufferData workBuffer
char * load_balance_hosts
PGTernaryBool default_transaction_read_only
pgParameterStatus * pstatus
char * client_encoding_initial
char * keepalives_interval
char * pgtcp_user_timeout
char * ssl_min_protocol_version
PQExpBufferData errorMessage
PGAsyncStatusType asyncStatus
PGLoadBalanceType load_balance_type
int scram_sha_256_iterations
PGpipelineStatus pipelineStatus
PGNoticeHooks noticeHooks
PGTargetServerType target_server_type
PGcmdQueueEntry * cmd_queue_head
PGContextVisibility show_context
PGNoticeHooks noticeHooks
char cmdStatus[CMDSTATUS_LEN]
PGMessageField * errFields
PGresParamDesc * paramDescs
ExecStatusType resultStatus