正在显示
3 个修改的文件
包含
37 行增加
和
1 行删除
| @@ -1182,6 +1182,13 @@ int SrsConfig::parse_buffer(_srs_internal::SrsConfigBuffer* buffer) | @@ -1182,6 +1182,13 @@ int SrsConfig::parse_buffer(_srs_internal::SrsConfigBuffer* buffer) | ||
| 1182 | if ((ret = root->parse(buffer)) != ERROR_SUCCESS) { | 1182 | if ((ret = root->parse(buffer)) != ERROR_SUCCESS) { |
| 1183 | return ret; | 1183 | return ret; |
| 1184 | } | 1184 | } |
| 1185 | + | ||
| 1186 | + // check empty | ||
| 1187 | + if (root->directives.size() == 0) { | ||
| 1188 | + ret = ERROR_SYSTEM_CONFIG_INVALID; | ||
| 1189 | + srs_error("conf is empty, ret=%d", ret); | ||
| 1190 | + return ret; | ||
| 1191 | + } | ||
| 1185 | 1192 | ||
| 1186 | // check root directives. | 1193 | // check root directives. |
| 1187 | for (int i = 0; i < (int)root->directives.size(); i++) { | 1194 | for (int i = 0; i < (int)root->directives.size(); i++) { |
| @@ -1200,7 +1207,7 @@ int SrsConfig::parse_buffer(_srs_internal::SrsConfigBuffer* buffer) | @@ -1200,7 +1207,7 @@ int SrsConfig::parse_buffer(_srs_internal::SrsConfigBuffer* buffer) | ||
| 1200 | } | 1207 | } |
| 1201 | 1208 | ||
| 1202 | // check rtmp port specified by directive listen. | 1209 | // check rtmp port specified by directive listen. |
| 1203 | - if (_srs_config->get_listen().size() <= 0) { | 1210 | + if (get_listen().size() <= 0) { |
| 1204 | ret = ERROR_SYSTEM_CONFIG_INVALID; | 1211 | ret = ERROR_SYSTEM_CONFIG_INVALID; |
| 1205 | srs_error("directive \"listen\" is empty, ret=%d", ret); | 1212 | srs_error("directive \"listen\" is empty, ret=%d", ret); |
| 1206 | return ret; | 1213 | return ret; |
| @@ -53,6 +53,20 @@ int MockSrsConfigBuffer::fullfill(const char* /*filename*/) | @@ -53,6 +53,20 @@ int MockSrsConfigBuffer::fullfill(const char* /*filename*/) | ||
| 53 | return ERROR_SUCCESS; | 53 | return ERROR_SUCCESS; |
| 54 | } | 54 | } |
| 55 | 55 | ||
| 56 | +MockSrsConfig::MockSrsConfig() | ||
| 57 | +{ | ||
| 58 | +} | ||
| 59 | + | ||
| 60 | +MockSrsConfig::~MockSrsConfig() | ||
| 61 | +{ | ||
| 62 | +} | ||
| 63 | + | ||
| 64 | +int MockSrsConfig::parse(string buf) | ||
| 65 | +{ | ||
| 66 | + MockSrsConfigBuffer buffer(buf); | ||
| 67 | + return parse_buffer(&buffer); | ||
| 68 | +} | ||
| 69 | + | ||
| 56 | VOID TEST(ConfigTest, CheckMacros) | 70 | VOID TEST(ConfigTest, CheckMacros) |
| 57 | { | 71 | { |
| 58 | #ifndef SRS_CONSTS_LOCALHOST | 72 | #ifndef SRS_CONSTS_LOCALHOST |
| @@ -777,3 +791,9 @@ VOID TEST(ConfigDirectiveTest, ParseLineNormal) | @@ -777,3 +791,9 @@ VOID TEST(ConfigDirectiveTest, ParseLineNormal) | ||
| 777 | EXPECT_EQ(0, (int)dir2.directives.size()); | 791 | EXPECT_EQ(0, (int)dir2.directives.size()); |
| 778 | EXPECT_EQ(3, (int)dir2.conf_line); | 792 | EXPECT_EQ(3, (int)dir2.conf_line); |
| 779 | } | 793 | } |
| 794 | + | ||
| 795 | +VOID TEST(ConfigMainTest, ParseEmpty) | ||
| 796 | +{ | ||
| 797 | + MockSrsConfig conf; | ||
| 798 | + EXPECT_TRUE(ERROR_SUCCESS != conf.parse("")); | ||
| 799 | +} |
| @@ -42,4 +42,13 @@ public: | @@ -42,4 +42,13 @@ public: | ||
| 42 | virtual int fullfill(const char* filename); | 42 | virtual int fullfill(const char* filename); |
| 43 | }; | 43 | }; |
| 44 | 44 | ||
| 45 | +class MockSrsConfig : public SrsConfig | ||
| 46 | +{ | ||
| 47 | +public: | ||
| 48 | + MockSrsConfig(); | ||
| 49 | + virtual ~MockSrsConfig(); | ||
| 50 | +public: | ||
| 51 | + virtual int parse(std::string buf); | ||
| 52 | +}; | ||
| 53 | + | ||
| 45 | #endif | 54 | #endif |
-
请 注册 或 登录 后发表评论