فهرست منبع

- updated to the latest changes in the cfg parser

Jan Janak 17 سال پیش
والد
کامیت
bb718b6a6d
1فایلهای تغییر یافته به همراه26 افزوده شده و 27 حذف شده
  1. 26 27
      modules/tls/tls_config.c

+ 26 - 27
modules/tls/tls_config.c

@@ -58,7 +58,7 @@ static int parse_ipv6(struct ip_addr* ip, cfg_token_t* token,
 	ip6_str.s = t.val.s;
 	while(1) {
 		ret = cfg_get_token(&t, st, 0);
-		if (ret <= 0) goto err;
+		if (ret != 0) goto err;
 		if (t.type == ']') break;
 		if (t.type != CFG_TOKEN_ALPHA && t.type != ':') goto err;
 	}
@@ -94,11 +94,11 @@ static int parse_ipv4(struct ip_addr* ip, cfg_token_t* token,
 	for(i = 1; i < 4; i++) {
 		ret = cfg_get_token(&t, st, 0);
 		if (ret < 0) return -1;
-		if (ret == 0 || t.type != '.')  goto err;
+		if (ret > 0 || t.type != '.')  goto err;
 		
 		ret = cfg_get_token(&t, st, 0);
 		if (ret < 0) return -1;
-		if (ret == 0 || t.type != CFG_TOKEN_ALPHA) goto err;
+		if (ret > 0 || t.type != CFG_TOKEN_ALPHA) goto err;
 		if (str2int(&t.val, &v) < 0)  goto err;
 		if (v < 0 || v > 255) goto err;
 		ip->u.addr[i] = v;
@@ -141,20 +141,20 @@ static cfg_option_t token_default[] = {
 
 
 static cfg_option_t options[] = {
-	{"method",              .param = methods, .f = cfg_parse_enum_val},
-	{"tls_method",          .param = methods, .f = cfg_parse_enum_val},
-	{"verify_certificate",  .f = cfg_parse_bool_val},
-	{"verify_cert",         .f = cfg_parse_bool_val},
-	{"verify_depth",        .f = cfg_parse_int_val},
-	{"require_certificate", .f = cfg_parse_bool_val},
-	{"require_cert",        .f = cfg_parse_bool_val},
-	{"private_key",         .f = cfg_parse_str_val, .flags = CFG_STR_SHMMEM},
-	{"pkey_file",           .f = cfg_parse_str_val, .flags = CFG_STR_SHMMEM},
-	{"calist_file",         .f = cfg_parse_str_val, .flags = CFG_STR_SHMMEM},
-	{"certificate",         .f = cfg_parse_str_val, .flags = CFG_STR_SHMMEM},
-	{"cert_file",           .f = cfg_parse_str_val, .flags = CFG_STR_SHMMEM},
-	{"cipher_list",         .f = cfg_parse_str_val, .flags = CFG_STR_SHMMEM},
-	{"ca_list",             .f = cfg_parse_str_val, .flags = CFG_STR_SHMMEM},
+	{"method",              .param = methods, .f = cfg_parse_enum_opt},
+	{"tls_method",          .param = methods, .f = cfg_parse_enum_opt},
+	{"verify_certificate",  .f = cfg_parse_bool_opt},
+	{"verify_cert",         .f = cfg_parse_bool_opt},
+	{"verify_depth",        .f = cfg_parse_int_opt},
+	{"require_certificate", .f = cfg_parse_bool_opt},
+	{"require_cert",        .f = cfg_parse_bool_opt},
+	{"private_key",         .f = cfg_parse_str_opt, .flags = CFG_STR_SHMMEM},
+	{"pkey_file",           .f = cfg_parse_str_opt, .flags = CFG_STR_SHMMEM},
+	{"calist_file",         .f = cfg_parse_str_opt, .flags = CFG_STR_SHMMEM},
+	{"certificate",         .f = cfg_parse_str_opt, .flags = CFG_STR_SHMMEM},
+	{"cert_file",           .f = cfg_parse_str_opt, .flags = CFG_STR_SHMMEM},
+	{"cipher_list",         .f = cfg_parse_str_opt, .flags = CFG_STR_SHMMEM},
+	{"ca_list",             .f = cfg_parse_str_opt, .flags = CFG_STR_SHMMEM},
 	{0}
 };
 
@@ -189,7 +189,7 @@ static int parse_hostport(int* type, struct ip_addr* ip, unsigned int* port,
 
 	ret = cfg_get_token(&t, st, 0);
 	if (ret < 0) return -1;
-	if (ret == 0) {
+	if (ret > 0) {
 		ERR("%s:%d:%d: Missing IP address\n", st->file, 
 			token->start.line, token->start.col);
 		return -1;
@@ -216,7 +216,7 @@ static int parse_hostport(int* type, struct ip_addr* ip, unsigned int* port,
 	     /* Parse port */
 	ret = cfg_get_token(&t, st, 0);
 	if (ret < 0) return -1;
-	if (ret == 0) {
+	if (ret > 0) {
 		ERR("%s:%d:%d: Syntax error, ':' expected\n", st->file, st->line, 
 			st->col);
 		return -1;
@@ -230,7 +230,7 @@ static int parse_hostport(int* type, struct ip_addr* ip, unsigned int* port,
 	
 	ret = cfg_get_token(&t, st, 0);
 	if (ret < 0) return -1;
-	if (ret == 0) {
+	if (ret > 0) {
 		ERR("%s:%d:%d: Premature end of file, port number missing\n", 
 		    st->file, t.start.line, t.start.col);
 		return -1;
@@ -259,7 +259,7 @@ static int parse_domain(void* param, cfg_parser_t* st, unsigned int flags)
 
 	ret = cfg_get_token(&t, st, 0);
 	if (ret < 0) return -1;
-	if (ret == 0) {
+	if (ret > 0) {
 		ERR("%s:%d:%d: TLS domain type missing\n", 
 		    st->file, st->line, st->col);
 		return -1;
@@ -274,7 +274,7 @@ static int parse_domain(void* param, cfg_parser_t* st, unsigned int flags)
 	
 	ret = cfg_get_token(&t, st, 0);
 	if (ret < 0) return -1;
-	if (ret == 0) {
+	if (ret > 0) {
 		ERR("%s:%d:%d: TLS domain IP address missing\n", 
 		    st->file, st->line, st->col);
 		return -1;
@@ -290,7 +290,7 @@ static int parse_domain(void* param, cfg_parser_t* st, unsigned int flags)
 
 	ret = cfg_get_token(&t, st, 0);
 	if (ret < 0) return -1;
-	if (ret == 0) {
+	if (ret > 0) {
 		ERR("%s:%d:%d: Closing ']' missing\n", 
 		    st->file, st->line, st->col);
 		return -1;
@@ -299,7 +299,9 @@ static int parse_domain(void* param, cfg_parser_t* st, unsigned int flags)
 		ERR("%s:%d:%d: Syntax error, ']' expected\n", 
 		    st->file, t.start.line, t.start.col);
 		return -1;
-	}	
+	}
+
+	if (cfg_eat_eol(st, flags)) return -1;
 
 	if ((domain = tls_new_domain(opt->val | type, &ip, port)) == NULL) {
 		ERR("%s:%d: Cannot create TLS domain structure\n", st->file, st->line);
@@ -370,6 +372,3 @@ int tls_parse_method(str* method)
 
     return opt->val;
 }
-
-
-