Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
srs
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
winlin
2015-01-18 16:38:26 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
2742c0d3c2d0217481afb201425650612da098e8
2742c0d3
1 parent
45134862
for #277, support http vhost mount.
显示空白字符变更
内嵌
并排对比
正在显示
5 个修改的文件
包含
30 行增加
和
9 行删除
trunk/conf/full.conf
trunk/conf/http.server.conf
trunk/src/app/srs_app_http.cpp
trunk/src/app/srs_app_http.hpp
trunk/src/app/srs_app_http_conn.cpp
trunk/conf/full.conf
查看文件 @
2742c0d
...
...
@@ -351,9 +351,12 @@ vhost http.srs.com {
# default: off
enabled
on
;
# the virtual directory root for this vhost to mount at
# for example, if mount to /hls, user access by http://server/hls
# default: /
mount
/
hls
;
# for example, if mount to [vhost]/hls, user access by http://[vhost]/hls
# the variables:
# [vhost] current vhost for http server.
# @remark the http of __defaultVhost__ will override the http_stream section.
# default: [vhost]/
mount
[
vhost
]/
hls
;
# main dir of vhost,
# to delivery HTTP stream of this vhost.
# default: ./objs/nginx/html
...
...
trunk/conf/http.server.conf
查看文件 @
2742c0d
...
...
@@ -8,10 +8,10 @@ http_stream {
listen
8080
;
dir
./
objs
/
nginx
/
html
;
}
vhost
__
defaultVhost__
{
vhost
ossrs
.
net
{
http
{
enabled
on
;
mount
/
default
;
mount
[
vhost
]/
;
dir
./
objs
/
nginx
/
html
;
}
}
...
...
trunk/src/app/srs_app_http.cpp
查看文件 @
2742c0d
...
...
@@ -287,8 +287,9 @@ int SrsGoHttpFileServer::serve_http(ISrsGoHttpResponseWriter* w, SrsHttpMessage*
string
fullpath
=
dir
+
"/"
;
srs_assert
(
entry
);
if
(
upath
.
length
()
>
entry
->
pattern
.
length
())
{
fullpath
+=
upath
.
substr
(
entry
->
pattern
.
length
());
size_t
pos
=
entry
->
pattern
.
find
(
"/"
);
if
(
upath
.
length
()
>
entry
->
pattern
.
length
()
&&
pos
!=
string
::
npos
)
{
fullpath
+=
upath
.
substr
(
entry
->
pattern
.
length
()
-
pos
);
}
else
{
fullpath
+=
upath
;
}
...
...
@@ -402,6 +403,7 @@ SrsGoHttpMuxEntry::~SrsGoHttpMuxEntry()
SrsGoHttpServeMux
::
SrsGoHttpServeMux
()
{
hosts
=
false
;
}
SrsGoHttpServeMux
::~
SrsGoHttpServeMux
()
...
...
@@ -442,6 +444,10 @@ int SrsGoHttpServeMux::handle(std::string pattern, ISrsGoHttpHandler* handler)
}
}
if
(
pattern
.
at
(
0
)
!=
'/'
)
{
hosts
=
true
;
}
if
(
true
)
{
SrsGoHttpMuxEntry
*
entry
=
new
SrsGoHttpMuxEntry
();
entry
->
explicit_match
=
true
;
...
...
@@ -538,6 +544,11 @@ int SrsGoHttpServeMux::match(SrsHttpMessage* r, ISrsGoHttpHandler** ph)
std
::
string
path
=
r
->
path
();
// Host-specific pattern takes precedence over generic ones
if
(
hosts
)
{
path
=
r
->
host
()
+
path
;
}
int
nb_matched
=
0
;
ISrsGoHttpHandler
*
h
=
NULL
;
...
...
@@ -700,7 +711,8 @@ int SrsHttpMessage::initialize()
int
ret
=
ERROR_SUCCESS
;
// parse uri to schema/server:port/path?query
if
((
ret
=
_uri
->
initialize
(
_url
))
!=
ERROR_SUCCESS
)
{
std
::
string
uri
=
"http://"
+
get_request_header
(
"Host"
)
+
_url
;
if
((
ret
=
_uri
->
initialize
(
uri
))
!=
ERROR_SUCCESS
)
{
return
ret
;
}
...
...
@@ -822,7 +834,7 @@ string SrsHttpMessage::url()
string
SrsHttpMessage
::
host
()
{
return
get_request_header
(
"Host"
);
return
_uri
->
get_host
(
);
}
string
SrsHttpMessage
::
path
()
...
...
trunk/src/app/srs_app_http.hpp
查看文件 @
2742c0d
...
...
@@ -266,6 +266,8 @@ class SrsGoHttpServeMux
{
private
:
std
::
map
<
std
::
string
,
SrsGoHttpMuxEntry
*>
entries
;
// whether any patterns contain hostnames
bool
hosts
;
public
:
SrsGoHttpServeMux
();
virtual
~
SrsGoHttpServeMux
();
...
...
trunk/src/app/srs_app_http_conn.cpp
查看文件 @
2742c0d
...
...
@@ -166,11 +166,15 @@ int SrsHttpServer::initialize()
std
::
string
mount
=
_srs_config
->
get_vhost_http_mount
(
vhost
);
std
::
string
dir
=
_srs_config
->
get_vhost_http_dir
(
vhost
);
// replace the vhost variable
mount
=
srs_string_replace
(
mount
,
"[vhost]"
,
vhost
);
// the dir mount must always ends with "/"
if
(
mount
!=
"/"
&&
mount
.
rfind
(
"/"
)
!=
mount
.
length
()
-
1
)
{
mount
+=
"/"
;
}
// mount the http of vhost.
if
((
ret
=
mux
.
handle
(
mount
,
new
SrsVodStream
(
dir
)))
!=
ERROR_SUCCESS
)
{
srs_error
(
"http: mount dir=%s for vhost=%s failed. ret=%d"
,
dir
.
c_str
(),
vhost
.
c_str
(),
ret
);
return
ret
;
...
...
请
注册
或
登录
后发表评论