- if(!cipher_decrypt(&c->incipher, bufp, inlen, c->buffer->input->buffer + c->buffer->input->off, &outlen, false) || inlen != outlen) {
- logger(LOG_ERR, _("Error while decrypting metadata from %s (%s)"), c->name, c->hostname);
- return false;
- }
+ if(!request) {
+ return true;
+ }
+
+ /* Are we receiving a raw packet? */
+
+ if(c->status.raw_packet) {
+ c->status.raw_packet = false;
+
+ if(mesh->receive_cb) {
+ mesh->receive_cb(mesh, (meshlink_node_t *)c->node, data, length);
+ }
+
+ return true;
+ }
+
+ /* Change newline to null byte, just like non-SPTPS requests */
+
+ if(request[length - 1] == '\n') {
+ request[length - 1] = 0;
+ }
+
+ /* Otherwise we are waiting for a request */
+
+ return receive_request(mesh, c, request);
+}