summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavan Deolasee2018-07-31 06:00:01 +0000
committerPavan Deolasee2018-07-31 07:07:49 +0000
commit3eceb70d92756deaf07ae416dd24540cb63c50fd (patch)
tree5b5acdcdb83ae4718a81b4bec08dd10703f25b24
parentc8b470c1fbf442a0f9bf23d53f127adfe9a2d1cc (diff)
Ensure that bad protocol ERROR message is sent to the frontend
In case of receiving bad protocol messages received by the GTM proxy, let the client know about the error messages.
-rw-r--r--src/gtm/proxy/proxy_main.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/gtm/proxy/proxy_main.c b/src/gtm/proxy/proxy_main.c
index 8db81b1e3c..ba976eb938 100644
--- a/src/gtm/proxy/proxy_main.c
+++ b/src/gtm/proxy/proxy_main.c
@@ -1177,6 +1177,9 @@ GTMProxy_ThreadMain(void *argp)
*/
if (conninfo->con_disconnected)
{
+ EmitErrorReport(conninfo->con_port);
+ if (conninfo->con_port->sock > 0)
+ StreamClose(conninfo->con_port->sock);
GTMProxy_ThreadRemoveConnection(thrinfo, conninfo);
pfree(conninfo);
ii--;
@@ -2329,8 +2332,6 @@ GTMProxy_HandshakeConnection(GTMProxy_ConnectionInfo *conninfo)
if (startup_type != 'A')
{
conninfo->con_disconnected = true;
- if (conninfo->con_port->sock > 0)
- StreamClose(conninfo->con_port->sock);
ereport(ERROR,
(EPROTO,
errmsg("Expecting a startup message, but received %c",
@@ -2347,8 +2348,6 @@ GTMProxy_HandshakeConnection(GTMProxy_ConnectionInfo *conninfo)
if (pq_getmessage(conninfo->con_port, &inBuf, 0))
{
conninfo->con_disconnected = true;
- if (conninfo->con_port->sock > 0)
- StreamClose(conninfo->con_port->sock);
ereport(ERROR,
(EPROTO,
errmsg("Expecting PGXC Node ID, but received EOF")));