summaryrefslogtreecommitdiff
path: root/proxy.h
diff options
context:
space:
mode:
authordormando <dormando@rydia.net>2023-03-09 21:42:42 -0800
committerdormando <dormando@rydia.net>2023-03-26 16:48:37 -0700
commit6d767eb78ae256375cfe23a0a91ea6e12e046d6b (patch)
tree4af8645e47c16e718a727969590041d17c0e6762 /proxy.h
parent5910b652428ac96dc6d9917d4bc73d8d400ab0f3 (diff)
downloadmemcached-6d767eb78ae256375cfe23a0a91ea6e12e046d6b.tar.gz
proxy: overhaul backend error handling
Cleans up logic around response handling in general. Allows returning server-sent error messages upstream for handling. In general SERVER_ERROR means we can keep the connection to the backend. The rest of the errors are protocol errors, and while some are perfectly safe to whitelist, clients should not be causing those sorts of errors and we should cycle the backend regardless.
Diffstat (limited to 'proxy.h')
-rw-r--r--proxy.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/proxy.h b/proxy.h
index 24a5ea0..87f2b7e 100644
--- a/proxy.h
+++ b/proxy.h
@@ -251,6 +251,7 @@ enum mcp_backend_states {
mcp_backend_read_end, // looking for an "END" marker for GET
mcp_backend_want_read, // read more data to complete command
mcp_backend_next, // advance to the next IO
+ mcp_backend_next_close, // complete current request, then close socket
};
typedef struct mcp_backend_wrap_s mcp_backend_wrap_t;