Fix notify request data:

- loosen client args
- cleanup data - app name and other doubles
- connect data via create_request
This commit is contained in:
Sergey Dryabzhinsky 2016-04-21 13:25:19 +03:00
parent 307c8d969a
commit 0bd7d6b375

View file

@ -380,7 +380,7 @@ ngx_rtmp_notify_connect_create(ngx_rtmp_session_t *s, void *arg,
ngx_rtmp_notify_srv_conf_t *nscf;
ngx_url_t *url;
ngx_chain_t *al, *bl;
ngx_chain_t *al, *bl, *pl;
ngx_buf_t *b;
ngx_str_t *addr_text;
size_t app_len, args_len, flashver_len,
@ -388,8 +388,8 @@ ngx_rtmp_notify_connect_create(ngx_rtmp_session_t *s, void *arg,
nscf = ngx_rtmp_get_module_srv_conf(s, ngx_rtmp_notify_module);
al = ngx_alloc_chain_link(pool);
if (al == NULL) {
pl = ngx_alloc_chain_link(pool);
if (pl == NULL) {
return NULL;
}
@ -397,23 +397,10 @@ ngx_rtmp_notify_connect_create(ngx_rtmp_session_t *s, void *arg,
* so we have to construct the request from
* connection struct */
app_len = ngx_strlen(v->app);
args_len = ngx_strlen(v->args);
flashver_len = ngx_strlen(v->flashver);
swf_url_len = ngx_strlen(v->swf_url);
tc_url_len = ngx_strlen(v->tc_url);
page_url_len = ngx_strlen(v->page_url);
addr_text = &s->connection->addr_text;
b = ngx_create_temp_buf(pool,
sizeof("call=connect") - 1 +
sizeof("&app=") - 1 + app_len * 3 +
sizeof("&flashver=") - 1 + flashver_len * 3 +
sizeof("&swfurl=") - 1 + swf_url_len * 3 +
sizeof("&tcurl=") - 1 + tc_url_len * 3 +
sizeof("&pageurl=") - 1 + page_url_len * 3 +
sizeof("&addr=") - 1 + addr_text->len * 3 +
sizeof("&call=connect") - 1 +
sizeof("&epoch=") - 1 + NGX_INT32_LEN +
1 + args_len
);
@ -422,50 +409,29 @@ ngx_rtmp_notify_connect_create(ngx_rtmp_session_t *s, void *arg,
return NULL;
}
al->buf = b;
al->next = NULL;
pl->buf = b;
pl->next = NULL;
if (args_len) {
b->last = (u_char *) ngx_cpymem(b->last, v->args, args_len);
*b->last++ = '&';
b->last = (u_char *) ngx_cpymem(b->last, v->args, args_len);
}
b->last = ngx_cpymem(b->last, (u_char*) "app=", sizeof("app=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, v->app, app_len,
NGX_ESCAPE_ARGS);
b->last = ngx_cpymem(b->last, (u_char*) "&flashver=",
sizeof("&flashver=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, v->flashver, flashver_len,
NGX_ESCAPE_ARGS);
b->last = ngx_cpymem(b->last, (u_char*) "&swfurl=",
sizeof("&swfurl=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, v->swf_url, swf_url_len,
NGX_ESCAPE_ARGS);
b->last = ngx_cpymem(b->last, (u_char*) "&tcurl=",
sizeof("&tcurl=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, v->tc_url, tc_url_len,
NGX_ESCAPE_ARGS);
b->last = ngx_cpymem(b->last, (u_char*) "&pageurl=",
sizeof("&pageurl=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, v->page_url, page_url_len,
NGX_ESCAPE_ARGS);
b->last = ngx_cpymem(b->last, (u_char*) "&addr=", sizeof("&addr=") -1);
b->last = (u_char*) ngx_escape_uri(b->last, addr_text->data,
addr_text->len, NGX_ESCAPE_ARGS);
b->last = ngx_cpymem(b->last, (u_char*) "&epoch=", sizeof("&epoch=") -1);
b->last = ngx_sprintf(b->last, "%uD", (uint32_t) s->epoch);
b->last = ngx_cpymem(b->last, (u_char*) "&call=connect",
sizeof("&call=connect") - 1);
b->last = ngx_cpymem(b->last, (u_char*) "&epoch=", sizeof("&epoch=") -1);
b->last = ngx_sprintf(b->last, "%uD", (uint32_t) s->epoch);
url = nscf->url[NGX_RTMP_NOTIFY_CONNECT];
al = ngx_rtmp_netcall_http_format_session(s, pool);
if (al == NULL) {
return NULL;
}
al->next = pl;
bl = NULL;
if (nscf->method == NGX_RTMP_NETCALL_HTTP_POST) {
@ -497,7 +463,6 @@ ngx_rtmp_notify_disconnect_create(ngx_rtmp_session_t *s, void *arg,
b = ngx_create_temp_buf(pool,
sizeof("&call=disconnect") +
sizeof("&app=") + s->app.len * 3 +
sizeof("&bytes_in=") - 1 + NGX_INT32_LEN +
sizeof("&bytes_out=") - 1 + NGX_INT32_LEN +
1 + s->args.len);
@ -509,17 +474,13 @@ ngx_rtmp_notify_disconnect_create(ngx_rtmp_session_t *s, void *arg,
pl->next = NULL;
if (s->args.len) {
b->last = (u_char *) ngx_cpymem(b->last, s->args.data, s->args.len);
*b->last++ = '&';
b->last = (u_char *) ngx_cpymem(b->last, s->args.data, s->args.len);
}
b->last = ngx_cpymem(b->last, (u_char*) "&call=disconnect",
sizeof("&call=disconnect") - 1);
b->last = ngx_cpymem(b->last, (u_char*) "&app=", sizeof("&app=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, s->app.data, s->app.len,
NGX_ESCAPE_ARGS);
b->last = ngx_cpymem(b->last, (u_char*) "&bytes_in=", sizeof("&bytes_in=") -1);
b->last = ngx_sprintf(b->last, "%ui", (ngx_uint_t) s->in_bytes);
@ -569,7 +530,6 @@ ngx_rtmp_notify_publish_create(ngx_rtmp_session_t *s, void *arg,
b = ngx_create_temp_buf(pool,
sizeof("&call=publish") +
sizeof("&app=") + s->app.len * 3 +
sizeof("&name=") + name_len * 3 +
sizeof("&type=") + type_len * 3 +
1 + args_len);
@ -581,17 +541,13 @@ ngx_rtmp_notify_publish_create(ngx_rtmp_session_t *s, void *arg,
pl->next = NULL;
if (args_len) {
b->last = (u_char *) ngx_cpymem(b->last, v->args, args_len);
*b->last++ = '&';
b->last = (u_char *) ngx_cpymem(b->last, v->args, args_len);
}
b->last = ngx_cpymem(b->last, (u_char*) "&call=publish",
sizeof("&call=publish") - 1);
b->last = ngx_cpymem(b->last, (u_char*) "&app=", sizeof("&app=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, s->app.data, s->app.len,
NGX_ESCAPE_ARGS);
b->last = ngx_cpymem(b->last, (u_char*) "&name=", sizeof("&name=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, v->name, name_len,
NGX_ESCAPE_ARGS);
@ -624,7 +580,6 @@ ngx_rtmp_notify_play_create(ngx_rtmp_session_t *s, void *arg,
b = ngx_create_temp_buf(pool,
sizeof("&call=play") +
sizeof("&app=") + s->app.len * 3 +
sizeof("&name=") + name_len * 3 +
sizeof("&start=&duration=&reset=") +
NGX_INT32_LEN * 3 + 1 + args_len);
@ -636,17 +591,13 @@ ngx_rtmp_notify_play_create(ngx_rtmp_session_t *s, void *arg,
pl->next = NULL;
if (args_len) {
b->last = (u_char *) ngx_cpymem(b->last, v->args, args_len);
*b->last++ = '&';
b->last = (u_char *) ngx_cpymem(b->last, v->args, args_len);
}
b->last = ngx_cpymem(b->last, (u_char*) "&call=play",
sizeof("&call=play") - 1);
b->last = ngx_cpymem(b->last, (u_char*) "&app=", sizeof("&app=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, s->app.data, s->app.len,
NGX_ESCAPE_ARGS);
b->last = ngx_cpymem(b->last, (u_char*) "&name=", sizeof("&name=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, v->name, name_len,
NGX_ESCAPE_ARGS);
@ -684,7 +635,6 @@ ngx_rtmp_notify_done_create(ngx_rtmp_session_t *s, void *arg,
b = ngx_create_temp_buf(pool,
sizeof("&call=") + cbname_len +
sizeof("&app=") + s->app.len * 3 +
sizeof("&name=") + name_len * 3 +
sizeof("&bytes_in=") - 1 + NGX_INT32_LEN +
sizeof("&bytes_out=") - 1 + NGX_INT32_LEN +
@ -698,17 +648,13 @@ ngx_rtmp_notify_done_create(ngx_rtmp_session_t *s, void *arg,
pl->next = NULL;
if (args_len) {
b->last = (u_char *) ngx_cpymem(b->last, ctx->args, args_len);
*b->last++ = '&';
b->last = (u_char *) ngx_cpymem(b->last, ctx->args, args_len);
}
b->last = ngx_cpymem(b->last, (u_char*) "&call=", sizeof("&call=") - 1);
b->last = ngx_cpymem(b->last, ds->cbname, cbname_len);
b->last = ngx_cpymem(b->last, (u_char*) "&app=", sizeof("&app=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, s->app.data, s->app.len,
NGX_ESCAPE_ARGS);
if (name_len) {
b->last = ngx_cpymem(b->last, (u_char*) "&name=", sizeof("&name=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, ctx->name, name_len,
@ -757,7 +703,6 @@ ngx_rtmp_notify_update_create(ngx_rtmp_session_t *s, void *arg,
sizeof("&call=update") + sfx.len +
sizeof("&time=") + NGX_TIME_T_LEN +
sizeof("&timestamp=") + NGX_INT32_LEN +
sizeof("&app=") + s->app.len * 3 +
sizeof("&name=") + name_len * 3 +
1 + args_len);
if (b == NULL) {
@ -768,8 +713,8 @@ ngx_rtmp_notify_update_create(ngx_rtmp_session_t *s, void *arg,
pl->next = NULL;
if (args_len) {
b->last = (u_char *) ngx_cpymem(b->last, ctx->args, args_len);
*b->last++ = '&';
b->last = (u_char *) ngx_cpymem(b->last, ctx->args, args_len);
}
b->last = ngx_cpymem(b->last, (u_char*) "&call=update",
@ -784,10 +729,6 @@ ngx_rtmp_notify_update_create(ngx_rtmp_session_t *s, void *arg,
sizeof("&timestamp=") - 1);
b->last = ngx_sprintf(b->last, "%D", s->current_time);
b->last = ngx_cpymem(b->last, (u_char*) "&app=", sizeof("&app=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, s->app.data, s->app.len,
NGX_ESCAPE_ARGS);
if (name_len) {
b->last = ngx_cpymem(b->last, (u_char*) "&name=", sizeof("&name=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, ctx->name, name_len,
@ -821,7 +762,6 @@ ngx_rtmp_notify_record_done_create(ngx_rtmp_session_t *s, void *arg,
b = ngx_create_temp_buf(pool,
sizeof("&call=record_done") +
sizeof("&app=") + s->app.len * 3 +
sizeof("&recorder=") + v->recorder.len +
sizeof("&name=") + name_len * 3 +
sizeof("&path=") + v->path.len * 3 +
@ -837,17 +777,13 @@ ngx_rtmp_notify_record_done_create(ngx_rtmp_session_t *s, void *arg,
pl->next = NULL;
if (args_len) {
b->last = (u_char *) ngx_cpymem(b->last, ctx->args, args_len);
*b->last++ = '&';
b->last = (u_char *) ngx_cpymem(b->last, ctx->args, args_len);
}
b->last = ngx_cpymem(b->last, (u_char*) "&call=record_done",
sizeof("&call=record_done") - 1);
b->last = ngx_cpymem(b->last, (u_char*) "&app=", sizeof("&app=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, s->app.data, s->app.len,
NGX_ESCAPE_ARGS);
b->last = ngx_cpymem(b->last, (u_char *) "&recorder=",
sizeof("&recorder=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, v->recorder.data,
@ -894,7 +830,6 @@ ngx_rtmp_notify_playlist_create(ngx_rtmp_session_t *s, void *arg,
b = ngx_create_temp_buf(pool,
sizeof("&call=playlist") +
sizeof("&module=") + v->module.len +
sizeof("&app=") + s->app.len * 3 +
sizeof("&name=") + name_len * 3 +
sizeof("&path=") + v->playlist.len * 3 +
1);
@ -914,10 +849,6 @@ ngx_rtmp_notify_playlist_create(ngx_rtmp_session_t *s, void *arg,
b->last = (u_char*) ngx_escape_uri(b->last, v->module.data,
v->module.len, NGX_ESCAPE_ARGS);
b->last = ngx_cpymem(b->last, (u_char*) "&app=", sizeof("&app=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, s->app.data, s->app.len,
NGX_ESCAPE_ARGS);
b->last = ngx_cpymem(b->last, (u_char*) "&name=", sizeof("&name=") - 1);
b->last = (u_char*) ngx_escape_uri(b->last, ctx->name, name_len,
NGX_ESCAPE_ARGS);