diff options
Diffstat (limited to 'src/backend/libpq/pqcomm.c')
-rw-r--r-- | src/backend/libpq/pqcomm.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c index 61ea3722ae2..e5171467de1 100644 --- a/src/backend/libpq/pqcomm.c +++ b/src/backend/libpq/pqcomm.c @@ -144,7 +144,7 @@ static int socket_flush_if_writable(void); static bool socket_is_send_pending(void); static int socket_putmessage(char msgtype, const char *s, size_t len); static void socket_putmessage_noblock(char msgtype, const char *s, size_t len); -static inline int internal_putbytes(const char *s, size_t len); +static inline int internal_putbytes(const void *b, size_t len); static inline int internal_flush(void); static pg_noinline int internal_flush_buffer(const char *buf, size_t *start, size_t *end); @@ -1060,8 +1060,9 @@ pq_getbyte_if_available(unsigned char *c) * -------------------------------- */ int -pq_getbytes(char *s, size_t len) +pq_getbytes(void *b, size_t len) { + char *s = b; size_t amount; Assert(PqCommReadingMsg); @@ -1209,7 +1210,7 @@ pq_getmessage(StringInfo s, int maxlen) resetStringInfo(s); /* Read message length word */ - if (pq_getbytes((char *) &len, 4) == EOF) + if (pq_getbytes(&len, 4) == EOF) { ereport(COMMERROR, (errcode(ERRCODE_PROTOCOL_VIOLATION), @@ -1274,8 +1275,10 @@ pq_getmessage(StringInfo s, int maxlen) static inline int -internal_putbytes(const char *s, size_t len) +internal_putbytes(const void *b, size_t len) { + const char *s = b; + while (len > 0) { /* If buffer is full, then flush it out */ @@ -1499,7 +1502,7 @@ socket_putmessage(char msgtype, const char *s, size_t len) goto fail; n32 = pg_hton32((uint32) (len + 4)); - if (internal_putbytes((char *) &n32, 4)) + if (internal_putbytes(&n32, 4)) goto fail; if (internal_putbytes(s, len)) |