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)
562 #ifdef USE_SSL_ENGINE
578 gss_name_t gtarg_nam;
586 char *gss_SendBuffer;
590 int gss_SendConsumed;
592 char *gss_RecvBuffer;
594 char *gss_ResultBuffer;
595 int gss_ResultLength;
604 CredHandle *sspicred;
638 #define USER_CERT_FILE ".postgresql/postgresql.crt"
639 #define USER_KEY_FILE ".postgresql/postgresql.key"
640 #define ROOT_CERT_FILE ".postgresql/root.crt"
641 #define ROOT_CRL_FILE ".postgresql/root.crl"
644 #define USER_CERT_FILE "postgresql.crt"
645 #define USER_KEY_FILE "postgresql.key"
646 #define ROOT_CERT_FILE "root.crt"
647 #define ROOT_CRL_FILE "root.crl"
665 #if defined(WIN32) && defined(SIO_KEEPALIVE_VALS)
674 const void *
buf,
size_t buf_len);
678 const char *context);
682 #define pglock_thread() pg_g_threadlock(true)
683 #define pgunlock_thread() pg_g_threadlock(false)
717 int *result_buf,
int *actual_result_len,
872 #define pqClearConnErrorState(conn) \
873 (resetPQExpBuffer(&(conn)->errorMessage), \
874 (conn)->errorReported = 0)
881 #define pgHavePendingResult(conn) \
882 ((conn)->result != NULL || (conn)->error_result)
888 #define pqIsnonblocking(conn) ((conn)->nonblocking)
893 #define OUTBUFFER_THRESHOLD 65536
899 #define libpq_gettext(x) (x)
900 #define libpq_ngettext(s, p, n) ((n) == 1 ? (s) : (p))
916 #define SOCK_ERRNO (WSAGetLastError())
917 #define SOCK_STRERROR winsock_strerror
918 #define SOCK_ERRNO_SET(e) WSASetLastError(e)
920 #define SOCK_ERRNO errno
921 #define SOCK_STRERROR strerror_r
922 #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)
bool pqConnectOptions2(PGconn *conn)
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)
void pqClosePGconn(PGconn *conn)
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 pqCommandQueueAdvance(PGconn *conn, bool isReadyForQuery, bool gotSync)
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)
bool pqParseIntParam(const char *value, int *result, PGconn *conn, const char *context)
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
void pqReleaseConnHosts(PGconn *conn)
pgthreadlock_t pg_g_threadlock
int pqGets(PQExpBuffer buf, PGconn *conn)
struct pgMessageField PGMessageField
void pqSaveParameterStatus(PGconn *conn, const char *name, const char *value)
PGconn * pqMakeEmptyPGconn(void)
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
int pqConnectDBStart(PGconn *conn)
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)
bool pqCopyPGconn(PGconn *srcConn, PGconn *dstConn)
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)
int pqConnectDBComplete(PGconn *conn)
struct pgresAttValue PGresAttValue
int pqPacketSend(PGconn *conn, char pack_type, const void *buf, size_t buf_len)
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