正在显示
2 个修改的文件
包含
62 行增加
和
61 行删除
@@ -154,6 +154,7 @@ int SrsConfDirective::parse_conf(_srs_internal::SrsConfigBuffer* buffer, SrsDire | @@ -154,6 +154,7 @@ int SrsConfDirective::parse_conf(_srs_internal::SrsConfigBuffer* buffer, SrsDire | ||
154 | 154 | ||
155 | while (true) { | 155 | while (true) { |
156 | std::vector<string> args; | 156 | std::vector<string> args; |
157 | + | ||
157 | ret = read_token(buffer, args); | 158 | ret = read_token(buffer, args); |
158 | 159 | ||
159 | /** | 160 | /** |
@@ -169,21 +170,21 @@ int SrsConfDirective::parse_conf(_srs_internal::SrsConfigBuffer* buffer, SrsDire | @@ -169,21 +170,21 @@ int SrsConfDirective::parse_conf(_srs_internal::SrsConfigBuffer* buffer, SrsDire | ||
169 | } | 170 | } |
170 | if (ret == ERROR_SYSTEM_CONFIG_BLOCK_END) { | 171 | if (ret == ERROR_SYSTEM_CONFIG_BLOCK_END) { |
171 | if (type != parse_block) { | 172 | if (type != parse_block) { |
172 | - srs_error("line %d: unexpected \"}\"", buffer->line); | 173 | + srs_error("line %d: unexpected \"}\"", buffer->line + 1); |
173 | return ret; | 174 | return ret; |
174 | } | 175 | } |
175 | return ERROR_SUCCESS; | 176 | return ERROR_SUCCESS; |
176 | } | 177 | } |
177 | if (ret == ERROR_SYSTEM_CONFIG_EOF) { | 178 | if (ret == ERROR_SYSTEM_CONFIG_EOF) { |
178 | if (type == parse_block) { | 179 | if (type == parse_block) { |
179 | - srs_error("line %d: unexpected end of file, expecting \"}\"", buffer->line); | 180 | + srs_error("line %d: unexpected end of file, expecting \"}\"", conf_line + 1); |
180 | return ret; | 181 | return ret; |
181 | } | 182 | } |
182 | return ERROR_SUCCESS; | 183 | return ERROR_SUCCESS; |
183 | } | 184 | } |
184 | 185 | ||
185 | if (args.empty()) { | 186 | if (args.empty()) { |
186 | - srs_error("line %d: empty directive.", buffer->line); | 187 | + srs_error("line %d: empty directive.", conf_line + 1); |
187 | return ret; | 188 | return ret; |
188 | } | 189 | } |
189 | 190 | ||
@@ -258,7 +259,7 @@ int SrsConfDirective::read_token(_srs_internal::SrsConfigBuffer* buffer, vector< | @@ -258,7 +259,7 @@ int SrsConfDirective::read_token(_srs_internal::SrsConfigBuffer* buffer, vector< | ||
258 | if (ch == '{') { | 259 | if (ch == '{') { |
259 | return ERROR_SYSTEM_CONFIG_BLOCK_START; | 260 | return ERROR_SYSTEM_CONFIG_BLOCK_START; |
260 | } | 261 | } |
261 | - srs_error("line %d: unexpected '%c'", buffer->line, ch); | 262 | + srs_error("line %d: unexpected '%c'", buffer->line + 1, ch); |
262 | return ERROR_SYSTEM_CONFIG_INVALID; | 263 | return ERROR_SYSTEM_CONFIG_INVALID; |
263 | } | 264 | } |
264 | 265 | ||
@@ -271,19 +272,19 @@ int SrsConfDirective::read_token(_srs_internal::SrsConfigBuffer* buffer, vector< | @@ -271,19 +272,19 @@ int SrsConfDirective::read_token(_srs_internal::SrsConfigBuffer* buffer, vector< | ||
271 | switch (ch) { | 272 | switch (ch) { |
272 | case ';': | 273 | case ';': |
273 | if (args.size() == 0) { | 274 | if (args.size() == 0) { |
274 | - srs_error("line %d: unexpected ';'", buffer->line); | 275 | + srs_error("line %d: unexpected ';'", buffer->line + 1); |
275 | return ERROR_SYSTEM_CONFIG_INVALID; | 276 | return ERROR_SYSTEM_CONFIG_INVALID; |
276 | } | 277 | } |
277 | return ERROR_SYSTEM_CONFIG_DIRECTIVE; | 278 | return ERROR_SYSTEM_CONFIG_DIRECTIVE; |
278 | case '{': | 279 | case '{': |
279 | if (args.size() == 0) { | 280 | if (args.size() == 0) { |
280 | - srs_error("line %d: unexpected '{'", buffer->line); | 281 | + srs_error("line %d: unexpected '{'", buffer->line + 1); |
281 | return ERROR_SYSTEM_CONFIG_INVALID; | 282 | return ERROR_SYSTEM_CONFIG_INVALID; |
282 | } | 283 | } |
283 | return ERROR_SYSTEM_CONFIG_BLOCK_START; | 284 | return ERROR_SYSTEM_CONFIG_BLOCK_START; |
284 | case '}': | 285 | case '}': |
285 | if (args.size() != 0) { | 286 | if (args.size() != 0) { |
286 | - srs_error("line %d: unexpected '}'", buffer->line); | 287 | + srs_error("line %d: unexpected '}'", buffer->line + 1); |
287 | return ERROR_SYSTEM_CONFIG_INVALID; | 288 | return ERROR_SYSTEM_CONFIG_INVALID; |
288 | } | 289 | } |
289 | return ERROR_SYSTEM_CONFIG_BLOCK_END; | 290 | return ERROR_SYSTEM_CONFIG_BLOCK_END; |
@@ -1068,59 +1069,6 @@ int SrsConfig::parse_options(int argc, char** argv) | @@ -1068,59 +1069,6 @@ int SrsConfig::parse_options(int argc, char** argv) | ||
1068 | return ret; | 1069 | return ret; |
1069 | } | 1070 | } |
1070 | 1071 | ||
1071 | -int SrsConfig::parse_file(const char* filename) | ||
1072 | -{ | ||
1073 | - int ret = ERROR_SUCCESS; | ||
1074 | - | ||
1075 | - config_file = filename; | ||
1076 | - | ||
1077 | - if (config_file.empty()) { | ||
1078 | - return ERROR_SYSTEM_CONFIG_INVALID; | ||
1079 | - } | ||
1080 | - | ||
1081 | - _srs_internal::SrsConfigBuffer buffer; | ||
1082 | - | ||
1083 | - if ((ret = buffer.fullfill(config_file.c_str())) != ERROR_SUCCESS) { | ||
1084 | - return ret; | ||
1085 | - } | ||
1086 | - | ||
1087 | - if ((ret = root->parse(&buffer)) != ERROR_SUCCESS) { | ||
1088 | - return ret; | ||
1089 | - } | ||
1090 | - | ||
1091 | - SrsConfDirective* conf = NULL; | ||
1092 | - // check rtmp port specified by directive listen. | ||
1093 | - if ((conf = get_listen()) == NULL || conf->args.size() == 0) { | ||
1094 | - ret = ERROR_SYSTEM_CONFIG_INVALID; | ||
1095 | - srs_error("line %d: conf error, " | ||
1096 | - "directive \"listen\" is empty, ret=%d", (conf? conf->conf_line:0), ret); | ||
1097 | - return ret; | ||
1098 | - } | ||
1099 | - | ||
1100 | - // TODO: check the hls. | ||
1101 | - // TODO: check forward. | ||
1102 | - // TODO: check ffmpeg. | ||
1103 | - // TODO: check http. | ||
1104 | - // TODO: check pid. | ||
1105 | - | ||
1106 | - // check log | ||
1107 | - std::string log_filename = this->get_log_file(); | ||
1108 | - if (get_log_tank_file() && log_filename.empty()) { | ||
1109 | - ret = ERROR_SYSTEM_CONFIG_INVALID; | ||
1110 | - srs_error("must specifies the file to write log to. ret=%d", ret); | ||
1111 | - return ret; | ||
1112 | - } | ||
1113 | - if (get_log_tank_file()) { | ||
1114 | - srs_trace("write log to file %s", log_filename.c_str()); | ||
1115 | - srs_trace("you can: tailf %s", log_filename.c_str()); | ||
1116 | - srs_trace("@see: %s", SRS_WIKI_URL_LOG); | ||
1117 | - } else { | ||
1118 | - srs_trace("write log to console"); | ||
1119 | - } | ||
1120 | - | ||
1121 | - return ret; | ||
1122 | -} | ||
1123 | - | ||
1124 | int SrsConfig::parse_argv(int& i, char** argv) | 1072 | int SrsConfig::parse_argv(int& i, char** argv) |
1125 | { | 1073 | { |
1126 | int ret = ERROR_SUCCESS; | 1074 | int ret = ERROR_SUCCESS; |
@@ -1197,6 +1145,59 @@ void SrsConfig::print_help(char** argv) | @@ -1197,6 +1145,59 @@ void SrsConfig::print_help(char** argv) | ||
1197 | argv[0], argv[0], argv[0], argv[0]); | 1145 | argv[0], argv[0], argv[0], argv[0]); |
1198 | } | 1146 | } |
1199 | 1147 | ||
1148 | +int SrsConfig::parse_file(const char* filename) | ||
1149 | +{ | ||
1150 | + int ret = ERROR_SUCCESS; | ||
1151 | + | ||
1152 | + config_file = filename; | ||
1153 | + | ||
1154 | + if (config_file.empty()) { | ||
1155 | + return ERROR_SYSTEM_CONFIG_INVALID; | ||
1156 | + } | ||
1157 | + | ||
1158 | + _srs_internal::SrsConfigBuffer buffer; | ||
1159 | + | ||
1160 | + if ((ret = buffer.fullfill(config_file.c_str())) != ERROR_SUCCESS) { | ||
1161 | + return ret; | ||
1162 | + } | ||
1163 | + | ||
1164 | + if ((ret = root->parse(&buffer)) != ERROR_SUCCESS) { | ||
1165 | + return ret; | ||
1166 | + } | ||
1167 | + | ||
1168 | + SrsConfDirective* conf = NULL; | ||
1169 | + // check rtmp port specified by directive listen. | ||
1170 | + if ((conf = get_listen()) == NULL || conf->args.size() == 0) { | ||
1171 | + ret = ERROR_SYSTEM_CONFIG_INVALID; | ||
1172 | + srs_error("line %d: conf error, " | ||
1173 | + "directive \"listen\" is empty, ret=%d", (conf? conf->conf_line:0), ret); | ||
1174 | + return ret; | ||
1175 | + } | ||
1176 | + | ||
1177 | + // TODO: check the hls. | ||
1178 | + // TODO: check forward. | ||
1179 | + // TODO: check ffmpeg. | ||
1180 | + // TODO: check http. | ||
1181 | + // TODO: check pid. | ||
1182 | + | ||
1183 | + // check log | ||
1184 | + std::string log_filename = this->get_log_file(); | ||
1185 | + if (get_log_tank_file() && log_filename.empty()) { | ||
1186 | + ret = ERROR_SYSTEM_CONFIG_INVALID; | ||
1187 | + srs_error("must specifies the file to write log to. ret=%d", ret); | ||
1188 | + return ret; | ||
1189 | + } | ||
1190 | + if (get_log_tank_file()) { | ||
1191 | + srs_trace("write log to file %s", log_filename.c_str()); | ||
1192 | + srs_trace("you can: tailf %s", log_filename.c_str()); | ||
1193 | + srs_trace("@see: %s", SRS_WIKI_URL_LOG); | ||
1194 | + } else { | ||
1195 | + srs_trace("write log to console"); | ||
1196 | + } | ||
1197 | + | ||
1198 | + return ret; | ||
1199 | +} | ||
1200 | + | ||
1200 | string SrsConfig::cwd() | 1201 | string SrsConfig::cwd() |
1201 | { | 1202 | { |
1202 | return _cwd; | 1203 | return _cwd; |
@@ -245,9 +245,9 @@ private: | @@ -245,9 +245,9 @@ private: | ||
245 | public: | 245 | public: |
246 | virtual int parse_options(int argc, char** argv); | 246 | virtual int parse_options(int argc, char** argv); |
247 | private: | 247 | private: |
248 | - virtual int parse_file(const char* filename); | ||
249 | virtual int parse_argv(int& i, char** argv); | 248 | virtual int parse_argv(int& i, char** argv); |
250 | virtual void print_help(char** argv); | 249 | virtual void print_help(char** argv); |
250 | + virtual int parse_file(const char* filename); | ||
251 | public: | 251 | public: |
252 | virtual std::string cwd(); | 252 | virtual std::string cwd(); |
253 | virtual std::string argv(); | 253 | virtual std::string argv(); |
-
请 注册 或 登录 后发表评论