Fix sanity-check code that mistakenly assumed error and notice messages
authorTom Lane
Sun, 28 Dec 2003 17:43:57 +0000 (17:43 +0000)
committerTom Lane
Sun, 28 Dec 2003 17:43:57 +0000 (17:43 +0000)
could never exceed 30K.  Per report from Andreas Pflug.

src/interfaces/libpq/fe-protocol3.c

index 4ed21a8d7aab8e4a0f67a1a76110d32edaf83249..cfdd97cf7378f9632c5918bde4570c686b42f1a3 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/interfaces/libpq/fe-protocol3.c,v 1.10 2003/11/29 19:52:12 pgsql Exp $
+ *   $PostgreSQL: pgsql/src/interfaces/libpq/fe-protocol3.c,v 1.11 2003/12/28 17:43:57 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
 #endif
 
 
+/*
+ * This macro lists the backend message types that could be "long" (more
+ * than a couple of kilobytes).
+ */
+#define VALID_LONG_MESSAGE_TYPE(id) \
+   ((id) == 'T' || (id) == 'D' || (id) == 'd' || (id) == 'V' || \
+    (id) == 'E' || (id) == 'N' || (id) == 'A')
+
+
 static void handleSyncLoss(PGconn *conn, char id, int msgLength);
 static int getRowDescriptions(PGconn *conn);
 static int getAnotherTuple(PGconn *conn, int msgLength);
@@ -83,8 +92,7 @@ pqParseInput3(PGconn *conn)
            handleSyncLoss(conn, id, msgLength);
            return;
        }
-       if (msgLength > 30000 &&
-           !(id == 'T' || id == 'D' || id == 'd'))
+       if (msgLength > 30000 && !VALID_LONG_MESSAGE_TYPE(id))
        {
            handleSyncLoss(conn, id, msgLength);
            return;
@@ -1257,8 +1265,7 @@ pqFunctionCall3(PGconn *conn, Oid fnid,
            handleSyncLoss(conn, id, msgLength);
            break;
        }
-       if (msgLength > 30000 &&
-           !(id == 'T' || id == 'D' || id == 'd' || id == 'V'))
+       if (msgLength > 30000 && !VALID_LONG_MESSAGE_TYPE(id))
        {
            handleSyncLoss(conn, id, msgLength);
            break;