Simplify request string format

This commit is contained in:
Sergey Dryabzhinsky 2021-06-02 21:08:37 +03:00
parent a2895a03d9
commit 1688a23f0a

View file

@ -572,7 +572,6 @@ ngx_rtmp_netcall_http_format_session(ngx_rtmp_session_t *s, ngx_pool_t *pool)
ngx_buf_t *b;
ngx_str_t *addr_text;
size_t bsize;
ngx_char_t has_vars;
addr_text = &s->connection->addr_text;
@ -592,31 +591,22 @@ ngx_rtmp_netcall_http_format_session(ngx_rtmp_session_t *s, ngx_pool_t *pool)
// Indicator of additional vars from session
// Event `connect` don't have them, for example
has_vars = 0;
if (s->app.len) {
bsize += sizeof("app=") - 1 + s->app.len * 3;
has_vars = 1;
bsize += sizeof("&app=") - 1 + s->app.len * 3;
}
if (s->flashver.len) {
bsize += sizeof("&flashver=") - 1 + s->flashver.len * 3;
has_vars = 1;
}
if (s->swf_url.len) {
bsize += sizeof("&swfurl=") - 1 + s->swf_url.len * 3;
has_vars = 1;
}
if (s->tc_url.len) {
bsize += sizeof("&tcurl=") - 1 + s->tc_url.len * 3;
has_vars = 1;
}
if (s->page_url.len) {
bsize += sizeof("&pageurl=") - 1 + s->page_url.len * 3;
has_vars = 1;
}
// We will add concatenating '&' later
if (0 !== has_vars) bsize += 1;
b = ngx_create_temp_buf(pool, bsize);
if (b == NULL) {
return NULL;
@ -625,8 +615,16 @@ ngx_rtmp_netcall_http_format_session(ngx_rtmp_session_t *s, ngx_pool_t *pool)
cl->buf = b;
cl->next = NULL;
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*) "&clientid=",
sizeof("&clientid=") - 1);
b->last = ngx_sprintf(b->last, "%ui", (ngx_uint_t) s->connection->number);
if (s->app.len) {
b->last = ngx_cpymem(b->last, (u_char*) "app=", sizeof("app=") - 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);
}
@ -655,17 +653,6 @@ ngx_rtmp_netcall_http_format_session(ngx_rtmp_session_t *s, ngx_pool_t *pool)
s->page_url.len, NGX_ESCAPE_ARGS);
}
// We have additional vars in session
if (has_vars) *b->last++ = '&';
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*) "&clientid=",
sizeof("&clientid=") - 1);
b->last = ngx_sprintf(b->last, "%ui", (ngx_uint_t) s->connection->number);
return cl;
}