- while(c->buffer->input->off) {
- /* Are we receiving a TCPpacket? */
-
- if(c->tcplen) {
- if(c->tcplen <= c->buffer->input->off) {
- receive_tcppacket(c, (char *)c->buffer->input->buffer, c->tcplen);
- evbuffer_drain(c->buffer->input, c->tcplen);
- c->tcplen = 0;
- continue;
- } else {
- break;
+ while(inlen) {
+ if(!c->status.decryptin) {
+ char *end = memchr(inbuf, '\n', inlen);
+ if(!end)
+ end = inbuf + inlen;
+ else
+ end++;
+ memcpy(reqbuf + reqlen, inbuf, end - inbuf);
+ reqlen += end - inbuf;
+
+ if(!process_meta(c, reqbuf, &reqlen))
+ return false;
+
+ memmove(inbuf, end, inlen - (end - inbuf));
+ inlen -= end - inbuf;
+ } else {
+ size_t outlen = inlen;
+
+ if(!cipher_decrypt(&c->incipher, inbuf, inlen, reqbuf + reqlen, &outlen, false) || inlen != outlen) {
+ logger(LOG_ERR, "Error while decrypting metadata from %s (%s)", c->name, c->hostname);
+ return false;