Fixed metadata protokoll corruption on forwarded requests
authorSven-Haegar Koch <haegar@sdinet.de>
Wed, 31 Mar 2010 01:56:53 +0000 (03:56 +0200)
committerSven-Haegar Koch <haegar@sdinet.de>
Wed, 31 Mar 2010 03:06:40 +0000 (05:06 +0200)
When forwarding a metadata request through forward_request() we were
adding the required newline char to our buffer, but then sending the
data without it - this results in the forwarded request and the next one
to be garbled together.

Additionally while at it add a warning comment that request string is
not zero terminated anymore after a call to the forward_request()
function - for now this is ok as it is not used by any caller after this.

src/protocol.c

index 90eca015ea5d5a009749afa27fa1e0e69161a71c..e866e3165ef19f3e3c29686365d024dff6e03e7f 100644 (file)
@@ -103,6 +103,7 @@ bool send_request(connection_t *c, const char *format, ...) {
 }
 
 void forward_request(connection_t *from, char *request) {
+       /* Note: request is not zero terminated anymore after a call to this function! */
        ifdebug(PROTOCOL) {
                ifdebug(META)
                        logger(LOG_DEBUG, "Forwarding %s from %s (%s): %s",
@@ -113,7 +114,7 @@ void forward_request(connection_t *from, char *request) {
        }
 
        int len = strlen(request);
-       request[len] = '\n';
+       request[len++] = '\n';
        broadcast_meta(from, request, len);
 }