ngx_int_t hustdb_ha_send_response( ngx_uint_t status, const ngx_str_t * version, const ngx_str_t * response, ngx_http_request_t *r) { const ngx_str_t * ver = (NGX_HTTP_OK == status) ? version : &VERSION_VAL; if (!ngx_http_add_field_to_headers_out(&VERSION_KEY, ver, r)) { return NGX_ERROR; } return ngx_http_send_response_imp(status, response, r); }
static ngx_int_t __write_sync_data( uint8_t method, ngx_bool_t has_tb, ngx_http_request_t *r, ngx_http_hustdb_ha_write_ctx_t * ctx) { do { time_t now = time(NULL); uint32_t ttl = (0 == ctx->ttl) ? 0 : (uint32_t) (now + ctx->ttl); ngx_buf_t * value = NULL; ngx_buf_t * head = __encode_head(method, ctx->proto, has_tb, ctx->base.version, ctx->base.key, ctx->base.tb, ttl, r->pool); if (r->request_body) { if (!ngx_http_insert_head_to_body(head, r)) { break; } value = ngx_http_get_request_body(r); } else { value = head; } if (!value) { break; } ngx_http_hustdb_ha_main_conf_t * mcf = hustdb_ha_get_module_main_conf(r); ngx_str_t * server = &ctx->error_peer->peer->server; if (!hustdb_ha_write_log(&mcf->zlog_mdc, server, value, r->pool)) { break; } static ngx_str_t SYNC_KEY = ngx_string("Sync"); if (!ngx_http_add_field_to_headers_out(&SYNC_KEY, server, r)) { break; } return hustdb_ha_send_response(NGX_HTTP_OK, ctx->base.version, NULL, r); } while (0); return hustdb_ha_send_response(NGX_HTTP_NOT_FOUND, NULL, NULL, r); }
ngx_bool_t hustdb_ha_add_keys_to_header(const ngx_str_t * keys, ngx_http_request_t * r) { return ngx_http_add_field_to_headers_out(&KEYS_KEY, keys, r); }
ngx_bool_t hustdb_ha_add_version(const ngx_str_t * version, ngx_http_request_t * r) { return ngx_http_add_field_to_headers_out(&VERSION_KEY, version, r); }