aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mds-echo.c6
-rw-r--r--src/mds-server/interceptors.c5
2 files changed, 8 insertions, 3 deletions
diff --git a/src/mds-echo.c b/src/mds-echo.c
index 8d1fae0..c9087c5 100644
--- a/src/mds-echo.c
+++ b/src/mds-echo.c
@@ -97,12 +97,12 @@ int __attribute__((const)) preinitialise_server(void)
*/
int initialise_server(void)
{
- const char* message =
+ const char* const message =
"Command: intercept\n"
"Message ID: 0\n"
- "Length: 13\n"
+ "Length: 14\n"
"\n"
- "Command: echo";
+ "Command: echo\n";
if (full_send(message, strlen(message)))
return 1;
diff --git a/src/mds-server/interceptors.c b/src/mds-server/interceptors.c
index 38442bd..552d7a1 100644
--- a/src/mds-server/interceptors.c
+++ b/src/mds-server/interceptors.c
@@ -77,6 +77,7 @@ void add_intercept_condition(client_t* client, char* condition, int64_t priority
interception_condition_t* conds = client->interception_conditions;
ssize_t nonmodifying = -1;
char* header = condition;
+ char* colon = NULL;
char* value;
size_t hash;
size_t i;
@@ -85,11 +86,15 @@ void add_intercept_condition(client_t* client, char* condition, int64_t priority
if ((value = strchr(header, ':')) != NULL)
{
*value = '\0'; /* NUL-terminate header. */
+ colon = value; /* End of header. */
value += 2; /* Skip over delimiter. */
}
/* Calcuate header hash (comparison optimisation) */
hash = string_hash(header);
+ /* Undo header–value splitting. */
+ if (colon != NULL)
+ *colon = ':';
/* Remove of update condition of already registered,
also look for non-modifying condition to swap position