Ignore unknown lines from managed proxies.

This commit is contained in:
George Kadianakis 2012-05-18 15:04:48 +03:00
parent f00a8b4307
commit a8a862c909
2 changed files with 6 additions and 11 deletions

4
changes/bug5910 Normal file
View File

@ -0,0 +1,4 @@
o Minor bugfixes:
- Don't abort the managed proxy protocol if the managed proxy
sends us an unrecognized line; ignore it instead. Fixes bug
5910; bugfix on 0.2.3.9-alpha.

View File

@ -119,10 +119,6 @@ static INLINE void free_execve_args(char **arg);
#define PROTO_CMETHODS_DONE "CMETHODS DONE" #define PROTO_CMETHODS_DONE "CMETHODS DONE"
#define PROTO_SMETHODS_DONE "SMETHODS DONE" #define PROTO_SMETHODS_DONE "SMETHODS DONE"
/* The smallest valid managed proxy protocol line that can
appear. It's the size of "VERSION 1" */
#define SMALLEST_MANAGED_LINE_SIZE 9
/** Number of environment variables for managed proxy clients/servers. */ /** Number of environment variables for managed proxy clients/servers. */
#define ENVIRON_SIZE_CLIENT 3 #define ENVIRON_SIZE_CLIENT 3
#define ENVIRON_SIZE_SERVER 7 /* XXX known to be too high, but that's ok */ #define ENVIRON_SIZE_SERVER 7 /* XXX known to be too high, but that's ok */
@ -633,12 +629,6 @@ handle_proxy_line(const char *line, managed_proxy_t *mp)
log_info(LD_GENERAL, "Got a line from managed proxy '%s': (%s)", log_info(LD_GENERAL, "Got a line from managed proxy '%s': (%s)",
mp->argv[0], line); mp->argv[0], line);
if (strlen(line) < SMALLEST_MANAGED_LINE_SIZE) {
log_warn(LD_GENERAL, "Managed proxy configuration line is too small. "
"Discarding");
goto err;
}
if (!strcmpstart(line, PROTO_ENV_ERROR)) { if (!strcmpstart(line, PROTO_ENV_ERROR)) {
if (mp->conf_state != PT_PROTO_LAUNCHED) if (mp->conf_state != PT_PROTO_LAUNCHED)
goto err; goto err;
@ -712,7 +702,8 @@ handle_proxy_line(const char *line, managed_proxy_t *mp)
return; return;
} }
log_warn(LD_CONFIG, "Unknown line received by managed proxy. (%s)", line); log_notice(LD_GENERAL, "Unknown line received by managed proxy (%s).", line);
return;
err: err:
mp->conf_state = PT_PROTO_BROKEN; mp->conf_state = PT_PROTO_BROKEN;