onion_connection_status sse_handler(void *data, onion_request *req, onion_response *res) {
char resp[40];
int x = 0;
while (1) {
snprintf(resp, 40,"data: foobar back to you %d\n\n", x++);
onion_response_write0(res, resp);
if (errno == EPIPE) {
errno = 0;
break;
}
onion_response_flush(res);
sleep(5);
}
return OCS_PROCESSED;
}
ssize_t onion_http_write(onion_request *con, const char *data, size_t len) {
return send(con->connection.fd, data, len, MSG_NOSIGNAL ); // Works on client disconnect; sets errno
//return write(con->connection.fd, data, len); // Segmentation fault on client disconnect
}