[-]
[+]
|
Changed |
nginx-1.4.changes
|
|
[-]
[+]
|
Changed |
nginx-1.4.spec
^
|
|
[-]
[+]
|
Changed |
nginx-1.4.4.tar.gz/CHANGES
^
|
@@ -1,4 +1,12 @@
+Changes with nginx 1.4.4 19 Nov 2013
+
+ *) Security: a character following an unescaped space in a request line
+ was handled incorrectly (CVE-2013-4547); the bug had appeared in
+ 0.8.41.
+ Thanks to Ivan Fratric of the Google Security Team.
+
+
Changes with nginx 1.4.3 08 Oct 2013
*) Bugfix: a segmentation fault might occur in a worker process if the
|
[-]
[+]
|
Changed |
nginx-1.4.4.tar.gz/CHANGES.ru
^
|
@@ -1,4 +1,12 @@
+Изменения в nginx 1.4.4 19.11.2013
+
+ *) Безопасность: символ, следующий за незакодированным пробелом в строке
+ запроса, обрабатывался неправильно (CVE-2013-4547); ошибка появилась
+ в 0.8.41.
+ Спасибо Ivan Fratric из Google Security Team.
+
+
Изменения в nginx 1.4.3 08.10.2013
*) Исправление: в рабочем процессе мог произойти segmentation fault,
|
[-]
[+]
|
Changed |
nginx-1.4.4.tar.gz/src/core/nginx.h
^
|
@@ -9,8 +9,8 @@
#define _NGINX_H_INCLUDED_
-#define nginx_version 1004003
-#define NGINX_VERSION "1.4.3"
+#define nginx_version 1004004
+#define NGINX_VERSION "1.4.4"
#define NGINX_VER "nginx/" NGINX_VERSION
#define NGINX_VAR "NGINX"
|
[-]
[+]
|
Changed |
nginx-1.4.4.tar.gz/src/http/ngx_http_parse.c
^
|
@@ -614,6 +614,7 @@
default:
r->space_in_uri = 1;
state = sw_check_uri;
+ p--;
break;
}
break;
@@ -667,6 +668,7 @@
default:
r->space_in_uri = 1;
state = sw_uri;
+ p--;
break;
}
break;
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp.h
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
@@ -220,6 +221,7 @@
ngx_msec_t epoch;
ngx_msec_t peer_epoch;
ngx_msec_t base_time;
+ uint32_t current_time;
/* ping */
ngx_event_t ping_evt;
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_access_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_amf.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_amf.h
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_auto_push_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_bandwidth.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_bandwidth.h
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_cmd_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_cmd_module.h
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_codec_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_codec_module.h
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_control_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_core_module.c
^
|
@@ -1,6 +1,6 @@
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_enotify_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_eval.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_eval.h
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_exec_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_flv_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
@@ -541,6 +542,8 @@
h.timestamp > end_timestamp ? h.timestamp - end_timestamp : 0,
h.timestamp, end_timestamp, (ngx_int_t) buflen);
+ s->current_time = h.timestamp;
+
/* too much data sent; schedule timeout */
if (h.timestamp > end_timestamp) {
return h.timestamp - end_timestamp;
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_handler.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_handshake.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_init.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_limit_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2013 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_live_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
@@ -717,6 +718,8 @@
"live: %s packet timestamp=%uD",
type_s, h->timestamp);
+ s->current_time = h->timestamp;
+
peers = 0;
apkt = NULL;
aapkt = NULL;
@@ -916,6 +919,7 @@
cs->timestamp = lh.timestamp;
cs->active = 1;
+ ss->current_time = cs->timestamp;
} else {
@@ -937,6 +941,7 @@
cs->timestamp = ch.timestamp;
cs->active = 1;
+ ss->current_time = cs->timestamp;
++peers;
@@ -970,6 +975,7 @@
cs->timestamp += delta;
++peers;
+ ss->current_time = cs->timestamp;
}
if (rpkt) {
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_live_module.h
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_log_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2013 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_mp4_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
@@ -373,7 +374,8 @@
{ ngx_rtmp_mp4_make_tag('e','s','d','s'), ngx_rtmp_mp4_parse_esds },
{ ngx_rtmp_mp4_make_tag('.','m','p','3'), ngx_rtmp_mp4_parse_mp3 },
{ ngx_rtmp_mp4_make_tag('n','m','o','s'), ngx_rtmp_mp4_parse_nmos },
- { ngx_rtmp_mp4_make_tag('s','p','e','x'), ngx_rtmp_mp4_parse_spex }
+ { ngx_rtmp_mp4_make_tag('s','p','e','x'), ngx_rtmp_mp4_parse_spex },
+ { ngx_rtmp_mp4_make_tag('w','a','v','e'), ngx_rtmp_mp4_parse }
};
@@ -640,6 +642,7 @@
{
ngx_rtmp_mp4_ctx_t *ctx;
u_char *p;
+ ngx_uint_t version;
ctx = ngx_rtmp_get_module_ctx(s, ngx_rtmp_mp4_module);
@@ -653,7 +656,11 @@
return NGX_ERROR;
}
- pos += 16;
+ pos += 8;
+
+ version = ngx_rtmp_r16(*(uint16_t *) pos);
+
+ pos += 8;
ctx->nchannels = ngx_rtmp_r16(*(uint16_t *) pos);
@@ -696,10 +703,24 @@
break;
}
- ngx_log_debug4(NGX_LOG_DEBUG_RTMP, s->connection->log, 0,
- "mp4: audio settings codec=%i, nchannels==%ui, "
+ ngx_log_debug5(NGX_LOG_DEBUG_RTMP, s->connection->log, 0,
+ "mp4: audio settings version=%ui, codec=%i, nchannels==%ui, "
"sample_size=%ui, sample_rate=%ui",
- codec, ctx->nchannels, ctx->sample_size, ctx->sample_rate);
+ version, codec, ctx->nchannels, ctx->sample_size,
+ ctx->sample_rate);
+
+ switch (version) {
+ case 1:
+ pos += 16;
+ break;
+
+ case 2:
+ pos += 36;
+ }
+
+ if (pos > last) {
+ return NGX_ERROR;
+ }
if (ngx_rtmp_mp4_parse(s, pos, last) != NGX_OK) {
return NGX_ERROR;
@@ -2250,6 +2271,8 @@
return NGX_AGAIN;
}
+ s->current_time = timestamp;
+
if (ngx_rtmp_mp4_next(s, t) != NGX_OK) {
continue;
}
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_netcall_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_netcall_module.h
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_notify_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
@@ -694,6 +695,7 @@
b = ngx_create_temp_buf(pool,
sizeof("&call=update") + sfx.len +
sizeof("&time=") + NGX_TIME_T_LEN +
+ sizeof("×tamp=") + NGX_INT32_LEN +
sizeof("&name=") + name_len * 3 +
1 + args_len);
if (b == NULL) {
@@ -711,6 +713,10 @@
sizeof("&time=") - 1);
b->last = ngx_sprintf(b->last, "%T", ngx_cached_time->sec - ctx->start);
+ b->last = ngx_cpymem(b->last, (u_char *) "×tamp=",
+ sizeof("×tamp=") - 1);
+ b->last = ngx_sprintf(b->last, "%D", s->current_time);
+
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,
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_play_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_play_module.h
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_receive.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_record_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_record_module.h
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_relay_module.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_relay_module.h
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_send.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_shared.c
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_stat_module.c
^
|
@@ -1,12 +1,15 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_http.h>
+#include <nginx.h>
#include "ngx_rtmp.h"
+#include "ngx_rtmp_version.h"
#include "ngx_rtmp_live_module.h"
#include "ngx_rtmp_play_module.h"
#include "ngx_rtmp_codec_module.h"
@@ -421,6 +424,11 @@
}
NGX_RTMP_STAT_L("</avsync>");
+ NGX_RTMP_STAT_L("<timestamp>");
+ NGX_RTMP_STAT(bbuf, ngx_snprintf(bbuf, sizeof(bbuf),
+ "%D", s->current_time) - bbuf);
+ NGX_RTMP_STAT_L("</timestamp>");
+
if (ctx->publishing) {
NGX_RTMP_STAT_L("<publishing/>");
}
@@ -507,6 +515,7 @@
ngx_rtmp_session_t *s;
ngx_uint_t n, nclients, total_nclients;
u_char buf[NGX_INT_T_LEN];
+ u_char bbuf[NGX_INT32_LEN];
ngx_rtmp_stat_loc_conf_t *slcf;
if (pacf->entries.nelts == 0) {
@@ -541,6 +550,11 @@
ngx_rtmp_stat_client(r, lll, s);
+ NGX_RTMP_STAT_L("<timestamp>");
+ NGX_RTMP_STAT(bbuf, ngx_snprintf(bbuf, sizeof(bbuf),
+ "%D", s->current_time) - bbuf);
+ NGX_RTMP_STAT_L("</timestamp>");
+
NGX_RTMP_STAT_L("</client>\r\n");
}
}
@@ -650,7 +664,11 @@
NGX_RTMP_STAT_L("<rtmp>\r\n");
#ifdef NGINX_VERSION
- NGX_RTMP_STAT_L("<version>" NGINX_VERSION "</version>\r\n");
+ NGX_RTMP_STAT_L("<nginx_version>" NGINX_VERSION "</nginx_version>\r\n");
+#endif
+
+#ifdef NGINX_RTMP_VERSION
+ NGX_RTMP_STAT_L("<nginx_rtmp_version>" NGINX_RTMP_VERSION "</nginx_rtmp_version>\r\n");
#endif
#ifdef NGX_COMPILER
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_streams.h
^
|
@@ -1,5 +1,6 @@
+
/*
- * Copyright (c) 2012 Roman Arutyunyan
+ * Copyright (C) Roman Arutyunyan
*/
|
[-]
[+]
|
Added |
nginx-rtmp-module-1.0.6.tar.bz2/ngx_rtmp_version.h
^
|
@@ -0,0 +1,15 @@
+
+/*
+ * Copyright (C) Roman Arutyunyan
+ */
+
+
+#ifndef _NGX_RTMP_VERSION_H_INCLUDED_
+#define _NGX_RTMP_VERSION_H_INCLUDED_
+
+
+#define nginx_rtmp_version 1000006
+#define NGINX_RTMP_VERSION "1.0.6"
+
+
+#endif /* _NGX_RTMP_VERSION_H_INCLUDED_ */
|
[-]
[+]
|
Changed |
nginx-rtmp-module-1.0.6.tar.bz2/stat.xsl
^
|
@@ -1,5 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
+
+<!--
+ Copyright (C) Roman Arutyunyan
+-->
+
+
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
@@ -11,8 +17,9 @@
<body>
<xsl:apply-templates select="rtmp"/>
<hr/>
- Generated by <a href='https://github.com/arut/nginx-rtmp-module'>NGINX RTMP module</a>,
- <a href="http://nginx.com">NGINX</a> <xsl:value-of select="/rtmp/version"/>,
+ Generated by <a href='https://github.com/arut/nginx-rtmp-module'>
+ nginx-rtmp-module</a> <xsl:value-of select="/rtmp/nginx_rtmp_version"/>,
+ <a href="http://nginx.org">nginx</a> <xsl:value-of select="/rtmp/nginx_version"/>,
pid <xsl:value-of select="/rtmp/pid"/>,
built <xsl:value-of select="/rtmp/built"/> <xsl:value-of select="/rtmp/compiler"/>
</body>
@@ -189,6 +196,7 @@
<th>Page URL</th>
<th>SWF URL</th>
<th>Dropped</th>
+ <th>Timestamp</th>
<th>A-V</th>
<th>Time</th>
</tr>
@@ -288,6 +296,7 @@
</td>
<td><xsl:value-of select="swfurl"/></td>
<td><xsl:value-of select="dropped"/></td>
+ <td><xsl:value-of select="timestamp"/></td>
<td><xsl:value-of select="avsync"/></td>
<td>
<xsl:call-template name="showtime">
|