From 60a1f477e2006c406bebb2a74222efda1fd16f1a Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Tue, 16 Oct 2018 08:38:37 +0500 Subject: [PATCH 01/65] Publish from other nginx modules --- include/ngx_http_push_stream_module_utils.h | 1 + src/ngx_http_push_stream_module_utils.c | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/include/ngx_http_push_stream_module_utils.h b/include/ngx_http_push_stream_module_utils.h index f0ab8e64..ffd2f8fe 100644 --- a/include/ngx_http_push_stream_module_utils.h +++ b/include/ngx_http_push_stream_module_utils.h @@ -263,6 +263,7 @@ static void ngx_http_push_stream_complex_value(ngx_http_request_ ngx_int_t ngx_http_push_stream_add_msg_to_channel(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t *log, ngx_http_push_stream_channel_t *channel, u_char *text, size_t len, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool); +void ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_str_t *text, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool); ngx_int_t ngx_http_push_stream_send_event(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t *log, ngx_http_push_stream_channel_t *channel, ngx_str_t *event_id, ngx_pool_t *temp_pool); static void ngx_http_push_stream_ping_timer_wake_handler(ngx_event_t *ev); diff --git a/src/ngx_http_push_stream_module_utils.c b/src/ngx_http_push_stream_module_utils.c index a87c76bb..fbf08244 100644 --- a/src/ngx_http_push_stream_module_utils.c +++ b/src/ngx_http_push_stream_module_utils.c @@ -371,6 +371,27 @@ ngx_http_push_stream_convert_char_to_msg_on_shared(ngx_http_push_stream_main_con return msg; } +void +ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_str_t *text, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool) +{ +// ngx_log_error(NGX_LOG_ERR, log, 0, "id = %V", id); +// ngx_log_error(NGX_LOG_ERR, log, 0, "ngx_http_push_stream_global_shm_zone = %p", ngx_http_push_stream_global_shm_zone); + ngx_http_push_stream_global_shm_data_t *global_data = (ngx_http_push_stream_global_shm_data_t *) ngx_http_push_stream_global_shm_zone->data; +// ngx_log_error(NGX_LOG_ERR, log, 0, "global_data = %p", global_data); + for (ngx_queue_t *q = ngx_queue_head(&global_data->shm_datas_queue); q != ngx_queue_sentinel(&global_data->shm_datas_queue); q = ngx_queue_next(q)) { + ngx_http_push_stream_shm_data_t *data = ngx_queue_data(q, ngx_http_push_stream_shm_data_t, shm_data_queue); +// ngx_log_error(NGX_LOG_ERR, log, 0, "data = %p", data); + ngx_http_push_stream_main_conf_t *mcf = data->mcf; +// ngx_log_error(NGX_LOG_ERR, log, 0, "mcf = %p", mcf); + ngx_http_push_stream_channel_t *channel = ngx_http_push_stream_find_channel(id, log, mcf); +// ngx_log_error(NGX_LOG_ERR, log, 0, "channel = %p", channel); + if (channel != NULL) { + if (ngx_http_push_stream_add_msg_to_channel(mcf, log, channel, text->data, text->len, event_id, event_type, store_messages, temp_pool) != NGX_OK) { + ngx_log_error(NGX_LOG_ERR, log, 0, "ngx_http_push_stream_add_msg_to_channel != NGX_OK"); + } + } + } +} ngx_int_t ngx_http_push_stream_add_msg_to_channel(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t *log, ngx_http_push_stream_channel_t *channel, u_char *text, size_t len, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool) From 810e2d08ba5d3c64560e596775531a21bb18a0cc Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Tue, 16 Oct 2018 09:56:36 +0500 Subject: [PATCH 02/65] send channels events to internal locations --- include/ngx_http_push_stream_module.h | 4 ++ include/ngx_http_push_stream_module_utils.h | 2 +- include/ngx_http_push_stream_rbtree_util.h | 2 +- src/ngx_http_push_stream_module_publisher.c | 2 +- src/ngx_http_push_stream_module_setup.c | 46 +++++++++++++++++++- src/ngx_http_push_stream_module_subscriber.c | 5 ++- src/ngx_http_push_stream_module_utils.c | 19 +++++--- src/ngx_http_push_stream_rbtree_util.c | 5 ++- 8 files changed, 72 insertions(+), 13 deletions(-) diff --git a/include/ngx_http_push_stream_module.h b/include/ngx_http_push_stream_module.h index fd5821bc..7d61638f 100644 --- a/include/ngx_http_push_stream_module.h +++ b/include/ngx_http_push_stream_module.h @@ -127,6 +127,10 @@ typedef struct { ngx_str_t padding_by_user_agent; ngx_queue_t *paddings; ngx_http_complex_value_t *allowed_origins; + ngx_http_complex_value_t *channel_created_request_url; + ngx_http_complex_value_t *channel_destroyed_request_url; + ngx_http_complex_value_t *client_subscribed_request_url; + ngx_http_complex_value_t *client_unsubscribed_request_url; } ngx_http_push_stream_loc_conf_t; // shared memory segment name diff --git a/include/ngx_http_push_stream_module_utils.h b/include/ngx_http_push_stream_module_utils.h index ffd2f8fe..d8a49a46 100644 --- a/include/ngx_http_push_stream_module_utils.h +++ b/include/ngx_http_push_stream_module_utils.h @@ -264,7 +264,7 @@ static void ngx_http_push_stream_complex_value(ngx_http_request_ ngx_int_t ngx_http_push_stream_add_msg_to_channel(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t *log, ngx_http_push_stream_channel_t *channel, u_char *text, size_t len, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool); void ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_str_t *text, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool); -ngx_int_t ngx_http_push_stream_send_event(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t *log, ngx_http_push_stream_channel_t *channel, ngx_str_t *event_id, ngx_pool_t *temp_pool); +ngx_int_t ngx_http_push_stream_send_event(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t *log, ngx_http_push_stream_channel_t *channel, ngx_str_t *event_id, ngx_pool_t *temp_pool, ngx_http_request_t *r, ngx_http_complex_value_t *uri); static void ngx_http_push_stream_ping_timer_wake_handler(ngx_event_t *ev); static void ngx_http_push_stream_disconnect_timer_wake_handler(ngx_event_t *ev); diff --git a/include/ngx_http_push_stream_rbtree_util.h b/include/ngx_http_push_stream_rbtree_util.h index 661cbde1..2a941dee 100644 --- a/include/ngx_http_push_stream_rbtree_util.h +++ b/include/ngx_http_push_stream_rbtree_util.h @@ -34,7 +34,7 @@ #ifndef NGX_HTTP_PUSH_STREAM_RBTREE_UTIL_H_ #define NGX_HTTP_PUSH_STREAM_RBTREE_UTIL_H_ -static ngx_http_push_stream_channel_t * ngx_http_push_stream_get_channel(ngx_str_t *id, ngx_log_t *log, ngx_http_push_stream_main_conf_t *mcf); +static ngx_http_push_stream_channel_t * ngx_http_push_stream_get_channel(ngx_str_t *id, ngx_log_t *log, ngx_http_push_stream_main_conf_t *mcf, ngx_http_request_t *r); static ngx_http_push_stream_channel_t * ngx_http_push_stream_find_channel(ngx_str_t *id, ngx_log_t *log, ngx_http_push_stream_main_conf_t *mcf); static void ngx_rbtree_generic_insert(ngx_rbtree_node_t *temp, ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel, int (*compare) (const ngx_rbtree_node_t *left, const ngx_rbtree_node_t *right)); diff --git a/src/ngx_http_push_stream_module_publisher.c b/src/ngx_http_push_stream_module_publisher.c index ee2b691c..247bf5fa 100644 --- a/src/ngx_http_push_stream_module_publisher.c +++ b/src/ngx_http_push_stream_module_publisher.c @@ -97,7 +97,7 @@ ngx_http_push_stream_publisher_handler(ngx_http_request_t *r) if (r->method & (NGX_HTTP_POST|NGX_HTTP_PUT)) { // create the channel if doesn't exist - requested_channel->channel = ngx_http_push_stream_get_channel(requested_channel->id, r->connection->log, mcf); + requested_channel->channel = ngx_http_push_stream_get_channel(requested_channel->id, r->connection->log, mcf, r); if (requested_channel->channel == NULL) { return ngx_http_push_stream_send_only_header_response(r, NGX_HTTP_INTERNAL_SERVER_ERROR, NULL); } diff --git a/src/ngx_http_push_stream_module_setup.c b/src/ngx_http_push_stream_module_setup.c index 8c63c8fd..4df52a68 100644 --- a/src/ngx_http_push_stream_module_setup.c +++ b/src/ngx_http_push_stream_module_setup.c @@ -249,6 +249,30 @@ static ngx_command_t ngx_http_push_stream_commands[] = { NGX_HTTP_LOC_CONF_OFFSET, offsetof(ngx_http_push_stream_loc_conf_t, allow_connections_to_events_channel), NULL }, + { ngx_string("push_stream_channel_created_request"), + NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, + ngx_http_set_complex_value_slot, + NGX_HTTP_LOC_CONF_OFFSET, + offsetof(ngx_http_push_stream_loc_conf_t, channel_created_request_url), + NULL } , + { ngx_string("push_stream_channel_destroyed_request"), + NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, + ngx_http_set_complex_value_slot, + NGX_HTTP_LOC_CONF_OFFSET, + offsetof(ngx_http_push_stream_loc_conf_t, channel_destroyed_request_url), + NULL } , + { ngx_string("push_stream_client_subscribed_request"), + NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, + ngx_http_set_complex_value_slot, + NGX_HTTP_LOC_CONF_OFFSET, + offsetof(ngx_http_push_stream_loc_conf_t, client_subscribed_request_url), + NULL } , + { ngx_string("push_stream_client_unsubscribed_request"), + NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, + ngx_http_set_complex_value_slot, + NGX_HTTP_LOC_CONF_OFFSET, + offsetof(ngx_http_push_stream_loc_conf_t, client_unsubscribed_request_url), + NULL } , ngx_null_command }; @@ -588,6 +612,10 @@ ngx_http_push_stream_create_loc_conf(ngx_conf_t *cf) ngx_str_null(&lcf->padding_by_user_agent); lcf->paddings = NULL; lcf->allowed_origins = NULL; + lcf->channel_created_request_url = NULL; + lcf->channel_destroyed_request_url = NULL; + lcf->client_subscribed_request_url = NULL; + lcf->client_unsubscribed_request_url = NULL; return lcf; } @@ -638,6 +666,22 @@ ngx_http_push_stream_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child) conf->allowed_origins = prev->allowed_origins ; } + if (conf->channel_created_request_url == NULL) { + conf->channel_created_request_url = prev->channel_created_request_url ; + } + + if (conf->channel_destroyed_request_url == NULL) { + conf->channel_destroyed_request_url = prev->channel_destroyed_request_url ; + } + + if (conf->client_subscribed_request_url == NULL) { + conf->client_subscribed_request_url = prev->client_subscribed_request_url ; + } + + if (conf->client_unsubscribed_request_url == NULL) { + conf->client_unsubscribed_request_url = prev->client_unsubscribed_request_url ; + } + if (conf->location_type == NGX_CONF_UNSET_UINT) { return NGX_CONF_OK; } @@ -1131,7 +1175,7 @@ ngx_http_push_stream_init_shm_zone(ngx_shm_zone_t *shm_zone, void *data) d->mutex_round_robin = 0; if (mcf->events_channel_id.len > 0) { - if ((d->events_channel = ngx_http_push_stream_get_channel(&mcf->events_channel_id, ngx_cycle->log, mcf)) == NULL) { + if ((d->events_channel = ngx_http_push_stream_get_channel(&mcf->events_channel_id, ngx_cycle->log, mcf, NULL)) == NULL) { ngx_log_error(NGX_LOG_ERR, ngx_cycle->log, 0, "push stream module: unable to create events channel"); return NGX_ERROR; } diff --git a/src/ngx_http_push_stream_module_subscriber.c b/src/ngx_http_push_stream_module_subscriber.c index d09966b6..0ca3c728 100644 --- a/src/ngx_http_push_stream_module_subscriber.c +++ b/src/ngx_http_push_stream_module_subscriber.c @@ -355,7 +355,7 @@ ngx_http_push_stream_validate_channels(ngx_http_request_t *r, ngx_http_push_stre continue; } - requested_channel->channel = ngx_http_push_stream_get_channel(requested_channel->id, r->connection->log, mcf); + requested_channel->channel = ngx_http_push_stream_get_channel(requested_channel->id, r->connection->log, mcf, r); if (requested_channel->channel == NULL) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "push stream module: unable to allocate memory for new channel"); *status_code = NGX_HTTP_INTERNAL_SERVER_ERROR; @@ -621,6 +621,7 @@ static ngx_int_t ngx_http_push_stream_assing_subscription_to_channel(ngx_slab_pool_t *shpool, ngx_http_push_stream_channel_t *channel, ngx_http_push_stream_subscription_t *subscription, ngx_queue_t *subscriptions, ngx_log_t *log) { ngx_http_push_stream_main_conf_t *mcf = ngx_http_get_module_main_conf(subscription->subscriber->request, ngx_http_push_stream_module); + ngx_http_push_stream_loc_conf_t *cf = ngx_http_get_module_loc_conf(subscription->subscriber->request, ngx_http_push_stream_module); ngx_http_push_stream_pid_queue_t *worker_subscribers_sentinel; ngx_shmtx_lock(channel->mutex); @@ -637,7 +638,7 @@ ngx_http_push_stream_assing_subscription_to_channel(ngx_slab_pool_t *shpool, ngx subscription->channel_worker_sentinel = worker_subscribers_sentinel; ngx_shmtx_unlock(channel->mutex); - ngx_http_push_stream_send_event(mcf, log, channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_SUBSCRIBED, NULL); + ngx_http_push_stream_send_event(mcf, log, channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_SUBSCRIBED, NULL, subscription->subscriber->request, cf->client_subscribed_request_url); return NGX_OK; } diff --git a/src/ngx_http_push_stream_module_utils.c b/src/ngx_http_push_stream_module_utils.c index fbf08244..8e2d2e80 100644 --- a/src/ngx_http_push_stream_module_utils.c +++ b/src/ngx_http_push_stream_module_utils.c @@ -114,7 +114,8 @@ ngx_http_push_stream_delete_channels_data(ngx_http_push_stream_shm_data_t *data) // remove the subscription for the channel from worker ngx_queue_remove(&subscription->channel_worker_queue); - ngx_http_push_stream_send_event(mcf, ngx_cycle->log, subscription->channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_UNSUBSCRIBED, subscriber->request->pool); + ngx_http_push_stream_loc_conf_t *cf = ngx_http_get_module_loc_conf(subscriber->request, ngx_http_push_stream_module); + ngx_http_push_stream_send_event(mcf, ngx_cycle->log, subscription->channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_UNSUBSCRIBED, subscriber->request->pool, subscriber->request, cf->client_unsubscribed_request_url); if (subscriber->longpolling) { ngx_http_push_stream_add_polling_headers(subscriber->request, ngx_time(), 0, subscriber->request->pool); @@ -177,7 +178,7 @@ ngx_http_push_stream_collect_deleted_channels_data(ngx_http_push_stream_shm_data data->channels_in_trash++; ngx_shmtx_unlock(&data->channels_trash_mutex); - ngx_http_push_stream_send_event(mcf, ngx_cycle->log, channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CHANNEL_DESTROYED, temp_pool); + ngx_http_push_stream_send_event(mcf, ngx_cycle->log, channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CHANNEL_DESTROYED, temp_pool, NULL, NULL); } } ngx_shmtx_unlock(&data->channels_to_delete_mutex); @@ -466,7 +467,7 @@ ngx_http_push_stream_add_msg_to_channel(ngx_http_push_stream_main_conf_t *mcf, n ngx_int_t -ngx_http_push_stream_send_event(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t *log, ngx_http_push_stream_channel_t *channel, ngx_str_t *event_type, ngx_pool_t *received_temp_pool) +ngx_http_push_stream_send_event(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t *log, ngx_http_push_stream_channel_t *channel, ngx_str_t *event_type, ngx_pool_t *received_temp_pool, ngx_http_request_t *r, ngx_http_complex_value_t *uri) { ngx_http_push_stream_shm_data_t *data = mcf->shm_data; ngx_pool_t *temp_pool = received_temp_pool; @@ -488,6 +489,13 @@ ngx_http_push_stream_send_event(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t } } + if ((r != NULL) && (uri != NULL)) { + ngx_http_request_t *sr; + if (ngx_http_subrequest(r, &uri->value, &r->args, &sr, NULL, NGX_HTTP_SUBREQUEST_BACKGROUND) != NGX_OK) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "ngx_http_subrequest != NGX_OK"); + } + } + return NGX_OK; } @@ -1054,7 +1062,7 @@ ngx_http_push_stream_collect_expired_messages_and_empty_channels_data(ngx_http_p data->channels_in_trash++; ngx_shmtx_unlock(&data->channels_trash_mutex); - ngx_http_push_stream_send_event(mcf, ngx_cycle->log, channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CHANNEL_DESTROYED, temp_pool); + ngx_http_push_stream_send_event(mcf, ngx_cycle->log, channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CHANNEL_DESTROYED, temp_pool, NULL, NULL); } } ngx_shmtx_unlock(&data->channels_queue_mutex); @@ -1565,6 +1573,7 @@ static void ngx_http_push_stream_worker_subscriber_cleanup(ngx_http_push_stream_subscriber_t *worker_subscriber) { ngx_http_push_stream_main_conf_t *mcf = ngx_http_get_module_main_conf(worker_subscriber->request, ngx_http_push_stream_module); + ngx_http_push_stream_loc_conf_t *cf = ngx_http_get_module_loc_conf(worker_subscriber->request, ngx_http_push_stream_module); ngx_http_push_stream_shm_data_t *data = mcf->shm_data; ngx_slab_pool_t *shpool = mcf->shpool; ngx_queue_t *cur; @@ -1579,7 +1588,7 @@ ngx_http_push_stream_worker_subscriber_cleanup(ngx_http_push_stream_subscriber_t ngx_queue_remove(&subscription->queue); ngx_shmtx_unlock(subscription->channel->mutex); - ngx_http_push_stream_send_event(mcf, ngx_cycle->log, subscription->channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_UNSUBSCRIBED, worker_subscriber->request->pool); + ngx_http_push_stream_send_event(mcf, ngx_cycle->log, subscription->channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_UNSUBSCRIBED, worker_subscriber->request->pool, worker_subscriber->request, cf->client_unsubscribed_request_url); } ngx_shmtx_lock(&shpool->mutex); diff --git a/src/ngx_http_push_stream_rbtree_util.c b/src/ngx_http_push_stream_rbtree_util.c index 531d025f..d3b2f0c7 100644 --- a/src/ngx_http_push_stream_rbtree_util.c +++ b/src/ngx_http_push_stream_rbtree_util.c @@ -94,7 +94,7 @@ ngx_http_push_stream_find_channel(ngx_str_t *id, ngx_log_t *log, ngx_http_push_s // find a channel by id. if channel not found, make one, insert it, and return that. static ngx_http_push_stream_channel_t * -ngx_http_push_stream_get_channel(ngx_str_t *id, ngx_log_t *log, ngx_http_push_stream_main_conf_t *mcf) +ngx_http_push_stream_get_channel(ngx_str_t *id, ngx_log_t *log, ngx_http_push_stream_main_conf_t *mcf, ngx_http_request_t *r) { ngx_http_push_stream_shm_data_t *data = mcf->shm_data; ngx_http_push_stream_channel_t *channel; @@ -166,7 +166,8 @@ ngx_http_push_stream_get_channel(ngx_str_t *id, ngx_log_t *log, ngx_http_push_st ngx_shmtx_unlock(&data->channels_queue_mutex); - ngx_http_push_stream_send_event(mcf, log, channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CHANNEL_CREATED, NULL); + ngx_http_push_stream_loc_conf_t *cf = ngx_http_get_module_loc_conf(r, ngx_http_push_stream_module); + ngx_http_push_stream_send_event(mcf, log, channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CHANNEL_CREATED, NULL, r, cf->channel_created_request_url); return channel; } From 6a6dca7074211d1740edce81c3d5ff634a560e5b Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Fri, 19 Oct 2018 14:26:03 +0500 Subject: [PATCH 03/65] publish from websocket to internal locations --- include/ngx_http_push_stream_module.h | 1 + include/ngx_http_push_stream_module_utils.h | 1 + src/ngx_http_push_stream_module_setup.c | 11 +++++++ src/ngx_http_push_stream_module_websocket.c | 36 +++++++++++++++++++-- 4 files changed, 46 insertions(+), 3 deletions(-) diff --git a/include/ngx_http_push_stream_module.h b/include/ngx_http_push_stream_module.h index 7d61638f..2e7c63d2 100644 --- a/include/ngx_http_push_stream_module.h +++ b/include/ngx_http_push_stream_module.h @@ -131,6 +131,7 @@ typedef struct { ngx_http_complex_value_t *channel_destroyed_request_url; ngx_http_complex_value_t *client_subscribed_request_url; ngx_http_complex_value_t *client_unsubscribed_request_url; + ngx_http_complex_value_t *client_publish_request_url; } ngx_http_push_stream_loc_conf_t; // shared memory segment name diff --git a/include/ngx_http_push_stream_module_utils.h b/include/ngx_http_push_stream_module_utils.h index d8a49a46..0a3e12b5 100644 --- a/include/ngx_http_push_stream_module_utils.h +++ b/include/ngx_http_push_stream_module_utils.h @@ -229,6 +229,7 @@ static ngx_str_t NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CHANNEL_CREATED = ngx_string(" static ngx_str_t NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CHANNEL_DESTROYED = ngx_string("channel_destroyed"); static ngx_str_t NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_SUBSCRIBED = ngx_string("client_subscribed"); static ngx_str_t NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_UNSUBSCRIBED = ngx_string("client_unsubscribed"); +static ngx_str_t NGX_HTTP_PUSH_STREAM_POST = ngx_string("POST"); ngx_event_t ngx_http_push_stream_memory_cleanup_event; diff --git a/src/ngx_http_push_stream_module_setup.c b/src/ngx_http_push_stream_module_setup.c index 4df52a68..199029ae 100644 --- a/src/ngx_http_push_stream_module_setup.c +++ b/src/ngx_http_push_stream_module_setup.c @@ -273,6 +273,12 @@ static ngx_command_t ngx_http_push_stream_commands[] = { NGX_HTTP_LOC_CONF_OFFSET, offsetof(ngx_http_push_stream_loc_conf_t, client_unsubscribed_request_url), NULL } , + { ngx_string("push_stream_client_publish_request"), + NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, + ngx_http_set_complex_value_slot, + NGX_HTTP_LOC_CONF_OFFSET, + offsetof(ngx_http_push_stream_loc_conf_t, client_publish_request_url), + NULL } , ngx_null_command }; @@ -616,6 +622,7 @@ ngx_http_push_stream_create_loc_conf(ngx_conf_t *cf) lcf->channel_destroyed_request_url = NULL; lcf->client_subscribed_request_url = NULL; lcf->client_unsubscribed_request_url = NULL; + lcf->client_publish_request_url = NULL; return lcf; } @@ -682,6 +689,10 @@ ngx_http_push_stream_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child) conf->client_unsubscribed_request_url = prev->client_unsubscribed_request_url ; } + if (conf->client_publish_request_url == NULL) { + conf->client_publish_request_url = prev->client_publish_request_url ; + } + if (conf->location_type == NGX_CONF_UNSET_UINT) { return NGX_CONF_OK; } diff --git a/src/ngx_http_push_stream_module_websocket.c b/src/ngx_http_push_stream_module_websocket.c index e4f6e6ff..83926ff1 100644 --- a/src/ngx_http_push_stream_module_websocket.c +++ b/src/ngx_http_push_stream_module_websocket.c @@ -371,9 +371,39 @@ ngx_http_push_stream_websocket_reading(ngx_http_request_t *r) // skip events channel on publish by websocket connections continue; } - - if (ngx_http_push_stream_add_msg_to_channel(mcf, r->connection->log, subscription->channel, ctx->frame->payload, ctx->frame->payload_len, NULL, NULL, cf->store_messages, ctx->temp_pool) != NGX_OK) { - goto finalize; + if (cf->client_publish_request_url != NULL) { + ngx_http_request_t *sr; + if (ngx_http_subrequest(r, &cf->client_publish_request_url->value, &r->args, &sr, NULL, NGX_HTTP_SUBREQUEST_BACKGROUND) != NGX_OK) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "ngx_http_subrequest != NGX_OK"); + } else { + sr->method = NGX_HTTP_POST; + sr->method_name = NGX_HTTP_PUSH_STREAM_POST; + sr->request_body = ngx_pcalloc(sr->pool, sizeof(ngx_http_request_body_t)); + if (sr->request_body == NULL) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "sr->request_body == NULL"); + } else { + sr->request_body->buf = ngx_calloc_buf(sr->pool); + if (sr->request_body->buf == NULL) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "sr->request_body->buf == NULL"); + } else { + sr->request_body->bufs = ngx_alloc_chain_link(sr->pool); + if (sr->request_body->bufs == NULL) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "sr->request_body->bufs == NULL"); + } else { + sr->headers_in.content_length_n = ctx->frame->payload_len; + sr->request_body->buf->pos = ctx->frame->payload; + sr->request_body->buf->last = ctx->frame->payload + ctx->frame->payload_len; + sr->request_body->buf->memory = 1; + sr->request_body->bufs->buf = sr->request_body->buf; + sr->request_body->bufs->next = NULL; + } + } + } + } + } else { + if (ngx_http_push_stream_add_msg_to_channel(mcf, r->connection->log, subscription->channel, ctx->frame->payload, ctx->frame->payload_len, NULL, NULL, cf->store_messages, ctx->temp_pool) != NGX_OK) { + goto finalize; + } } } } From 029670dd7cc8ba30be521adf6667d3602756807d Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Tue, 23 Oct 2018 11:28:22 +0500 Subject: [PATCH 04/65] publish from websocket to internal locations --- src/ngx_http_push_stream_module_websocket.c | 78 ++++++++++++++++----- 1 file changed, 59 insertions(+), 19 deletions(-) diff --git a/src/ngx_http_push_stream_module_websocket.c b/src/ngx_http_push_stream_module_websocket.c index 83926ff1..7bc7bf70 100644 --- a/src/ngx_http_push_stream_module_websocket.c +++ b/src/ngx_http_push_stream_module_websocket.c @@ -25,6 +25,7 @@ #include +static ngx_int_t ngx_http_push_stream_post_subrequest_handler(ngx_http_request_t *r, void *data, ngx_int_t rc); ngx_str_t *ngx_http_push_stream_generate_websocket_accept_value(ngx_http_request_t *r, ngx_str_t *sec_key, ngx_pool_t *temp_pool); ngx_int_t ngx_http_push_stream_recv(ngx_connection_t *c, ngx_event_t *rev, ngx_buf_t *buf, ssize_t len); void ngx_http_push_stream_set_buffer(ngx_buf_t *buf, u_char *start, u_char *last, ssize_t len); @@ -373,29 +374,41 @@ ngx_http_push_stream_websocket_reading(ngx_http_request_t *r) } if (cf->client_publish_request_url != NULL) { ngx_http_request_t *sr; - if (ngx_http_subrequest(r, &cf->client_publish_request_url->value, &r->args, &sr, NULL, NGX_HTTP_SUBREQUEST_BACKGROUND) != NGX_OK) { - ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "ngx_http_subrequest != NGX_OK"); + ngx_http_post_subrequest_t *psr = ngx_palloc(r->pool, sizeof(ngx_http_post_subrequest_t)); + if (psr == NULL) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "psr == NULL"); } else { - sr->method = NGX_HTTP_POST; - sr->method_name = NGX_HTTP_PUSH_STREAM_POST; - sr->request_body = ngx_pcalloc(sr->pool, sizeof(ngx_http_request_body_t)); - if (sr->request_body == NULL) { - ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "sr->request_body == NULL"); + psr->handler = ngx_http_push_stream_post_subrequest_handler; + psr->data = subscription; + if (ngx_http_subrequest(r, &cf->client_publish_request_url->value, &r->args, &sr, psr, NGX_HTTP_SUBREQUEST_IN_MEMORY|NGX_HTTP_SUBREQUEST_WAITED|NGX_HTTP_SUBREQUEST_BACKGROUND) != NGX_OK) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "ngx_http_subrequest != NGX_OK"); } else { - sr->request_body->buf = ngx_calloc_buf(sr->pool); - if (sr->request_body->buf == NULL) { - ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "sr->request_body->buf == NULL"); +// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "r = %p", r); +// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "sr = %p", sr); + sr->method = NGX_HTTP_POST; + sr->method_name = NGX_HTTP_PUSH_STREAM_POST; + sr->request_body = ngx_pcalloc(sr->pool, sizeof(ngx_http_request_body_t)); + if (sr->request_body == NULL) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "sr->request_body == NULL"); } else { - sr->request_body->bufs = ngx_alloc_chain_link(sr->pool); - if (sr->request_body->bufs == NULL) { - ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "sr->request_body->bufs == NULL"); + sr->request_body->buf = ngx_calloc_buf(sr->pool); + if (sr->request_body->buf == NULL) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "sr->request_body->buf == NULL"); } else { - sr->headers_in.content_length_n = ctx->frame->payload_len; - sr->request_body->buf->pos = ctx->frame->payload; - sr->request_body->buf->last = ctx->frame->payload + ctx->frame->payload_len; - sr->request_body->buf->memory = 1; - sr->request_body->bufs->buf = sr->request_body->buf; - sr->request_body->bufs->next = NULL; + sr->request_body->bufs = ngx_alloc_chain_link(sr->pool); + if (sr->request_body->bufs == NULL) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "sr->request_body->bufs == NULL"); + } else { + sr->headers_in.content_length_n = ctx->frame->payload_len; + sr->request_body->buf->pos = ctx->frame->payload; + sr->request_body->buf->last = ctx->frame->payload + ctx->frame->payload_len; + sr->request_body->buf->memory = 1; + sr->request_body->bufs->buf = sr->request_body->buf; + sr->request_body->bufs->next = NULL; + if (r->headers_in.headers.last == &r->headers_in.headers.part) { + sr->headers_in.headers.last = &sr->headers_in.headers.part; + } + } } } } @@ -507,3 +520,30 @@ ngx_http_push_stream_set_buffer(ngx_buf_t *buf, u_char *start, u_char *last, ssi buf->temporary = 0; buf->memory = 1; } + +static ngx_int_t ngx_http_push_stream_post_subrequest_handler(ngx_http_request_t *r, void *data, ngx_int_t rc) { + ngx_http_push_stream_main_conf_t *mcf = ngx_http_get_module_main_conf(r, ngx_http_push_stream_module); + ngx_http_push_stream_loc_conf_t *cf = ngx_http_get_module_loc_conf(r, ngx_http_push_stream_module); + ngx_http_push_stream_subscription_t *subscription = data; +// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "r = %p", r); +// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "r->method = %i", r->method); +// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "r->method_name = %V", &r->method_name); +// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "mcf = %p", mcf); +// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "cf = %p", cf); +// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "subscription = %p", subscription); +// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "subscription->channel = %p", subscription->channel); +// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "subscription->channel->id = %V", &subscription->channel->id); +// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "rc = %i", rc); +// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "r->out = %p", r->out); + if (r->out != NULL) { +// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "r->out->buf = %p", r->out->buf); + if (r->out->buf != NULL) { +// ngx_str_t body = {.data = r->out->buf->pos, .len = ngx_buf_size(r->out->buf)}; +// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "body = %V", &body); + if (ngx_http_push_stream_add_msg_to_channel(mcf, r->connection->log, subscription->channel, r->out->buf->pos, ngx_buf_size(r->out->buf), NULL, NULL, cf->store_messages, r->pool) != NGX_OK) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "ngx_http_push_stream_add_msg_to_channel != NGX_OK"); + } + } + } + return rc; +} From 8a467f7f243fe0420da024f0d4d33aba07e9e0c3 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Tue, 23 Oct 2018 12:24:02 +0500 Subject: [PATCH 05/65] publish from websocket to internal locations application/json --- include/ngx_http_push_stream_module_utils.h | 1 + src/ngx_http_push_stream_module_websocket.c | 17 ++--------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/include/ngx_http_push_stream_module_utils.h b/include/ngx_http_push_stream_module_utils.h index 0a3e12b5..bbdd79ea 100644 --- a/include/ngx_http_push_stream_module_utils.h +++ b/include/ngx_http_push_stream_module_utils.h @@ -230,6 +230,7 @@ static ngx_str_t NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CHANNEL_DESTROYED = ngx_string static ngx_str_t NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_SUBSCRIBED = ngx_string("client_subscribed"); static ngx_str_t NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_UNSUBSCRIBED = ngx_string("client_unsubscribed"); static ngx_str_t NGX_HTTP_PUSH_STREAM_POST = ngx_string("POST"); +static ngx_str_t NGX_HTTP_PUSH_STREAM_APPLICATION_JSON = ngx_string("application/json"); ngx_event_t ngx_http_push_stream_memory_cleanup_event; diff --git a/src/ngx_http_push_stream_module_websocket.c b/src/ngx_http_push_stream_module_websocket.c index 7bc7bf70..bb1f4c00 100644 --- a/src/ngx_http_push_stream_module_websocket.c +++ b/src/ngx_http_push_stream_module_websocket.c @@ -383,8 +383,6 @@ ngx_http_push_stream_websocket_reading(ngx_http_request_t *r) if (ngx_http_subrequest(r, &cf->client_publish_request_url->value, &r->args, &sr, psr, NGX_HTTP_SUBREQUEST_IN_MEMORY|NGX_HTTP_SUBREQUEST_WAITED|NGX_HTTP_SUBREQUEST_BACKGROUND) != NGX_OK) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "ngx_http_subrequest != NGX_OK"); } else { -// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "r = %p", r); -// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "sr = %p", sr); sr->method = NGX_HTTP_POST; sr->method_name = NGX_HTTP_PUSH_STREAM_POST; sr->request_body = ngx_pcalloc(sr->pool, sizeof(ngx_http_request_body_t)); @@ -399,6 +397,8 @@ ngx_http_push_stream_websocket_reading(ngx_http_request_t *r) if (sr->request_body->bufs == NULL) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "sr->request_body->bufs == NULL"); } else { + sr->headers_in.content_type = ngx_palloc(sr->pool, sizeof(ngx_table_elt_t)); + sr->headers_in.content_type->value = NGX_HTTP_PUSH_STREAM_APPLICATION_JSON; sr->headers_in.content_length_n = ctx->frame->payload_len; sr->request_body->buf->pos = ctx->frame->payload; sr->request_body->buf->last = ctx->frame->payload + ctx->frame->payload_len; @@ -525,21 +525,8 @@ static ngx_int_t ngx_http_push_stream_post_subrequest_handler(ngx_http_request_t ngx_http_push_stream_main_conf_t *mcf = ngx_http_get_module_main_conf(r, ngx_http_push_stream_module); ngx_http_push_stream_loc_conf_t *cf = ngx_http_get_module_loc_conf(r, ngx_http_push_stream_module); ngx_http_push_stream_subscription_t *subscription = data; -// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "r = %p", r); -// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "r->method = %i", r->method); -// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "r->method_name = %V", &r->method_name); -// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "mcf = %p", mcf); -// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "cf = %p", cf); -// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "subscription = %p", subscription); -// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "subscription->channel = %p", subscription->channel); -// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "subscription->channel->id = %V", &subscription->channel->id); -// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "rc = %i", rc); -// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "r->out = %p", r->out); if (r->out != NULL) { -// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "r->out->buf = %p", r->out->buf); if (r->out->buf != NULL) { -// ngx_str_t body = {.data = r->out->buf->pos, .len = ngx_buf_size(r->out->buf)}; -// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "body = %V", &body); if (ngx_http_push_stream_add_msg_to_channel(mcf, r->connection->log, subscription->channel, r->out->buf->pos, ngx_buf_size(r->out->buf), NULL, NULL, cf->store_messages, r->pool) != NGX_OK) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "ngx_http_push_stream_add_msg_to_channel != NGX_OK"); } From 9d7ad4afd3122553c740e987afce1855121a2705 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Tue, 23 Oct 2018 12:42:51 +0500 Subject: [PATCH 06/65] publish from websocket to internal locations --- include/ngx_http_push_stream_module_utils.h | 1 - src/ngx_http_push_stream_module_websocket.c | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/ngx_http_push_stream_module_utils.h b/include/ngx_http_push_stream_module_utils.h index bbdd79ea..0a3e12b5 100644 --- a/include/ngx_http_push_stream_module_utils.h +++ b/include/ngx_http_push_stream_module_utils.h @@ -230,7 +230,6 @@ static ngx_str_t NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CHANNEL_DESTROYED = ngx_string static ngx_str_t NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_SUBSCRIBED = ngx_string("client_subscribed"); static ngx_str_t NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_UNSUBSCRIBED = ngx_string("client_unsubscribed"); static ngx_str_t NGX_HTTP_PUSH_STREAM_POST = ngx_string("POST"); -static ngx_str_t NGX_HTTP_PUSH_STREAM_APPLICATION_JSON = ngx_string("application/json"); ngx_event_t ngx_http_push_stream_memory_cleanup_event; diff --git a/src/ngx_http_push_stream_module_websocket.c b/src/ngx_http_push_stream_module_websocket.c index bb1f4c00..58a132e7 100644 --- a/src/ngx_http_push_stream_module_websocket.c +++ b/src/ngx_http_push_stream_module_websocket.c @@ -195,6 +195,8 @@ ngx_http_push_stream_websocket_reading(ngx_http_request_t *r) u_char *aux, *last; unsigned char opcode; + ngx_http_push_stream_content_subtype_t *subtype = ngx_http_push_stream_match_channel_info_format_and_content_type(r, 1); + ngx_http_push_stream_set_buffer(&ctx->frame->buf, ctx->frame->buf.start, ctx->frame->buf.last, 0); c = r->connection; @@ -398,7 +400,7 @@ ngx_http_push_stream_websocket_reading(ngx_http_request_t *r) ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "sr->request_body->bufs == NULL"); } else { sr->headers_in.content_type = ngx_palloc(sr->pool, sizeof(ngx_table_elt_t)); - sr->headers_in.content_type->value = NGX_HTTP_PUSH_STREAM_APPLICATION_JSON; + sr->headers_in.content_type->value = *subtype->content_type; sr->headers_in.content_length_n = ctx->frame->payload_len; sr->request_body->buf->pos = ctx->frame->payload; sr->request_body->buf->last = ctx->frame->payload + ctx->frame->payload_len; From 7a7a417c97d26c131ca817d9b178e08d7b2504eb Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Thu, 20 Dec 2018 07:53:48 +0500 Subject: [PATCH 07/65] pool --- src/ngx_http_push_stream_module_subscriber.c | 2 +- src/ngx_http_push_stream_rbtree_util.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ngx_http_push_stream_module_subscriber.c b/src/ngx_http_push_stream_module_subscriber.c index 0ca3c728..b4809caf 100644 --- a/src/ngx_http_push_stream_module_subscriber.c +++ b/src/ngx_http_push_stream_module_subscriber.c @@ -638,7 +638,7 @@ ngx_http_push_stream_assing_subscription_to_channel(ngx_slab_pool_t *shpool, ngx subscription->channel_worker_sentinel = worker_subscribers_sentinel; ngx_shmtx_unlock(channel->mutex); - ngx_http_push_stream_send_event(mcf, log, channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_SUBSCRIBED, NULL, subscription->subscriber->request, cf->client_subscribed_request_url); + ngx_http_push_stream_send_event(mcf, log, channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_SUBSCRIBED, subscription->subscriber->request->pool, subscription->subscriber->request, cf->client_subscribed_request_url); return NGX_OK; } diff --git a/src/ngx_http_push_stream_rbtree_util.c b/src/ngx_http_push_stream_rbtree_util.c index d3b2f0c7..ff9819ee 100644 --- a/src/ngx_http_push_stream_rbtree_util.c +++ b/src/ngx_http_push_stream_rbtree_util.c @@ -167,7 +167,7 @@ ngx_http_push_stream_get_channel(ngx_str_t *id, ngx_log_t *log, ngx_http_push_st ngx_shmtx_unlock(&data->channels_queue_mutex); ngx_http_push_stream_loc_conf_t *cf = ngx_http_get_module_loc_conf(r, ngx_http_push_stream_module); - ngx_http_push_stream_send_event(mcf, log, channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CHANNEL_CREATED, NULL, r, cf->channel_created_request_url); + ngx_http_push_stream_send_event(mcf, log, channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CHANNEL_CREATED, r->pool, r, cf->channel_created_request_url); return channel; } From 7ae15ed5e35494c13d1d67e4ac58bb0adfc13486 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Sun, 8 Sep 2019 13:53:03 +0500 Subject: [PATCH 08/65] all_worker_clients_unsubscribed --- include/ngx_http_push_stream_module.h | 1 + src/ngx_http_push_stream_module_setup.c | 11 +++++++++++ src/ngx_http_push_stream_module_utils.c | 12 +++++++++--- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/include/ngx_http_push_stream_module.h b/include/ngx_http_push_stream_module.h index 60210a54..8cb270f9 100644 --- a/include/ngx_http_push_stream_module.h +++ b/include/ngx_http_push_stream_module.h @@ -129,6 +129,7 @@ typedef struct { ngx_http_complex_value_t *allowed_origins; ngx_http_complex_value_t *channel_created_request_url; ngx_http_complex_value_t *channel_destroyed_request_url; + ngx_http_complex_value_t *all_worker_clients_unsubscribed_request_url; ngx_http_complex_value_t *client_subscribed_request_url; ngx_http_complex_value_t *client_unsubscribed_request_url; ngx_http_complex_value_t *client_publish_request_url; diff --git a/src/ngx_http_push_stream_module_setup.c b/src/ngx_http_push_stream_module_setup.c index 491f7b90..382c5559 100644 --- a/src/ngx_http_push_stream_module_setup.c +++ b/src/ngx_http_push_stream_module_setup.c @@ -261,6 +261,12 @@ static ngx_command_t ngx_http_push_stream_commands[] = { NGX_HTTP_LOC_CONF_OFFSET, offsetof(ngx_http_push_stream_loc_conf_t, channel_destroyed_request_url), NULL } , + { ngx_string("push_stream_all_worker_clients_unsubscribed_request"), + NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, + ngx_http_set_complex_value_slot, + NGX_HTTP_LOC_CONF_OFFSET, + offsetof(ngx_http_push_stream_loc_conf_t, all_worker_clients_unsubscribed_request_url), + NULL } , { ngx_string("push_stream_client_subscribed_request"), NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, ngx_http_set_complex_value_slot, @@ -620,6 +626,7 @@ ngx_http_push_stream_create_loc_conf(ngx_conf_t *cf) lcf->allowed_origins = NULL; lcf->channel_created_request_url = NULL; lcf->channel_destroyed_request_url = NULL; + lcf->all_worker_clients_unsubscribed_request_url = NULL; lcf->client_subscribed_request_url = NULL; lcf->client_unsubscribed_request_url = NULL; lcf->client_publish_request_url = NULL; @@ -681,6 +688,10 @@ ngx_http_push_stream_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child) conf->channel_destroyed_request_url = prev->channel_destroyed_request_url ; } + if (conf->all_worker_clients_unsubscribed_request_url == NULL) { + conf->all_worker_clients_unsubscribed_request_url = prev->all_worker_clients_unsubscribed_request_url ; + } + if (conf->client_subscribed_request_url == NULL) { conf->client_subscribed_request_url = prev->client_subscribed_request_url ; } diff --git a/src/ngx_http_push_stream_module_utils.c b/src/ngx_http_push_stream_module_utils.c index a4cd1e16..48c5fa03 100644 --- a/src/ngx_http_push_stream_module_utils.c +++ b/src/ngx_http_push_stream_module_utils.c @@ -116,6 +116,8 @@ ngx_http_push_stream_delete_channels_data(ngx_http_push_stream_shm_data_t *data) ngx_http_push_stream_loc_conf_t *cf = ngx_http_get_module_loc_conf(subscriber->request, ngx_http_push_stream_module); ngx_http_push_stream_send_event(mcf, ngx_cycle->log, subscription->channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_UNSUBSCRIBED, subscriber->request->pool, subscriber->request, cf->client_unsubscribed_request_url); + if (!channel->subscribers) ngx_http_push_stream_send_event(mcf, ngx_cycle->log, subscription->channel, NULL, subscriber->request->pool, subscriber->request, cf->channel_destroyed_request_url); + if (!worker->subscribers) ngx_http_push_stream_send_event(mcf, ngx_cycle->log, subscription->channel, NULL, subscriber->request->pool, subscriber->request, cf->all_worker_clients_unsubscribed_request_url); if (subscriber->longpolling) { ngx_http_push_stream_add_polling_headers(subscriber->request, ngx_time(), 0, subscriber->request->pool); @@ -472,7 +474,7 @@ ngx_http_push_stream_send_event(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t ngx_http_push_stream_shm_data_t *data = mcf->shm_data; ngx_pool_t *temp_pool = received_temp_pool; - if ((mcf->events_channel_id.len > 0) && !channel->for_events) { + if ((mcf->events_channel_id.len > 0) && !channel->for_events && event_type) { if ((temp_pool == NULL) && ((temp_pool = ngx_create_pool(4096, log)) == NULL)) { return NGX_ERROR; } @@ -489,9 +491,11 @@ ngx_http_push_stream_send_event(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t } } - if ((r != NULL) && (uri != NULL)) { + if (r && uri) { + ngx_str_t vv_uri; + ngx_http_push_stream_complex_value(r, uri, &vv_uri); ngx_http_request_t *sr; - if (ngx_http_subrequest(r, &uri->value, &r->args, &sr, NULL, NGX_HTTP_SUBREQUEST_BACKGROUND) != NGX_OK) { + if (ngx_http_subrequest(r, &vv_uri, &r->args, &sr, NULL, NGX_HTTP_SUBREQUEST_BACKGROUND) != NGX_OK) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "ngx_http_subrequest != NGX_OK"); } } @@ -1589,6 +1593,8 @@ ngx_http_push_stream_worker_subscriber_cleanup(ngx_http_push_stream_subscriber_t ngx_shmtx_unlock(subscription->channel->mutex); ngx_http_push_stream_send_event(mcf, ngx_cycle->log, subscription->channel, &NGX_HTTP_PUSH_STREAM_EVENT_TYPE_CLIENT_UNSUBSCRIBED, worker_subscriber->request->pool, worker_subscriber->request, cf->client_unsubscribed_request_url); + if (!subscription->channel->subscribers) ngx_http_push_stream_send_event(mcf, ngx_cycle->log, subscription->channel, NULL, worker_subscriber->request->pool, worker_subscriber->request, cf->channel_destroyed_request_url); + if (!subscription->channel_worker_sentinel->subscribers) ngx_http_push_stream_send_event(mcf, ngx_cycle->log, subscription->channel, NULL, worker_subscriber->request->pool, worker_subscriber->request, cf->all_worker_clients_unsubscribed_request_url); } ngx_shmtx_lock(&shpool->mutex); From de7fa9a8d144865d298aeff43824415cf438be2c Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Fri, 13 Sep 2019 15:32:59 +0500 Subject: [PATCH 09/65] notify --- include/ngx_http_push_stream_module_utils.h | 2 +- src/ngx_http_push_stream_module_utils.c | 17 +++-------------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/include/ngx_http_push_stream_module_utils.h b/include/ngx_http_push_stream_module_utils.h index 812e15b5..4ef31517 100644 --- a/include/ngx_http_push_stream_module_utils.h +++ b/include/ngx_http_push_stream_module_utils.h @@ -264,7 +264,7 @@ static void ngx_http_push_stream_complex_value(ngx_http_request_ ngx_int_t ngx_http_push_stream_add_msg_to_channel(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t *log, ngx_http_push_stream_channel_t *channel, u_char *text, size_t len, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool); -void ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_str_t *text, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool); +ngx_int_t ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_str_t *text, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool); ngx_int_t ngx_http_push_stream_send_event(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t *log, ngx_http_push_stream_channel_t *channel, ngx_str_t *event_id, ngx_pool_t *temp_pool, ngx_http_request_t *r, ngx_http_complex_value_t *uri); static void ngx_http_push_stream_ping_timer_wake_handler(ngx_event_t *ev); diff --git a/src/ngx_http_push_stream_module_utils.c b/src/ngx_http_push_stream_module_utils.c index 48c5fa03..5341c7cd 100644 --- a/src/ngx_http_push_stream_module_utils.c +++ b/src/ngx_http_push_stream_module_utils.c @@ -374,26 +374,15 @@ ngx_http_push_stream_convert_char_to_msg_on_shared(ngx_http_push_stream_main_con return msg; } -void -ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_str_t *text, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool) -{ -// ngx_log_error(NGX_LOG_ERR, log, 0, "id = %V", id); -// ngx_log_error(NGX_LOG_ERR, log, 0, "ngx_http_push_stream_global_shm_zone = %p", ngx_http_push_stream_global_shm_zone); +ngx_int_t ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_str_t *text, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool) { ngx_http_push_stream_global_shm_data_t *global_data = (ngx_http_push_stream_global_shm_data_t *) ngx_http_push_stream_global_shm_zone->data; -// ngx_log_error(NGX_LOG_ERR, log, 0, "global_data = %p", global_data); for (ngx_queue_t *q = ngx_queue_head(&global_data->shm_datas_queue); q != ngx_queue_sentinel(&global_data->shm_datas_queue); q = ngx_queue_next(q)) { ngx_http_push_stream_shm_data_t *data = ngx_queue_data(q, ngx_http_push_stream_shm_data_t, shm_data_queue); -// ngx_log_error(NGX_LOG_ERR, log, 0, "data = %p", data); ngx_http_push_stream_main_conf_t *mcf = data->mcf; -// ngx_log_error(NGX_LOG_ERR, log, 0, "mcf = %p", mcf); ngx_http_push_stream_channel_t *channel = ngx_http_push_stream_find_channel(id, log, mcf); -// ngx_log_error(NGX_LOG_ERR, log, 0, "channel = %p", channel); - if (channel != NULL) { - if (ngx_http_push_stream_add_msg_to_channel(mcf, log, channel, text->data, text->len, event_id, event_type, store_messages, temp_pool) != NGX_OK) { - ngx_log_error(NGX_LOG_ERR, log, 0, "ngx_http_push_stream_add_msg_to_channel != NGX_OK"); - } - } + if (channel) return ngx_http_push_stream_add_msg_to_channel(mcf, log, channel, text->data, text->len, event_id, event_type, store_messages, temp_pool); } + return NGX_DECLINED; } ngx_int_t From 4109952ad83b5fc7d55f123194cf98a30e30b592 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Wed, 18 Sep 2019 12:56:21 +0500 Subject: [PATCH 10/65] Delete from other nginx modeles --- include/ngx_http_push_stream_module_utils.h | 3 ++- src/ngx_http_push_stream_module_utils.c | 19 +++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/include/ngx_http_push_stream_module_utils.h b/include/ngx_http_push_stream_module_utils.h index 4ef31517..d0ea792a 100644 --- a/include/ngx_http_push_stream_module_utils.h +++ b/include/ngx_http_push_stream_module_utils.h @@ -264,7 +264,7 @@ static void ngx_http_push_stream_complex_value(ngx_http_request_ ngx_int_t ngx_http_push_stream_add_msg_to_channel(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t *log, ngx_http_push_stream_channel_t *channel, u_char *text, size_t len, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool); -ngx_int_t ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_str_t *text, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool); +ngx_int_t ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_str_t *text, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *pool); ngx_int_t ngx_http_push_stream_send_event(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t *log, ngx_http_push_stream_channel_t *channel, ngx_str_t *event_id, ngx_pool_t *temp_pool, ngx_http_request_t *r, ngx_http_complex_value_t *uri); static void ngx_http_push_stream_ping_timer_wake_handler(ngx_event_t *ev); @@ -283,6 +283,7 @@ static ngx_str_t * ngx_http_push_stream_create_str(ngx_pool_t *pool, ui static void ngx_http_push_stream_throw_the_message_away(ngx_http_push_stream_msg_t *msg, ngx_http_push_stream_shm_data_t *data); static ngx_int_t ngx_http_push_stream_delete_channel(ngx_http_push_stream_main_conf_t *mcf, ngx_http_push_stream_channel_t *channel, u_char *text, size_t len, ngx_pool_t *temp_pool); +ngx_int_t ngx_http_push_stream_delete_channel_my(ngx_log_t *log, ngx_str_t *id, u_char *text, size_t len, ngx_pool_t *pool); static void ngx_http_push_stream_collect_expired_messages_data(ngx_http_push_stream_shm_data_t *data, ngx_flag_t force); static void ngx_http_push_stream_collect_expired_messages_and_empty_channels(ngx_flag_t force); static void ngx_http_push_stream_free_message_memory(ngx_slab_pool_t *shpool, ngx_http_push_stream_msg_t *msg); diff --git a/src/ngx_http_push_stream_module_utils.c b/src/ngx_http_push_stream_module_utils.c index 5341c7cd..718a1ac0 100644 --- a/src/ngx_http_push_stream_module_utils.c +++ b/src/ngx_http_push_stream_module_utils.c @@ -374,13 +374,13 @@ ngx_http_push_stream_convert_char_to_msg_on_shared(ngx_http_push_stream_main_con return msg; } -ngx_int_t ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_str_t *text, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool) { +ngx_int_t ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_str_t *text, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *pool) { ngx_http_push_stream_global_shm_data_t *global_data = (ngx_http_push_stream_global_shm_data_t *) ngx_http_push_stream_global_shm_zone->data; for (ngx_queue_t *q = ngx_queue_head(&global_data->shm_datas_queue); q != ngx_queue_sentinel(&global_data->shm_datas_queue); q = ngx_queue_next(q)) { ngx_http_push_stream_shm_data_t *data = ngx_queue_data(q, ngx_http_push_stream_shm_data_t, shm_data_queue); ngx_http_push_stream_main_conf_t *mcf = data->mcf; ngx_http_push_stream_channel_t *channel = ngx_http_push_stream_find_channel(id, log, mcf); - if (channel) return ngx_http_push_stream_add_msg_to_channel(mcf, log, channel, text->data, text->len, event_id, event_type, store_messages, temp_pool); + if (channel) return ngx_http_push_stream_add_msg_to_channel(mcf, log, channel, text->data, text->len, event_id, event_type, store_messages, pool); } return NGX_DECLINED; } @@ -957,6 +957,21 @@ ngx_http_push_stream_send_websocket_close_frame(ngx_http_request_t *r, ngx_uint_ return (rc == NGX_ERROR) ? NGX_DONE : NGX_OK; } +ngx_int_t ngx_http_push_stream_delete_channel_my(ngx_log_t *log, ngx_str_t *id, u_char *text, size_t len, ngx_pool_t *pool) { + ngx_http_push_stream_global_shm_data_t *global_data = (ngx_http_push_stream_global_shm_data_t *) ngx_http_push_stream_global_shm_zone->data; + for (ngx_queue_t *q = ngx_queue_head(&global_data->shm_datas_queue); q != ngx_queue_sentinel(&global_data->shm_datas_queue); q = ngx_queue_next(q)) { + ngx_http_push_stream_shm_data_t *data = ngx_queue_data(q, ngx_http_push_stream_shm_data_t, shm_data_queue); + ngx_http_push_stream_main_conf_t *mcf = data->mcf; + ngx_http_push_stream_channel_t *channel = ngx_http_push_stream_find_channel(id, log, mcf); + if (channel) { + if (!text) text = mcf->channel_deleted_message_text.data; + if (!len) len = mcf->channel_deleted_message_text.len; + return ngx_http_push_stream_delete_channel(mcf, channel, text, len, pool); + } + } + return NGX_DECLINED; +} + static ngx_int_t ngx_http_push_stream_delete_channel(ngx_http_push_stream_main_conf_t *mcf, ngx_http_push_stream_channel_t *channel, u_char *text, size_t len, ngx_pool_t *temp_pool) { From 58814caf593f310af1e7a0528ef2eb8c4897adb3 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Fri, 20 Sep 2019 11:17:25 +0500 Subject: [PATCH 11/65] temp_pool --- include/ngx_http_push_stream_module_utils.h | 4 ++-- src/ngx_http_push_stream_module_utils.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/ngx_http_push_stream_module_utils.h b/include/ngx_http_push_stream_module_utils.h index d0ea792a..0934d145 100644 --- a/include/ngx_http_push_stream_module_utils.h +++ b/include/ngx_http_push_stream_module_utils.h @@ -264,7 +264,7 @@ static void ngx_http_push_stream_complex_value(ngx_http_request_ ngx_int_t ngx_http_push_stream_add_msg_to_channel(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t *log, ngx_http_push_stream_channel_t *channel, u_char *text, size_t len, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool); -ngx_int_t ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_str_t *text, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *pool); +ngx_int_t ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_str_t *text, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool); ngx_int_t ngx_http_push_stream_send_event(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t *log, ngx_http_push_stream_channel_t *channel, ngx_str_t *event_id, ngx_pool_t *temp_pool, ngx_http_request_t *r, ngx_http_complex_value_t *uri); static void ngx_http_push_stream_ping_timer_wake_handler(ngx_event_t *ev); @@ -283,7 +283,7 @@ static ngx_str_t * ngx_http_push_stream_create_str(ngx_pool_t *pool, ui static void ngx_http_push_stream_throw_the_message_away(ngx_http_push_stream_msg_t *msg, ngx_http_push_stream_shm_data_t *data); static ngx_int_t ngx_http_push_stream_delete_channel(ngx_http_push_stream_main_conf_t *mcf, ngx_http_push_stream_channel_t *channel, u_char *text, size_t len, ngx_pool_t *temp_pool); -ngx_int_t ngx_http_push_stream_delete_channel_my(ngx_log_t *log, ngx_str_t *id, u_char *text, size_t len, ngx_pool_t *pool); +ngx_int_t ngx_http_push_stream_delete_channel_my(ngx_log_t *log, ngx_str_t *id, u_char *text, size_t len, ngx_pool_t *temp_pool); static void ngx_http_push_stream_collect_expired_messages_data(ngx_http_push_stream_shm_data_t *data, ngx_flag_t force); static void ngx_http_push_stream_collect_expired_messages_and_empty_channels(ngx_flag_t force); static void ngx_http_push_stream_free_message_memory(ngx_slab_pool_t *shpool, ngx_http_push_stream_msg_t *msg); diff --git a/src/ngx_http_push_stream_module_utils.c b/src/ngx_http_push_stream_module_utils.c index 718a1ac0..6faa2eeb 100644 --- a/src/ngx_http_push_stream_module_utils.c +++ b/src/ngx_http_push_stream_module_utils.c @@ -374,13 +374,13 @@ ngx_http_push_stream_convert_char_to_msg_on_shared(ngx_http_push_stream_main_con return msg; } -ngx_int_t ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_str_t *text, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *pool) { +ngx_int_t ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_str_t *text, ngx_str_t *event_id, ngx_str_t *event_type, ngx_flag_t store_messages, ngx_pool_t *temp_pool) { ngx_http_push_stream_global_shm_data_t *global_data = (ngx_http_push_stream_global_shm_data_t *) ngx_http_push_stream_global_shm_zone->data; for (ngx_queue_t *q = ngx_queue_head(&global_data->shm_datas_queue); q != ngx_queue_sentinel(&global_data->shm_datas_queue); q = ngx_queue_next(q)) { ngx_http_push_stream_shm_data_t *data = ngx_queue_data(q, ngx_http_push_stream_shm_data_t, shm_data_queue); ngx_http_push_stream_main_conf_t *mcf = data->mcf; ngx_http_push_stream_channel_t *channel = ngx_http_push_stream_find_channel(id, log, mcf); - if (channel) return ngx_http_push_stream_add_msg_to_channel(mcf, log, channel, text->data, text->len, event_id, event_type, store_messages, pool); + if (channel) return ngx_http_push_stream_add_msg_to_channel(mcf, log, channel, text->data, text->len, event_id, event_type, store_messages, temp_pool); } return NGX_DECLINED; } @@ -957,7 +957,7 @@ ngx_http_push_stream_send_websocket_close_frame(ngx_http_request_t *r, ngx_uint_ return (rc == NGX_ERROR) ? NGX_DONE : NGX_OK; } -ngx_int_t ngx_http_push_stream_delete_channel_my(ngx_log_t *log, ngx_str_t *id, u_char *text, size_t len, ngx_pool_t *pool) { +ngx_int_t ngx_http_push_stream_delete_channel_my(ngx_log_t *log, ngx_str_t *id, u_char *text, size_t len, ngx_pool_t *temp_pool) { ngx_http_push_stream_global_shm_data_t *global_data = (ngx_http_push_stream_global_shm_data_t *) ngx_http_push_stream_global_shm_zone->data; for (ngx_queue_t *q = ngx_queue_head(&global_data->shm_datas_queue); q != ngx_queue_sentinel(&global_data->shm_datas_queue); q = ngx_queue_next(q)) { ngx_http_push_stream_shm_data_t *data = ngx_queue_data(q, ngx_http_push_stream_shm_data_t, shm_data_queue); @@ -966,7 +966,7 @@ ngx_int_t ngx_http_push_stream_delete_channel_my(ngx_log_t *log, ngx_str_t *id, if (channel) { if (!text) text = mcf->channel_deleted_message_text.data; if (!len) len = mcf->channel_deleted_message_text.len; - return ngx_http_push_stream_delete_channel(mcf, channel, text, len, pool); + return ngx_http_push_stream_delete_channel(mcf, channel, text, len, temp_pool); } } return NGX_DECLINED; From a9117a420e3a8eca436be565bbde8be04045e010 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Wed, 25 Mar 2020 09:51:49 +0500 Subject: [PATCH 12/65] include --- config | 2 +- include/ngx_http_push_stream_module_ipc.h | 4 ++-- include/ngx_http_push_stream_module_publisher.h | 2 +- include/ngx_http_push_stream_module_setup.h | 14 +++++++------- include/ngx_http_push_stream_module_utils.h | 4 ++-- include/ngx_http_push_stream_module_websocket.h | 4 ++-- src/ngx_http_push_stream_module.c | 16 ++++++++-------- src/ngx_http_push_stream_module.h | 1 + src/ngx_http_push_stream_module_ipc.c | 2 +- src/ngx_http_push_stream_module_ipc.h | 1 + src/ngx_http_push_stream_module_publisher.c | 4 ++-- src/ngx_http_push_stream_module_publisher.h | 1 + src/ngx_http_push_stream_module_setup.c | 2 +- src/ngx_http_push_stream_module_setup.h | 1 + src/ngx_http_push_stream_module_subscriber.c | 2 +- src/ngx_http_push_stream_module_subscriber.h | 1 + src/ngx_http_push_stream_module_utils.c | 2 +- src/ngx_http_push_stream_module_utils.h | 1 + src/ngx_http_push_stream_module_version.h | 1 + src/ngx_http_push_stream_module_websocket.c | 2 +- src/ngx_http_push_stream_module_websocket.h | 1 + src/ngx_http_push_stream_rbtree_util.c | 2 +- src/ngx_http_push_stream_rbtree_util.h | 1 + 23 files changed, 40 insertions(+), 31 deletions(-) create mode 120000 src/ngx_http_push_stream_module.h create mode 120000 src/ngx_http_push_stream_module_ipc.h create mode 120000 src/ngx_http_push_stream_module_publisher.h create mode 120000 src/ngx_http_push_stream_module_setup.h create mode 120000 src/ngx_http_push_stream_module_subscriber.h create mode 120000 src/ngx_http_push_stream_module_utils.h create mode 120000 src/ngx_http_push_stream_module_version.h create mode 120000 src/ngx_http_push_stream_module_websocket.h create mode 120000 src/ngx_http_push_stream_rbtree_util.h diff --git a/config b/config index e82a0828..c01c30b6 100644 --- a/config +++ b/config @@ -1,5 +1,5 @@ ngx_addon_name=ngx_http_push_stream_module -CORE_INCS="$CORE_INCS ${ngx_addon_dir}/src ${ngx_addon_dir}/include" +#CORE_INCS="$CORE_INCS ${ngx_addon_dir}/src ${ngx_addon_dir}/include" if test -n "$ngx_module_link"; then ngx_module_type=HTTP diff --git a/include/ngx_http_push_stream_module_ipc.h b/include/ngx_http_push_stream_module_ipc.h index 25a0d1aa..c9a2b5c9 100644 --- a/include/ngx_http_push_stream_module_ipc.h +++ b/include/ngx_http_push_stream_module_ipc.h @@ -34,8 +34,8 @@ #ifndef NGX_HTTP_PUSH_STREAM_MODULE_IPC_H_ #define NGX_HTTP_PUSH_STREAM_MODULE_IPC_H_ -#include -#include +#include "ngx_http_push_stream_module.h" +#include "ngx_http_push_stream_module_subscriber.h" #include diff --git a/include/ngx_http_push_stream_module_publisher.h b/include/ngx_http_push_stream_module_publisher.h index ee9a41b9..99b04979 100644 --- a/include/ngx_http_push_stream_module_publisher.h +++ b/include/ngx_http_push_stream_module_publisher.h @@ -26,7 +26,7 @@ #ifndef NGX_HTTP_PUSH_STREAM_MODULE_PUBLISHER_H_ #define NGX_HTTP_PUSH_STREAM_MODULE_PUBLISHER_H_ -#include +#include "ngx_http_push_stream_module.h" static ngx_int_t ngx_http_push_stream_channels_statistics_handler(ngx_http_request_t *r); static ngx_int_t ngx_http_push_stream_publisher_handler(ngx_http_request_t *r); diff --git a/include/ngx_http_push_stream_module_setup.h b/include/ngx_http_push_stream_module_setup.h index 1cae8ad8..d41a45a4 100644 --- a/include/ngx_http_push_stream_module_setup.h +++ b/include/ngx_http_push_stream_module_setup.h @@ -26,13 +26,13 @@ #ifndef NGX_HTTP_PUSH_STREAM_MODULE_SETUP_H_ #define NGX_HTTP_PUSH_STREAM_MODULE_SETUP_H_ -#include -#include -#include -#include -#include -#include -#include +#include "ngx_http_push_stream_module.h" +#include "ngx_http_push_stream_rbtree_util.h" +#include "ngx_http_push_stream_module_utils.h" +#include "ngx_http_push_stream_module_ipc.h" +#include "ngx_http_push_stream_module_publisher.h" +#include "ngx_http_push_stream_module_subscriber.h" +#include "ngx_http_push_stream_module_websocket.h" #define NGX_HTTP_PUSH_STREAM_MESSAGE_BUFFER_CLEANUP_INTERVAL 5000 // 5 seconds static time_t NGX_HTTP_PUSH_STREAM_DEFAULT_SHM_MEMORY_CLEANUP_OBJECTS_TTL = 10; // 10 seconds diff --git a/include/ngx_http_push_stream_module_utils.h b/include/ngx_http_push_stream_module_utils.h index 0934d145..bad507c1 100644 --- a/include/ngx_http_push_stream_module_utils.h +++ b/include/ngx_http_push_stream_module_utils.h @@ -26,8 +26,8 @@ #ifndef NGX_HTTP_PUSH_STREAM_MODULE_UTILS_H_ #define NGX_HTTP_PUSH_STREAM_MODULE_UTILS_H_ -#include -#include +#include "ngx_http_push_stream_module.h" +#include "ngx_http_push_stream_module_ipc.h" typedef struct { ngx_queue_t queue; diff --git a/include/ngx_http_push_stream_module_websocket.h b/include/ngx_http_push_stream_module_websocket.h index e822a0a1..86804a4a 100644 --- a/include/ngx_http_push_stream_module_websocket.h +++ b/include/ngx_http_push_stream_module_websocket.h @@ -30,8 +30,8 @@ #include #endif -#include -#include +#include "ngx_http_push_stream_module_utils.h" +#include "ngx_http_push_stream_module_subscriber.h" static ngx_int_t ngx_http_push_stream_websocket_handler(ngx_http_request_t *r); diff --git a/src/ngx_http_push_stream_module.c b/src/ngx_http_push_stream_module.c index 4234e378..0b3d7ca5 100644 --- a/src/ngx_http_push_stream_module.c +++ b/src/ngx_http_push_stream_module.c @@ -23,14 +23,14 @@ * Authors: Wandenberg Peixoto , Rogério Carvalho Schneider */ -#include -#include -#include -#include -#include -#include -#include -#include +#include "ngx_http_push_stream_module.h" +#include "ngx_http_push_stream_module_setup.c" +#include "ngx_http_push_stream_rbtree_util.c" +#include "ngx_http_push_stream_module_utils.c" +#include "ngx_http_push_stream_module_ipc.c" +#include "ngx_http_push_stream_module_publisher.c" +#include "ngx_http_push_stream_module_subscriber.c" +#include "ngx_http_push_stream_module_websocket.c" static ngx_str_t * ngx_http_push_stream_channel_info_formatted(ngx_pool_t *pool, const ngx_str_t *format, ngx_str_t *id, ngx_uint_t published_messages, ngx_uint_t stored_messages, ngx_uint_t subscribers) diff --git a/src/ngx_http_push_stream_module.h b/src/ngx_http_push_stream_module.h new file mode 120000 index 00000000..c312d244 --- /dev/null +++ b/src/ngx_http_push_stream_module.h @@ -0,0 +1 @@ +../include/ngx_http_push_stream_module.h \ No newline at end of file diff --git a/src/ngx_http_push_stream_module_ipc.c b/src/ngx_http_push_stream_module_ipc.c index caa8a2fb..5db219a4 100644 --- a/src/ngx_http_push_stream_module_ipc.c +++ b/src/ngx_http_push_stream_module_ipc.c @@ -31,7 +31,7 @@ * Modifications by: Wandenberg Peixoto , Rogério Carvalho Schneider */ -#include +#include "ngx_http_push_stream_module_ipc.h" void ngx_http_push_stream_ipc_init_worker_data(ngx_http_push_stream_shm_data_t *data); static ngx_inline void ngx_http_push_stream_census_worker_subscribers_data(ngx_http_push_stream_shm_data_t *data); diff --git a/src/ngx_http_push_stream_module_ipc.h b/src/ngx_http_push_stream_module_ipc.h new file mode 120000 index 00000000..27d92384 --- /dev/null +++ b/src/ngx_http_push_stream_module_ipc.h @@ -0,0 +1 @@ +../include/ngx_http_push_stream_module_ipc.h \ No newline at end of file diff --git a/src/ngx_http_push_stream_module_publisher.c b/src/ngx_http_push_stream_module_publisher.c index 11a4b84f..7023387c 100644 --- a/src/ngx_http_push_stream_module_publisher.c +++ b/src/ngx_http_push_stream_module_publisher.c @@ -23,8 +23,8 @@ * Authors: Wandenberg Peixoto , Rogério Carvalho Schneider */ -#include -#include +#include "ngx_http_push_stream_module_publisher.h" +#include "ngx_http_push_stream_module_version.h" static ngx_int_t ngx_http_push_stream_publisher_handle_after_read_body(ngx_http_request_t *r, ngx_http_client_body_handler_pt post_handler); diff --git a/src/ngx_http_push_stream_module_publisher.h b/src/ngx_http_push_stream_module_publisher.h new file mode 120000 index 00000000..46f7f3c5 --- /dev/null +++ b/src/ngx_http_push_stream_module_publisher.h @@ -0,0 +1 @@ +../include/ngx_http_push_stream_module_publisher.h \ No newline at end of file diff --git a/src/ngx_http_push_stream_module_setup.c b/src/ngx_http_push_stream_module_setup.c index 382c5559..a84891de 100644 --- a/src/ngx_http_push_stream_module_setup.c +++ b/src/ngx_http_push_stream_module_setup.c @@ -23,7 +23,7 @@ * Authors: Wandenberg Peixoto , Rogério Carvalho Schneider */ -#include +#include "ngx_http_push_stream_module_setup.h" ngx_uint_t ngx_http_push_stream_padding_max_len = 0; ngx_flag_t ngx_http_push_stream_enabled = 0; diff --git a/src/ngx_http_push_stream_module_setup.h b/src/ngx_http_push_stream_module_setup.h new file mode 120000 index 00000000..bb5c2648 --- /dev/null +++ b/src/ngx_http_push_stream_module_setup.h @@ -0,0 +1 @@ +../include/ngx_http_push_stream_module_setup.h \ No newline at end of file diff --git a/src/ngx_http_push_stream_module_subscriber.c b/src/ngx_http_push_stream_module_subscriber.c index 2b4c262e..1cf80083 100644 --- a/src/ngx_http_push_stream_module_subscriber.c +++ b/src/ngx_http_push_stream_module_subscriber.c @@ -23,7 +23,7 @@ * Authors: Wandenberg Peixoto , Rogério Carvalho Schneider */ -#include +#include "ngx_http_push_stream_module_subscriber.h" static ngx_int_t ngx_http_push_stream_subscriber_assign_channel(ngx_http_push_stream_main_conf_t *mcf, ngx_http_push_stream_loc_conf_t *cf, ngx_http_request_t *r, ngx_http_push_stream_requested_channel_t *requested_channel, time_t if_modified_since, ngx_int_t tag, ngx_str_t *last_event_id, ngx_http_push_stream_subscriber_t *subscriber, ngx_pool_t *temp_pool); static ngx_http_push_stream_subscriber_t *ngx_http_push_stream_subscriber_prepare_request_to_keep_connected(ngx_http_request_t *r); diff --git a/src/ngx_http_push_stream_module_subscriber.h b/src/ngx_http_push_stream_module_subscriber.h new file mode 120000 index 00000000..391abcd6 --- /dev/null +++ b/src/ngx_http_push_stream_module_subscriber.h @@ -0,0 +1 @@ +../include/ngx_http_push_stream_module_subscriber.h \ No newline at end of file diff --git a/src/ngx_http_push_stream_module_utils.c b/src/ngx_http_push_stream_module_utils.c index 6faa2eeb..b4d38312 100644 --- a/src/ngx_http_push_stream_module_utils.c +++ b/src/ngx_http_push_stream_module_utils.c @@ -23,7 +23,7 @@ * Authors: Wandenberg Peixoto , Rogério Carvalho Schneider */ -#include +#include "ngx_http_push_stream_module_utils.h" static void nxg_http_push_stream_free_channel_memory(ngx_slab_pool_t *shpool, ngx_http_push_stream_channel_t *channel); static void ngx_http_push_stream_run_cleanup_pool_handler(ngx_pool_t *p, ngx_pool_cleanup_pt handler); diff --git a/src/ngx_http_push_stream_module_utils.h b/src/ngx_http_push_stream_module_utils.h new file mode 120000 index 00000000..e880cd05 --- /dev/null +++ b/src/ngx_http_push_stream_module_utils.h @@ -0,0 +1 @@ +../include/ngx_http_push_stream_module_utils.h \ No newline at end of file diff --git a/src/ngx_http_push_stream_module_version.h b/src/ngx_http_push_stream_module_version.h new file mode 120000 index 00000000..575ea7dd --- /dev/null +++ b/src/ngx_http_push_stream_module_version.h @@ -0,0 +1 @@ +../include/ngx_http_push_stream_module_version.h \ No newline at end of file diff --git a/src/ngx_http_push_stream_module_websocket.c b/src/ngx_http_push_stream_module_websocket.c index 60e4461e..3d11b1e5 100644 --- a/src/ngx_http_push_stream_module_websocket.c +++ b/src/ngx_http_push_stream_module_websocket.c @@ -23,7 +23,7 @@ * Authors: Wandenberg Peixoto , Rogério Carvalho Schneider */ -#include +#include "ngx_http_push_stream_module_websocket.h" static ngx_int_t ngx_http_push_stream_post_subrequest_handler(ngx_http_request_t *r, void *data, ngx_int_t rc); ngx_str_t *ngx_http_push_stream_generate_websocket_accept_value(ngx_http_request_t *r, ngx_str_t *sec_key, ngx_pool_t *temp_pool); diff --git a/src/ngx_http_push_stream_module_websocket.h b/src/ngx_http_push_stream_module_websocket.h new file mode 120000 index 00000000..18feec18 --- /dev/null +++ b/src/ngx_http_push_stream_module_websocket.h @@ -0,0 +1 @@ +../include/ngx_http_push_stream_module_websocket.h \ No newline at end of file diff --git a/src/ngx_http_push_stream_rbtree_util.c b/src/ngx_http_push_stream_rbtree_util.c index ff9819ee..95b197eb 100644 --- a/src/ngx_http_push_stream_rbtree_util.c +++ b/src/ngx_http_push_stream_rbtree_util.c @@ -31,7 +31,7 @@ * Modifications by: Wandenberg Peixoto , Rogério Carvalho Schneider */ -#include +#include "ngx_http_push_stream_rbtree_util.h" static ngx_http_push_stream_channel_t * ngx_http_push_stream_find_channel_on_tree(ngx_str_t *id, ngx_log_t *log, ngx_rbtree_t *tree) diff --git a/src/ngx_http_push_stream_rbtree_util.h b/src/ngx_http_push_stream_rbtree_util.h new file mode 120000 index 00000000..e91d7623 --- /dev/null +++ b/src/ngx_http_push_stream_rbtree_util.h @@ -0,0 +1 @@ +../include/ngx_http_push_stream_rbtree_util.h \ No newline at end of file From 71cc50ef8d6084996a9dc23759c6930d19c59144 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Aug 2020 10:40:28 +0000 Subject: [PATCH 13/65] Bump rack from 2.2.2 to 2.2.3 in /misc Bumps [rack](https://github.com/rack/rack) from 2.2.2 to 2.2.3. - [Release notes](https://github.com/rack/rack/releases) - [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md) - [Commits](https://github.com/rack/rack/compare/v2.2.2...2.2.3) Signed-off-by: dependabot[bot] --- misc/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/Gemfile.lock b/misc/Gemfile.lock index a7389302..d8832560 100644 --- a/misc/Gemfile.lock +++ b/misc/Gemfile.lock @@ -58,7 +58,7 @@ GEM Platform (>= 0.4.0) open4 (>= 0.4.0) public_suffix (4.0.4) - rack (2.2.2) + rack (2.2.3) rake (13.0.1) rb-fsevent (0.10.3) rb-inotify (0.10.1) From 4f663a19d6593399d873419b48777324b35a1f95 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Tue, 1 Sep 2020 09:12:12 +0500 Subject: [PATCH 14/65] up --- src/ngx_http_push_stream_module_utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ngx_http_push_stream_module_utils.c b/src/ngx_http_push_stream_module_utils.c index b6811736..eb770de8 100644 --- a/src/ngx_http_push_stream_module_utils.c +++ b/src/ngx_http_push_stream_module_utils.c @@ -490,7 +490,7 @@ ngx_http_push_stream_send_event(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t ngx_str_t vv_uri; ngx_http_push_stream_complex_value(r, uri, &vv_uri); ngx_http_request_t *sr; - if (ngx_http_subrequest(r, &vv_uri, &r->args, &sr, NULL, NGX_HTTP_SUBREQUEST_BACKGROUND) != NGX_OK) { + if (ngx_http_subrequest(r, &vv_uri, &r->args, &sr, NULL, NGX_HTTP_SUBREQUEST_IN_MEMORY|NGX_HTTP_SUBREQUEST_BACKGROUND) != NGX_OK) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "ngx_http_subrequest != NGX_OK"); } } From 8623a2bbf3d4b7d1f36c9629b9edb392ccb9b802 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Tue, 18 May 2021 11:15:54 +0500 Subject: [PATCH 15/65] allow don't send same message twice and more --- src/ngx_http_push_stream_module_utils.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/ngx_http_push_stream_module_utils.c b/src/ngx_http_push_stream_module_utils.c index eb770de8..1b624a2e 100644 --- a/src/ngx_http_push_stream_module_utils.c +++ b/src/ngx_http_push_stream_module_utils.c @@ -386,7 +386,12 @@ ngx_int_t ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t * ngx_http_push_stream_shm_data_t *data = ngx_queue_data(q, ngx_http_push_stream_shm_data_t, shm_data_queue); ngx_http_push_stream_main_conf_t *mcf = data->mcf; ngx_http_push_stream_channel_t *channel = ngx_http_push_stream_find_channel(id, log, mcf); - if (channel) return ngx_http_push_stream_add_msg_to_channel(mcf, log, channel, text->data, text->len, event_id, event_type, store_messages, temp_pool); + if (!channel) continue; + if (store_messages) for (ngx_queue_t *q = ngx_queue_head(&channel->message_queue); q != ngx_queue_sentinel(&channel->message_queue); q = ngx_queue_next(q)) { + ngx_http_push_stream_msg_t *message = ngx_queue_data(q, ngx_http_push_stream_msg_t, queue); + if (message->raw.len == text->len && !ngx_strncmp(message->raw.data, text->data, text->len)) return NGX_OK; + } + return ngx_http_push_stream_add_msg_to_channel(mcf, log, channel, text->data, text->len, event_id, event_type, store_messages, temp_pool); } return NGX_DECLINED; } @@ -969,11 +974,10 @@ ngx_int_t ngx_http_push_stream_delete_channel_my(ngx_log_t *log, ngx_str_t *id, ngx_http_push_stream_shm_data_t *data = ngx_queue_data(q, ngx_http_push_stream_shm_data_t, shm_data_queue); ngx_http_push_stream_main_conf_t *mcf = data->mcf; ngx_http_push_stream_channel_t *channel = ngx_http_push_stream_find_channel(id, log, mcf); - if (channel) { - if (!text) text = mcf->channel_deleted_message_text.data; - if (!len) len = mcf->channel_deleted_message_text.len; - return ngx_http_push_stream_delete_channel(mcf, channel, text, len, temp_pool); - } + if (!channel) continue; + if (!text) text = mcf->channel_deleted_message_text.data; + if (!len) len = mcf->channel_deleted_message_text.len; + return ngx_http_push_stream_delete_channel(mcf, channel, text, len, temp_pool); } return NGX_DECLINED; } From d601a75cf666b263738dee27003fb9ce98f8fd8e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 May 2021 07:12:25 +0000 Subject: [PATCH 16/65] Bump nokogiri from 1.10.9 to 1.11.4 in /misc Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.10.9 to 1.11.4. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.10.9...v1.11.4) Signed-off-by: dependabot[bot] --- misc/Gemfile.lock | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/misc/Gemfile.lock b/misc/Gemfile.lock index d8832560..94bf1331 100644 --- a/misc/Gemfile.lock +++ b/misc/Gemfile.lock @@ -43,14 +43,15 @@ GEM listen (3.2.1) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - mini_portile2 (2.4.0) + mini_portile2 (2.5.1) multi_json (1.14.1) net-http-persistent (3.1.0) connection_pool (~> 2.2) nginx_test_helper (0.4.1) popen4 - nokogiri (1.10.9) - mini_portile2 (~> 2.4.0) + nokogiri (1.11.4) + mini_portile2 (~> 2.5.0) + racc (~> 1.4) open4 (1.3.4) optimist (3.0.0) phantomjs (2.1.1.0) @@ -58,6 +59,7 @@ GEM Platform (>= 0.4.0) open4 (>= 0.4.0) public_suffix (4.0.4) + racc (1.5.2) rack (2.2.3) rake (13.0.1) rb-fsevent (0.10.3) From 0aef09ee0535470ad19c0a9fe9a1c2d5071ae1dd Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Wed, 19 May 2021 08:14:52 +0500 Subject: [PATCH 17/65] return done if message already sent --- src/ngx_http_push_stream_module_utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ngx_http_push_stream_module_utils.c b/src/ngx_http_push_stream_module_utils.c index 1b624a2e..4c9a9677 100644 --- a/src/ngx_http_push_stream_module_utils.c +++ b/src/ngx_http_push_stream_module_utils.c @@ -389,7 +389,7 @@ ngx_int_t ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t * if (!channel) continue; if (store_messages) for (ngx_queue_t *q = ngx_queue_head(&channel->message_queue); q != ngx_queue_sentinel(&channel->message_queue); q = ngx_queue_next(q)) { ngx_http_push_stream_msg_t *message = ngx_queue_data(q, ngx_http_push_stream_msg_t, queue); - if (message->raw.len == text->len && !ngx_strncmp(message->raw.data, text->data, text->len)) return NGX_OK; + if (message->raw.len == text->len && !ngx_strncmp(message->raw.data, text->data, text->len)) return NGX_DONE; } return ngx_http_push_stream_add_msg_to_channel(mcf, log, channel, text->data, text->len, event_id, event_type, store_messages, temp_pool); } From 5ab6ad88225338d0ecbe48be1c9382373a0a4b8c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 May 2021 18:20:36 +0000 Subject: [PATCH 18/65] Bump em-http-request from 1.1.5 to 1.1.7 in /misc Bumps [em-http-request](https://github.com/igrigorik/em-http-request) from 1.1.5 to 1.1.7. - [Release notes](https://github.com/igrigorik/em-http-request/releases) - [Changelog](https://github.com/igrigorik/em-http-request/blob/master/Changelog.md) - [Commits](https://github.com/igrigorik/em-http-request/compare/v1.1.5...v1.1.7) Signed-off-by: dependabot[bot] --- misc/Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/misc/Gemfile.lock b/misc/Gemfile.lock index 94bf1331..91a3243f 100644 --- a/misc/Gemfile.lock +++ b/misc/Gemfile.lock @@ -13,7 +13,7 @@ GEM em-eventsource (0.3.1) em-http-request (~> 1.0) eventmachine (~> 1.0) - em-http-request (1.1.5) + em-http-request (1.1.7) addressable (>= 2.3.4) cookiejar (!= 0.3.1) em-socksify (>= 0.3) @@ -58,7 +58,7 @@ GEM popen4 (0.1.2) Platform (>= 0.4.0) open4 (>= 0.4.0) - public_suffix (4.0.4) + public_suffix (4.0.6) racc (1.5.2) rack (2.2.3) rake (13.0.1) From 3db601cb1d236d136ec76322c9d984d8b8cbd760 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Tue, 8 Jun 2021 12:36:14 +0500 Subject: [PATCH 19/65] static --- src/ngx_http_push_stream_module_utils.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ngx_http_push_stream_module_utils.c b/src/ngx_http_push_stream_module_utils.c index 4c9a9677..fe3248b3 100644 --- a/src/ngx_http_push_stream_module_utils.c +++ b/src/ngx_http_push_stream_module_utils.c @@ -148,7 +148,7 @@ ngx_http_push_stream_delete_channels_data(ngx_http_push_stream_shm_data_t *data) ngx_shmtx_unlock(&data->channels_to_delete_mutex); } -void +static void ngx_http_push_stream_collect_deleted_channels_data(ngx_http_push_stream_shm_data_t *data) { ngx_http_push_stream_main_conf_t *mcf = data->mcf; @@ -245,7 +245,7 @@ ngx_http_push_stream_cleanup_shutting_down_worker_data(ngx_http_push_stream_shm_ ngx_http_push_stream_clean_worker_data(data); } -ngx_uint_t +static ngx_uint_t ngx_http_push_stream_apply_text_template(ngx_str_t **dst_value, ngx_str_t **dst_message, ngx_str_t *text, const ngx_str_t *template, const ngx_str_t *token, ngx_slab_pool_t *shpool, ngx_pool_t *temp_pool) { if (text != NULL) { @@ -683,7 +683,7 @@ ngx_http_push_stream_get_buf(ngx_http_request_t *r) } -ngx_int_t +static ngx_int_t ngx_http_push_stream_output_filter(ngx_http_request_t *r, ngx_chain_t *in) { ngx_http_core_loc_conf_t *clcf; From 115d7a9e1b2f6e2bbd509381128e676411853ab5 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Tue, 8 Jun 2021 12:56:06 +0500 Subject: [PATCH 20/65] fix --- include/ngx_http_push_stream_module_utils.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/ngx_http_push_stream_module_utils.h b/include/ngx_http_push_stream_module_utils.h index bad507c1..5347af7a 100644 --- a/include/ngx_http_push_stream_module_utils.h +++ b/include/ngx_http_push_stream_module_utils.h @@ -253,6 +253,7 @@ static ngx_int_t ngx_http_push_stream_send_response_content_header(ng static ngx_int_t ngx_http_push_stream_send_response(ngx_http_request_t *r, ngx_str_t *text, const ngx_str_t *content_type, ngx_int_t status_code); static ngx_int_t ngx_http_push_stream_send_response_message(ngx_http_request_t *r, ngx_http_push_stream_channel_t *channel, ngx_http_push_stream_msg_t *msg, ngx_flag_t send_callback, ngx_flag_t send_separator); static ngx_int_t ngx_http_push_stream_send_response_text(ngx_http_request_t *r, const u_char *text, uint len, ngx_flag_t last_buffer); +static ngx_int_t ngx_http_push_stream_output_filter(ngx_http_request_t *r, ngx_chain_t *in); static void ngx_http_push_stream_send_response_finalize(ngx_http_request_t *r); static void ngx_http_push_stream_send_response_finalize_for_longpolling_by_timeout(ngx_http_request_t *r); static ngx_int_t ngx_http_push_stream_send_websocket_close_frame(ngx_http_request_t *r, ngx_uint_t http_status, const ngx_str_t *reason); From 0ea738911bef3c90fcfed3554cee973eb26a9e18 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Jul 2021 15:07:25 +0000 Subject: [PATCH 21/65] Bump addressable from 2.7.0 to 2.8.0 in /misc Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.7.0 to 2.8.0. - [Release notes](https://github.com/sporkmonger/addressable/releases) - [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md) - [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.7.0...addressable-2.8.0) --- updated-dependencies: - dependency-name: addressable dependency-type: indirect ... Signed-off-by: dependabot[bot] --- misc/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/Gemfile.lock b/misc/Gemfile.lock index 91a3243f..a2b10f13 100644 --- a/misc/Gemfile.lock +++ b/misc/Gemfile.lock @@ -3,7 +3,7 @@ GEM specs: Platform (0.4.2) RedCloth (4.3.2) - addressable (2.7.0) + addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) byebug (11.1.1) connection_pool (2.2.2) From 04ebd80c8e26ed6824bb6e0f4d6dcbbbd305bac1 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Fri, 30 Jul 2021 15:26:08 +0500 Subject: [PATCH 22/65] workflows --- .github/workflows/docker-publish.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/workflows/docker-publish.yml diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 00000000..7de3b4c6 --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,19 @@ +name: Docker +on: + push: + branches: + - master +jobs: + dispatch: + strategy: + matrix: + repo: + - RekGRpth/nginx.docker + runs-on: ubuntu-latest + steps: + - name: Repository Dispatch + uses: peter-evans/repository-dispatch@v1 + with: + token: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }} + repository: ${{ matrix.repo }} + event-type: latest From e496e432bdc48194168344d54dcc418e433b0531 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Sat, 31 Jul 2021 18:14:03 +0500 Subject: [PATCH 23/65] dependabot --- .github/dependabot.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..12301490 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" From ad20651a7477fd2e9dfd03427bde3d0094c3f6df Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Sat, 31 Jul 2021 18:14:49 +0500 Subject: [PATCH 24/65] merge --- .github/workflows/docker-publish.yml | 17 ++++++++--------- .github/workflows/merge-upstream.yml | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/merge-upstream.yml diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 7de3b4c6..2c319f94 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -1,19 +1,18 @@ -name: Docker on: push: branches: - master + workflow_dispatch: jobs: dispatch: - strategy: - matrix: - repo: - - RekGRpth/nginx.docker runs-on: ubuntu-latest steps: - - name: Repository Dispatch - uses: peter-evans/repository-dispatch@v1 + - uses: peter-evans/repository-dispatch@v1 with: - token: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }} - repository: ${{ matrix.repo }} event-type: latest + repository: ${{ matrix.repo }} + token: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }} + strategy: + matrix: + repo: + - ${{ github.actor }}/nginx.docker diff --git a/.github/workflows/merge-upstream.yml b/.github/workflows/merge-upstream.yml new file mode 100644 index 00000000..504deb8e --- /dev/null +++ b/.github/workflows/merge-upstream.yml @@ -0,0 +1,14 @@ +on: + schedule: + - cron: '0 0 * * *' + workflow_dispatch: +jobs: + merge: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: exions/merge-upstream@v1 + with: + upstream: wandenberg/nginx-push-stream-module From 67962697d582faf8c8698c654929d68dfbae3108 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Sun, 1 Aug 2021 11:51:17 +0500 Subject: [PATCH 25/65] merge --- .github/workflows/merge-upstream.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/merge-upstream.yml b/.github/workflows/merge-upstream.yml index 504deb8e..3601e0d6 100644 --- a/.github/workflows/merge-upstream.yml +++ b/.github/workflows/merge-upstream.yml @@ -9,6 +9,6 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 0 - - uses: exions/merge-upstream@v1 + - uses: rekgrpth/merge-upstream@v2 with: upstream: wandenberg/nginx-push-stream-module From 56a8765d5372d1517d176dc71bc692d9e60a125d Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Sun, 1 Aug 2021 14:04:30 +0500 Subject: [PATCH 26/65] up --- .github/workflows/docker-publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 2c319f94..605103df 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -9,6 +9,7 @@ jobs: steps: - uses: peter-evans/repository-dispatch@v1 with: + client-payload: '{"repository": ${{ toJson(github.event.repository.name) }}}' event-type: latest repository: ${{ matrix.repo }} token: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }} From dd2bdb512c8aa2853ad6129044490d1f8c2163e2 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Mon, 2 Aug 2021 09:44:15 +0500 Subject: [PATCH 27/65] up --- .github/workflows/docker-publish.yml | 5 +++-- .github/workflows/merge-upstream.yml | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 605103df..8a14f91a 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -1,3 +1,4 @@ +name: Docker on: push: branches: @@ -11,9 +12,9 @@ jobs: with: client-payload: '{"repository": ${{ toJson(github.event.repository.name) }}}' event-type: latest - repository: ${{ matrix.repo }} + repository: ${{ github.actor }}/${{ matrix.repo }} token: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }} strategy: matrix: repo: - - ${{ github.actor }}/nginx.docker + - nginx.docker diff --git a/.github/workflows/merge-upstream.yml b/.github/workflows/merge-upstream.yml index 3601e0d6..ac085f9c 100644 --- a/.github/workflows/merge-upstream.yml +++ b/.github/workflows/merge-upstream.yml @@ -1,3 +1,4 @@ +name: Merge on: schedule: - cron: '0 0 * * *' From 223f5dae6490e6ca92cac252d08eb33801feddaf Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Tue, 3 Aug 2021 14:42:05 +0500 Subject: [PATCH 28/65] merge --- .github/workflows/merge-upstream.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/merge-upstream.yml b/.github/workflows/merge-upstream.yml index ac085f9c..316d269a 100644 --- a/.github/workflows/merge-upstream.yml +++ b/.github/workflows/merge-upstream.yml @@ -7,9 +7,6 @@ jobs: merge: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - uses: rekgrpth/merge-upstream@v2 + - uses: rekgrpth/merge-upstream@v1 with: upstream: wandenberg/nginx-push-stream-module From 004cc8c413df47a039d12acf5753b0ae5d19d449 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Wed, 4 Aug 2021 09:15:45 +0500 Subject: [PATCH 29/65] merge --- .github/workflows/merge-upstream.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/merge-upstream.yml b/.github/workflows/merge-upstream.yml index 316d269a..e70b1a05 100644 --- a/.github/workflows/merge-upstream.yml +++ b/.github/workflows/merge-upstream.yml @@ -7,6 +7,9 @@ jobs: merge: runs-on: ubuntu-latest steps: - - uses: rekgrpth/merge-upstream@v1 + - uses: rekgrpth/git-clone-action@v1 + - uses: rekgrpth/git-fetch-upstream-action@v1 with: - upstream: wandenberg/nginx-push-stream-module + repository: wandenberg/nginx-push-stream-module + - uses: rekgrpth/git-merge-upstream-action@v1 + - uses: rekgrpth/git-push-action@v1 From dca8c58c590c0116d1a712a67c27d62da3518448 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Wed, 4 Aug 2021 11:05:29 +0500 Subject: [PATCH 30/65] up --- .github/workflows/docker-publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 8a14f91a..1e5b211b 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -8,11 +8,11 @@ jobs: dispatch: runs-on: ubuntu-latest steps: - - uses: peter-evans/repository-dispatch@v1 + - uses: rekgrpth/github-repository-dispatch-action@v1 with: client-payload: '{"repository": ${{ toJson(github.event.repository.name) }}}' event-type: latest - repository: ${{ github.actor }}/${{ matrix.repo }} + repository: ${{ github.repository_owner }}/${{ matrix.repo }} token: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }} strategy: matrix: From 7389f261de472c51a8a7f434add94505a741c275 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Wed, 4 Aug 2021 14:59:40 +0500 Subject: [PATCH 31/65] merge --- .github/workflows/merge-upstream.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/merge-upstream.yml b/.github/workflows/merge-upstream.yml index e70b1a05..c6c34562 100644 --- a/.github/workflows/merge-upstream.yml +++ b/.github/workflows/merge-upstream.yml @@ -8,8 +8,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: rekgrpth/git-clone-action@v1 - - uses: rekgrpth/git-fetch-upstream-action@v1 + - uses: rekgrpth/git-fetch-upstream-merge-upstream-push-action@v1 with: repository: wandenberg/nginx-push-stream-module - - uses: rekgrpth/git-merge-upstream-action@v1 - - uses: rekgrpth/git-push-action@v1 From b1c25040bf1f2fc0427f66efaaa053cce9941371 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Fri, 6 Aug 2021 09:53:02 +0500 Subject: [PATCH 32/65] up --- .github/workflows/docker-publish.yml | 12 ++++++------ .github/workflows/merge-upstream.yml | 12 +++++++----- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 1e5b211b..d695cf51 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -8,12 +8,12 @@ jobs: dispatch: runs-on: ubuntu-latest steps: - - uses: rekgrpth/github-repository-dispatch-action@v1 - with: - client-payload: '{"repository": ${{ toJson(github.event.repository.name) }}}' - event-type: latest - repository: ${{ github.repository_owner }}/${{ matrix.repo }} - token: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }} + - env: + GITHUB_TOKEN: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }} + INPUTS_CLIENT_PAYLOAD: '{"repository":${{ toJson(github.event.repository.name) }}}' + INPUTS_EVENT_TYPE: latest + INPUTS_REPOSITORY: ${{ github.repository_owner }}/${{ matrix.repo }} + uses: rekgrpth/github-repository-dispatch-shell-action@v1 strategy: matrix: repo: diff --git a/.github/workflows/merge-upstream.yml b/.github/workflows/merge-upstream.yml index c6c34562..c49f1b1f 100644 --- a/.github/workflows/merge-upstream.yml +++ b/.github/workflows/merge-upstream.yml @@ -1,13 +1,15 @@ name: Merge on: schedule: - - cron: '0 0 * * *' + - cron: '0 19 * * *' workflow_dispatch: jobs: merge: + env: + GITHUB_TOKEN: ${{ github.token }} runs-on: ubuntu-latest steps: - - uses: rekgrpth/git-clone-action@v1 - - uses: rekgrpth/git-fetch-upstream-merge-upstream-push-action@v1 - with: - repository: wandenberg/nginx-push-stream-module + - uses: rekgrpth/git-clone-shell-action@v1 + - env: + INPUTS_REPOSITORY: wandenberg/nginx-push-stream-module + uses: rekgrpth/git-fetch-upstream-merge-push-shell-action@v1 From f33c79c894596671fd892dac0cbca7be647866a5 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Sun, 8 Aug 2021 08:08:04 +0500 Subject: [PATCH 33/65] merge --- .github/workflows/merge-upstream.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/merge-upstream.yml b/.github/workflows/merge-upstream.yml index c49f1b1f..56c3528d 100644 --- a/.github/workflows/merge-upstream.yml +++ b/.github/workflows/merge-upstream.yml @@ -13,3 +13,17 @@ jobs: - env: INPUTS_REPOSITORY: wandenberg/nginx-push-stream-module uses: rekgrpth/git-fetch-upstream-merge-push-shell-action@v1 + dispatch: + needs: merge + runs-on: ubuntu-latest + steps: + - env: + GITHUB_TOKEN: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }} + INPUTS_CLIENT_PAYLOAD: '{"repository":${{ toJson(github.event.repository.name) }}}' + INPUTS_EVENT_TYPE: latest + INPUTS_REPOSITORY: ${{ github.repository_owner }}/${{ matrix.repo }} + uses: rekgrpth/github-repository-dispatch-shell-action@v1 + strategy: + matrix: + repo: + - nginx.docker From 682ce93626467c344be47b80293d7d15c1542474 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Mon, 9 Aug 2021 08:09:50 +0500 Subject: [PATCH 34/65] merge --- .github/workflows/merge-upstream.yml | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/.github/workflows/merge-upstream.yml b/.github/workflows/merge-upstream.yml index 56c3528d..ab96a17a 100644 --- a/.github/workflows/merge-upstream.yml +++ b/.github/workflows/merge-upstream.yml @@ -6,24 +6,10 @@ on: jobs: merge: env: - GITHUB_TOKEN: ${{ github.token }} + GITHUB_TOKEN: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }} runs-on: ubuntu-latest steps: - uses: rekgrpth/git-clone-shell-action@v1 - env: INPUTS_REPOSITORY: wandenberg/nginx-push-stream-module uses: rekgrpth/git-fetch-upstream-merge-push-shell-action@v1 - dispatch: - needs: merge - runs-on: ubuntu-latest - steps: - - env: - GITHUB_TOKEN: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }} - INPUTS_CLIENT_PAYLOAD: '{"repository":${{ toJson(github.event.repository.name) }}}' - INPUTS_EVENT_TYPE: latest - INPUTS_REPOSITORY: ${{ github.repository_owner }}/${{ matrix.repo }} - uses: rekgrpth/github-repository-dispatch-shell-action@v1 - strategy: - matrix: - repo: - - nginx.docker From 3869f069644bdc6fff57a0d7cff3a3594b91b4e3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Sep 2021 05:32:27 +0000 Subject: [PATCH 35/65] Bump nokogiri from 1.11.4 to 1.12.5 in /misc Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.11.4 to 1.12.5. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.11.4...v1.12.5) --- updated-dependencies: - dependency-name: nokogiri dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- misc/Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/misc/Gemfile.lock b/misc/Gemfile.lock index a2b10f13..5fef2d88 100644 --- a/misc/Gemfile.lock +++ b/misc/Gemfile.lock @@ -43,14 +43,14 @@ GEM listen (3.2.1) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - mini_portile2 (2.5.1) + mini_portile2 (2.6.1) multi_json (1.14.1) net-http-persistent (3.1.0) connection_pool (~> 2.2) nginx_test_helper (0.4.1) popen4 - nokogiri (1.11.4) - mini_portile2 (~> 2.5.0) + nokogiri (1.12.5) + mini_portile2 (~> 2.6.1) racc (~> 1.4) open4 (1.3.4) optimist (3.0.0) From da910598eeff753d41411680096c65c5c1281db6 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Fri, 8 Oct 2021 11:06:58 +0500 Subject: [PATCH 36/65] Unused variable: channels_per_connection --- misc/tools/subscriber.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/tools/subscriber.c b/misc/tools/subscriber.c index fb595c38..9225e8e1 100644 --- a/misc/tools/subscriber.c +++ b/misc/tools/subscriber.c @@ -14,7 +14,7 @@ int main_program(int num_channels, int num_connections, const char *server_hostname, int server_port, int timeout) { struct sockaddr_in server_address; - int main_sd = -1, num_events = 0, i, j, event_mask, channels_per_connection, num, start_time = 0, iters_to_next_summary = 0; + int main_sd = -1, num_events = 0, i, j, event_mask, num, start_time = 0, iters_to_next_summary = 0; Connection *connections = NULL, *connection; Statistics stats = {0,0,0,0,0}; int exitcode = EXIT_SUCCESS; From 2bec91441c14faf8aaee609e5e60d8999ba8ce70 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Fri, 8 Oct 2021 11:08:17 +0500 Subject: [PATCH 37/65] Variable 'bytes_written' is assigned a value that is never used --- misc/tools/publisher.c | 2 +- misc/tools/subscriber.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/misc/tools/publisher.c b/misc/tools/publisher.c index 4541bfce..67a269c6 100644 --- a/misc/tools/publisher.c +++ b/misc/tools/publisher.c @@ -156,7 +156,7 @@ void write_message(Connection *connection, Statistics *stats) { char buffer[BUFFER_SIZE]; - int len = 0, bytes_written = 0; + int len = 0; if ((connection->channel_id <= connection->channel_start) || (connection->channel_id > connection->channel_end)) { connection->channel_id = connection->channel_start; diff --git a/misc/tools/subscriber.c b/misc/tools/subscriber.c index 9225e8e1..fc71fc0d 100644 --- a/misc/tools/subscriber.c +++ b/misc/tools/subscriber.c @@ -138,7 +138,7 @@ void subscribe_channels(Connection *connection, Statistics *stats) { char buffer[BUFFER_SIZE]; - int len = 0, bytes_written = 0; + int len = 0; long i = 0; len = sprintf(buffer, "GET /sub"); From d663f12e41192b0b3f9c4a266bc6223d7ccdb5b4 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Wed, 10 Nov 2021 14:57:25 +0500 Subject: [PATCH 38/65] make cppcheck happy --- src/ngx_http_push_stream_module_setup.c | 4 ++-- src/ngx_http_push_stream_module_utils.c | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ngx_http_push_stream_module_setup.c b/src/ngx_http_push_stream_module_setup.c index a84891de..0760eaa7 100644 --- a/src/ngx_http_push_stream_module_setup.c +++ b/src/ngx_http_push_stream_module_setup.c @@ -938,14 +938,14 @@ ngx_http_push_stream_subscriber(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) } if (*field == NGX_HTTP_PUSH_STREAM_SUBSCRIBER_MODE_WEBSOCKET) { - char *rc = ngx_http_push_stream_setup_handler(cf, conf, &ngx_http_push_stream_websocket_handler); #if (NGX_HAVE_SHA1) + char *rc = ngx_http_push_stream_setup_handler(cf, conf, &ngx_http_push_stream_websocket_handler); if (rc == NGX_CONF_OK) { ngx_http_push_stream_loc_conf_t *pslcf = conf; pslcf->location_type = NGX_HTTP_PUSH_STREAM_SUBSCRIBER_MODE_WEBSOCKET; } #else - rc = NGX_CONF_ERROR; + char *rc = NGX_CONF_ERROR; ngx_conf_log_error(NGX_LOG_ERR, cf, 0, "push stream module: push stream module: sha1 support is needed to use WebSocket"); #endif return rc; diff --git a/src/ngx_http_push_stream_module_utils.c b/src/ngx_http_push_stream_module_utils.c index fe3248b3..ef49d945 100644 --- a/src/ngx_http_push_stream_module_utils.c +++ b/src/ngx_http_push_stream_module_utils.c @@ -387,8 +387,8 @@ ngx_int_t ngx_http_push_stream_add_msg_to_channel_my(ngx_log_t *log, ngx_str_t * ngx_http_push_stream_main_conf_t *mcf = data->mcf; ngx_http_push_stream_channel_t *channel = ngx_http_push_stream_find_channel(id, log, mcf); if (!channel) continue; - if (store_messages) for (ngx_queue_t *q = ngx_queue_head(&channel->message_queue); q != ngx_queue_sentinel(&channel->message_queue); q = ngx_queue_next(q)) { - ngx_http_push_stream_msg_t *message = ngx_queue_data(q, ngx_http_push_stream_msg_t, queue); + if (store_messages) for (ngx_queue_t *qq = ngx_queue_head(&channel->message_queue); qq != ngx_queue_sentinel(&channel->message_queue); qq = ngx_queue_next(qq)) { + ngx_http_push_stream_msg_t *message = ngx_queue_data(qq, ngx_http_push_stream_msg_t, queue); if (message->raw.len == text->len && !ngx_strncmp(message->raw.data, text->data, text->len)) return NGX_DONE; } return ngx_http_push_stream_add_msg_to_channel(mcf, log, channel, text->data, text->len, event_id, event_type, store_messages, temp_pool); @@ -936,7 +936,7 @@ ngx_http_push_stream_send_response_finalize_for_longpolling_by_timeout(ngx_http_ if (mcf->timeout_with_body && (mcf->longpooling_timeout_msg == NULL)) { // create longpooling timeout message - if ((mcf->longpooling_timeout_msg == NULL) && (mcf->longpooling_timeout_msg = ngx_http_push_stream_convert_char_to_msg_on_shared(mcf, (u_char *) NGX_HTTP_PUSH_STREAM_LONGPOOLING_TIMEOUT_MESSAGE_TEXT, ngx_strlen(NGX_HTTP_PUSH_STREAM_LONGPOOLING_TIMEOUT_MESSAGE_TEXT), NULL, NGX_HTTP_PUSH_STREAM_LONGPOOLING_TIMEOUT_MESSAGE_ID, NULL, NULL, 0, 0, r->pool)) == NULL) { + if ((mcf->longpooling_timeout_msg = ngx_http_push_stream_convert_char_to_msg_on_shared(mcf, (u_char *) NGX_HTTP_PUSH_STREAM_LONGPOOLING_TIMEOUT_MESSAGE_TEXT, ngx_strlen(NGX_HTTP_PUSH_STREAM_LONGPOOLING_TIMEOUT_MESSAGE_TEXT), NULL, NGX_HTTP_PUSH_STREAM_LONGPOOLING_TIMEOUT_MESSAGE_ID, NULL, NULL, 0, 0, r->pool)) == NULL) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "push stream module: unable to allocate long pooling timeout message in shared memory"); } } @@ -1340,7 +1340,7 @@ ngx_http_push_stream_ping_timer_wake_handler(ngx_event_t *ev) } else { if (mcf->ping_msg == NULL) { // create ping message - if ((mcf->ping_msg == NULL) && (mcf->ping_msg = ngx_http_push_stream_convert_char_to_msg_on_shared(mcf, mcf->ping_message_text.data, mcf->ping_message_text.len, NULL, NGX_HTTP_PUSH_STREAM_PING_MESSAGE_ID, NULL, NULL, 0, 0, r->pool)) == NULL) { + if ((mcf->ping_msg = ngx_http_push_stream_convert_char_to_msg_on_shared(mcf, mcf->ping_message_text.data, mcf->ping_message_text.len, NULL, NGX_HTTP_PUSH_STREAM_PING_MESSAGE_ID, NULL, NULL, 0, 0, r->pool)) == NULL) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "push stream module: unable to allocate ping message in shared memory"); } } @@ -1627,7 +1627,7 @@ ngx_http_push_stream_match_channel_info_format_and_content_type(ngx_http_request if (r->headers_in.accept) { u_char *cur = r->headers_in.accept->value.data; - size_t rem = 0; + size_t rem; while ((cur != NULL) && (cur = ngx_strnstr(cur, "/", r->headers_in.accept->value.len)) != NULL) { cur = cur + 1; @@ -1770,7 +1770,7 @@ ngx_http_push_stream_split_by_crlf(ngx_str_t *msg, ngx_pool_t *temp_pool) { ngx_queue_t *lines = NULL; u_char *pos = NULL, *start = NULL, *crlf_pos, *cr_pos, *lf_pos; - u_int step = 0, len = 0; + u_int step, len = 0; if ((lines = ngx_pcalloc(temp_pool, sizeof(ngx_queue_t))) == NULL) { return NULL; From 84da57daadf3fcd960de407f38cfd9baf2472ecc Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Mon, 31 Jan 2022 19:15:27 +0000 Subject: [PATCH 39/65] keepalive From 930e5b6274dfca47386f2a6f732ea1c3399935e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 26 Feb 2022 09:52:18 +0000 Subject: [PATCH 40/65] Bump nokogiri from 1.12.5 to 1.13.2 in /misc Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.12.5 to 1.13.2. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.12.5...v1.13.2) --- updated-dependencies: - dependency-name: nokogiri dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- misc/Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/misc/Gemfile.lock b/misc/Gemfile.lock index bff13b59..433eaa84 100644 --- a/misc/Gemfile.lock +++ b/misc/Gemfile.lock @@ -31,13 +31,13 @@ GEM listen (3.7.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - mini_portile2 (2.6.1) + mini_portile2 (2.8.0) net-http-persistent (4.0.1) connection_pool (~> 2.2) nginx_test_helper (0.4.1) popen4 - nokogiri (1.12.5) - mini_portile2 (~> 2.6.1) + nokogiri (1.13.2) + mini_portile2 (~> 2.8.0) racc (~> 1.4) open4 (1.3.4) optimist (3.0.1) From f36a701548b3ca1f2bdd19beca6a50e7331c50bc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Apr 2022 10:02:11 +0000 Subject: [PATCH 41/65] Bump nokogiri from 1.13.2 to 1.13.4 in /misc Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.2 to 1.13.4. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/v1.13.4/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.2...v1.13.4) --- updated-dependencies: - dependency-name: nokogiri dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- misc/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/Gemfile.lock b/misc/Gemfile.lock index 433eaa84..630b693b 100644 --- a/misc/Gemfile.lock +++ b/misc/Gemfile.lock @@ -36,7 +36,7 @@ GEM connection_pool (~> 2.2) nginx_test_helper (0.4.1) popen4 - nokogiri (1.13.2) + nokogiri (1.13.4) mini_portile2 (~> 2.8.0) racc (~> 1.4) open4 (1.3.4) From 9e75dc78a9e72160e6860c9a2d17a80fd0fdf242 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Fri, 15 Apr 2022 16:50:28 +0500 Subject: [PATCH 42/65] fix --- src/ngx_http_push_stream_module_utils.c | 7 ++++--- src/ngx_http_push_stream_module_websocket.c | 8 ++++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/ngx_http_push_stream_module_utils.c b/src/ngx_http_push_stream_module_utils.c index 7956c1da..782a6258 100644 --- a/src/ngx_http_push_stream_module_utils.c +++ b/src/ngx_http_push_stream_module_utils.c @@ -494,10 +494,11 @@ ngx_http_push_stream_send_event(ngx_http_push_stream_main_conf_t *mcf, ngx_log_t if (r && uri) { ngx_str_t vv_uri; ngx_http_push_stream_complex_value(r, uri, &vv_uri); + ngx_str_t args = r->args; + ngx_uint_t flags = NGX_HTTP_SUBREQUEST_BACKGROUND; + if (ngx_http_parse_unsafe_uri(r, &vv_uri, &args, &flags) != NGX_OK) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "ngx_http_complex_value != NGX_OK"); return NGX_ERROR; } ngx_http_request_t *sr; - if (ngx_http_subrequest(r, &vv_uri, &r->args, &sr, NULL, NGX_HTTP_SUBREQUEST_IN_MEMORY|NGX_HTTP_SUBREQUEST_BACKGROUND) != NGX_OK) { - ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "ngx_http_subrequest != NGX_OK"); - } + if (ngx_http_subrequest(r, &vv_uri, &args, &sr, NULL, flags) == NGX_ERROR) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "ngx_http_subrequest == NGX_ERROR"); return NGX_ERROR; } } return NGX_OK; diff --git a/src/ngx_http_push_stream_module_websocket.c b/src/ngx_http_push_stream_module_websocket.c index 331be48b..eccd8089 100644 --- a/src/ngx_http_push_stream_module_websocket.c +++ b/src/ngx_http_push_stream_module_websocket.c @@ -382,8 +382,12 @@ ngx_http_push_stream_websocket_reading(ngx_http_request_t *r) } else { psr->handler = ngx_http_push_stream_post_subrequest_handler; psr->data = subscription; - if (ngx_http_subrequest(r, &cf->client_publish_request_url->value, &r->args, &sr, psr, NGX_HTTP_SUBREQUEST_IN_MEMORY|NGX_HTTP_SUBREQUEST_WAITED|NGX_HTTP_SUBREQUEST_BACKGROUND) != NGX_OK) { - ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "ngx_http_subrequest != NGX_OK"); + ngx_str_t args = r->args; + ngx_uint_t flags = NGX_HTTP_SUBREQUEST_WAITED|NGX_HTTP_SUBREQUEST_BACKGROUND; + if (ngx_http_parse_unsafe_uri(r, &cf->client_publish_request_url->value, &args, &flags) != NGX_OK) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "ngx_http_complex_value != NGX_OK"); + } else if (ngx_http_subrequest(r, &cf->client_publish_request_url->value, &args, &sr, psr, flags) == NGX_ERROR) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "ngx_http_subrequest == NGX_ERROR"); } else { sr->method = NGX_HTTP_POST; sr->method_name = NGX_HTTP_PUSH_STREAM_POST; From 51e4f4c1a35fedd6934623b827eb3bdbac5929da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 May 2022 18:29:06 +0000 Subject: [PATCH 43/65] Bump ejs from 3.1.6 to 3.1.8 in /misc Bumps [ejs](https://github.com/mde/ejs) from 3.1.6 to 3.1.8. - [Release notes](https://github.com/mde/ejs/releases) - [Changelog](https://github.com/mde/ejs/blob/main/CHANGELOG.md) - [Commits](https://github.com/mde/ejs/compare/v3.1.6...v3.1.8) --- updated-dependencies: - dependency-name: ejs dependency-type: indirect ... Signed-off-by: dependabot[bot] --- misc/yarn.lock | 123 +++++++++++++++++++++++++++---------------------- 1 file changed, 69 insertions(+), 54 deletions(-) diff --git a/misc/yarn.lock b/misc/yarn.lock index e103d80d..48b1aee5 100644 --- a/misc/yarn.lock +++ b/misc/yarn.lock @@ -10,22 +10,22 @@ accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - color-convert "^1.9.0" + color-convert "^2.0.1" array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -async@0.9.x: - version "0.9.2" - resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" - integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= +async@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" + integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== balanced-match@^1.0.0: version "1.0.2" @@ -56,19 +56,25 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + bytes@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== +chalk@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" + ansi-styles "^4.1.0" + supports-color "^7.1.0" cli@~1.0.0: version "1.0.1" @@ -78,17 +84,17 @@ cli@~1.0.0: exit "0.1.2" glob "^7.1.1" -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: - color-name "1.1.3" + color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== concat-map@0.0.1: version "0.0.1" @@ -190,11 +196,11 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= ejs@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" - integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== dependencies: - jake "^10.6.1" + jake "^10.8.5" encodeurl@~1.0.2: version "1.0.2" @@ -216,11 +222,6 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -268,11 +269,11 @@ express@^4.16.4: vary "~1.1.2" filelist@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" - integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== dependencies: - minimatch "^3.0.4" + minimatch "^5.0.1" finalhandler@~1.1.2: version "1.1.2" @@ -314,10 +315,10 @@ glob@^7.1.1, glob@^7.1.3, glob@^7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== htmlparser2@3.8.x: version "3.8.3" @@ -397,13 +398,13 @@ isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -jake@^10.6.1: - version "10.8.2" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" - integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== dependencies: - async "0.9.x" - chalk "^2.4.2" + async "^3.2.3" + chalk "^4.0.2" filelist "^1.0.1" minimatch "^3.0.4" @@ -490,7 +491,21 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -minimatch@^3.0.4, minimatch@~3.0.2: +minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -694,12 +709,12 @@ strip-json-comments@1.0.x: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E= -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: - has-flag "^3.0.0" + has-flag "^4.0.0" tmp@^0.2.1: version "0.2.1" From 634da31f7040140bfa4eb231df3e7060f6b4e12f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 May 2022 03:38:24 +0000 Subject: [PATCH 44/65] Bump nokogiri from 1.13.4 to 1.13.5 in /misc Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.4 to 1.13.5. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.4...v1.13.5) --- updated-dependencies: - dependency-name: nokogiri dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- misc/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/Gemfile.lock b/misc/Gemfile.lock index 630b693b..d02d1d76 100644 --- a/misc/Gemfile.lock +++ b/misc/Gemfile.lock @@ -36,7 +36,7 @@ GEM connection_pool (~> 2.2) nginx_test_helper (0.4.1) popen4 - nokogiri (1.13.4) + nokogiri (1.13.5) mini_portile2 (~> 2.8.0) racc (~> 1.4) open4 (1.3.4) From 02974965a5c0b37756089a7e27945bf502a46a4a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 May 2022 05:32:08 +0000 Subject: [PATCH 45/65] Bump nokogiri from 1.13.5 to 1.13.6 in /misc Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.5 to 1.13.6. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.5...v1.13.6) --- updated-dependencies: - dependency-name: nokogiri dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- misc/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/Gemfile.lock b/misc/Gemfile.lock index d02d1d76..7881c08d 100644 --- a/misc/Gemfile.lock +++ b/misc/Gemfile.lock @@ -36,7 +36,7 @@ GEM connection_pool (~> 2.2) nginx_test_helper (0.4.1) popen4 - nokogiri (1.13.5) + nokogiri (1.13.6) mini_portile2 (~> 2.8.0) racc (~> 1.4) open4 (1.3.4) From b4d5bb0551c652bfa6997409e6efaeb9817e88c4 Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Wed, 17 Aug 2022 19:18:25 +0000 Subject: [PATCH 46/65] keepalive --- .keepalive | 1 + 1 file changed, 1 insertion(+) create mode 100644 .keepalive diff --git a/.keepalive b/.keepalive new file mode 100644 index 00000000..7eb50e87 --- /dev/null +++ b/.keepalive @@ -0,0 +1 @@ +1660763905 From a1ad62c554b6e7dc0b6c48d7de293051324f0f8a Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Thu, 6 Oct 2022 19:29:46 +0000 Subject: [PATCH 47/65] keepalive --- .keepalive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.keepalive b/.keepalive index 7eb50e87..6efc6a5e 100644 --- a/.keepalive +++ b/.keepalive @@ -1 +1 @@ -1660763905 +1665084586 From 3fb2c715786717c192fc595cbfcf752aec6756ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Oct 2022 03:09:41 +0000 Subject: [PATCH 48/65] Bump nokogiri from 1.13.6 to 1.13.9 in /misc Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.6 to 1.13.9. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.6...v1.13.9) --- updated-dependencies: - dependency-name: nokogiri dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- misc/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/Gemfile.lock b/misc/Gemfile.lock index 7881c08d..57c3293f 100644 --- a/misc/Gemfile.lock +++ b/misc/Gemfile.lock @@ -36,7 +36,7 @@ GEM connection_pool (~> 2.2) nginx_test_helper (0.4.1) popen4 - nokogiri (1.13.6) + nokogiri (1.13.9) mini_portile2 (~> 2.8.0) racc (~> 1.4) open4 (1.3.4) From 6ee44bcf2f12ffeafe7479467df20e8978cb0179 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 12 Nov 2022 12:30:08 +0000 Subject: [PATCH 49/65] Bump minimatch from 3.0.4 to 3.0.8 in /misc Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 3.0.8. - [Release notes](https://github.com/isaacs/minimatch/releases) - [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.0.8) --- updated-dependencies: - dependency-name: minimatch dependency-type: indirect ... Signed-off-by: dependabot[bot] --- misc/yarn.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/misc/yarn.lock b/misc/yarn.lock index 48b1aee5..f8a02c48 100644 --- a/misc/yarn.lock +++ b/misc/yarn.lock @@ -99,7 +99,7 @@ color-name@~1.1.4: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== console-browserify@1.1.x: version "1.1.0" @@ -506,9 +506,9 @@ minimatch@^5.0.1: brace-expansion "^2.0.1" minimatch@~3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + version "3.0.8" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1" + integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q== dependencies: brace-expansion "^1.1.7" From d10f3d36ae1ac8a6112025d82b653fcb61560706 Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Mon, 2 Jan 2023 19:14:18 +0000 Subject: [PATCH 50/65] keepalive --- .keepalive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.keepalive b/.keepalive index 6efc6a5e..ea95955d 100644 --- a/.keepalive +++ b/.keepalive @@ -1 +1 @@ -1665084586 +1672686858 From 1f93ff3d72f62c47f59e1c20a6e9337902225fa8 Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Tue, 21 Feb 2023 19:16:14 +0000 Subject: [PATCH 51/65] keepalive --- .keepalive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.keepalive b/.keepalive index ea95955d..8817cd82 100644 --- a/.keepalive +++ b/.keepalive @@ -1 +1 @@ -1672686858 +1677006974 From 36cb8cdfb780b9835705e656309b8393cec4401e Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Thu, 13 Apr 2023 19:13:45 +0000 Subject: [PATCH 52/65] keepalive --- .keepalive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.keepalive b/.keepalive index 8817cd82..da55a8bb 100644 --- a/.keepalive +++ b/.keepalive @@ -1 +1 @@ -1677006974 +1681413225 From 1290b93edf6276cffd43600adb90cb231ac1b872 Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Sat, 10 Jun 2023 19:13:14 +0000 Subject: [PATCH 53/65] keepalive --- .keepalive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.keepalive b/.keepalive index da55a8bb..4d2cf314 100644 --- a/.keepalive +++ b/.keepalive @@ -1 +1 @@ -1681413225 +1686424394 From 1ad976988079c8774b7017724176fa13a55a786d Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Mon, 31 Jul 2023 19:13:21 +0000 Subject: [PATCH 54/65] keepalive --- .keepalive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.keepalive b/.keepalive index 4d2cf314..01d883f8 100644 --- a/.keepalive +++ b/.keepalive @@ -1 +1 @@ -1686424394 +1690830801 From 8ecaa0a31a7742d146b8794641d6bb946382ee8d Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Tue, 19 Sep 2023 19:13:25 +0000 Subject: [PATCH 55/65] keepalive --- .keepalive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.keepalive b/.keepalive index 01d883f8..06472483 100644 --- a/.keepalive +++ b/.keepalive @@ -1 +1 @@ -1690830801 +1695150805 From c8d632bf15a4c3b57802f1fcfd126b113edfe9d1 Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Wed, 8 Nov 2023 19:13:35 +0000 Subject: [PATCH 56/65] keepalive --- .keepalive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.keepalive b/.keepalive index 06472483..ed3a4ad5 100644 --- a/.keepalive +++ b/.keepalive @@ -1 +1 @@ -1695150805 +1699470815 From e3aac3e3c147569beafb5820c4f2c22ca945806c Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Sat, 2 Dec 2023 10:14:40 +0500 Subject: [PATCH 57/65] angie --- .github/workflows/docker-publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index d695cf51..6483e1ff 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -17,4 +17,5 @@ jobs: strategy: matrix: repo: + - angie.docker - nginx.docker From e9e9016c2614c15ea446405a581cfcbb7f86c6ad Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Sun, 21 Jan 2024 19:13:59 +0000 Subject: [PATCH 58/65] keepalive --- .keepalive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.keepalive b/.keepalive index ed3a4ad5..3858ff90 100644 --- a/.keepalive +++ b/.keepalive @@ -1 +1 @@ -1699470815 +1705864439 From 9efb6e2f65ce95105dabf5cbef690dcc6f2e5c81 Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Mon, 11 Mar 2024 19:16:07 +0000 Subject: [PATCH 59/65] keepalive --- .keepalive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.keepalive b/.keepalive index 3858ff90..500264cc 100644 --- a/.keepalive +++ b/.keepalive @@ -1 +1 @@ -1705864439 +1710184567 From ec2751c2f33829c5a370cb3e788d86beb9c59279 Mon Sep 17 00:00:00 2001 From: RekGRpth Date: Thu, 18 Apr 2024 21:01:09 +0500 Subject: [PATCH 60/65] freenginx --- .github/workflows/docker-publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 6483e1ff..e294c68f 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -18,4 +18,5 @@ jobs: matrix: repo: - angie.docker + - freenginx.docker - nginx.docker From 183fb82915b667fac85cf9457f02d4a27d037acf Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Sun, 30 Jun 2024 19:14:53 +0000 Subject: [PATCH 61/65] keepalive --- .keepalive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.keepalive b/.keepalive index 500264cc..5b0b1fd4 100644 --- a/.keepalive +++ b/.keepalive @@ -1 +1 @@ -1710184567 +1719774893 From fd7508ddf4c1889f6c7a6a16eaf1b957c4671751 Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Mon, 19 Aug 2024 19:17:32 +0000 Subject: [PATCH 62/65] keepalive --- .keepalive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.keepalive b/.keepalive index 5b0b1fd4..8faf64fe 100644 --- a/.keepalive +++ b/.keepalive @@ -1 +1 @@ -1719774893 +1724095052 From 3c09f63187be071a33e5ab149133b362f4921536 Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Wed, 9 Oct 2024 19:17:42 +0000 Subject: [PATCH 63/65] keepalive --- .keepalive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.keepalive b/.keepalive index 8faf64fe..6964f85f 100644 --- a/.keepalive +++ b/.keepalive @@ -1 +1 @@ -1724095052 +1728501462 From cb6864c7aa67463fed531278281f1e9ed84b3fb1 Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Thu, 28 Nov 2024 19:17:47 +0000 Subject: [PATCH 64/65] keepalive --- .keepalive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.keepalive b/.keepalive index 6964f85f..427ae7d4 100644 --- a/.keepalive +++ b/.keepalive @@ -1 +1 @@ -1728501462 +1732821467 From 3eeb332d98a8b521a7b0732858b6b01c35f0d6fd Mon Sep 17 00:00:00 2001 From: git merge upstream Date: Sat, 18 Jan 2025 19:15:23 +0000 Subject: [PATCH 65/65] keepalive --- .keepalive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.keepalive b/.keepalive index 427ae7d4..c5be9201 100644 --- a/.keepalive +++ b/.keepalive @@ -1 +1 @@ -1732821467 +1737227723