- /* Add our data to buffer */
- if(c->status.encryptout) {
- char outbuf[length];
- size_t outlen = length;
-
- if(!cipher_encrypt(&c->outcipher, buffer, length, outbuf, &outlen, false) || outlen != length) {
- logger(LOG_ERR, "Error while encrypting metadata to %s (%s)",
- c->name, c->hostname);
- return false;
- }
-
- ifdebug(META) logger(LOG_DEBUG, "Encrypted write %p %p %p %d", c, c->buffer, outbuf, length);
- bufferevent_write(c->buffer, (void *)outbuf, length);
- ifdebug(META) logger(LOG_DEBUG, "Done.");
- } else {
- ifdebug(META) logger(LOG_DEBUG, "Unencrypted write %p %p %p %d", c, c->buffer, buffer, length);
- bufferevent_write(c->buffer, (void *)buffer, length);
- ifdebug(META) logger(LOG_DEBUG, "Done.");
+ if(c->allow_request == ID) {
+ buffer_add(&c->outbuf, buffer, length);
+ io_set(&mesh->loop, &c->io, IO_READ | IO_WRITE);
+ return true;