"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/cfg_parser.c" between
hitch-1.7.0.tar.gz and hitch-1.7.2.tar.gz

About: Hitch is a libev-based high performance SSL/TLS proxy that terminates TLS/SSL connections and forwards the unencrypted traffic to some backend.

cfg_parser.c  (hitch-1.7.0):cfg_parser.c  (hitch-1.7.2)
skipping to change at line 614 skipping to change at line 614
static const yytype_uint16 yyrline[] = static const yytype_uint16 yyrline[] =
{ {
0, 69, 69, 73, 74, 78, 79, 80, 81, 82, 0, 69, 69, 73, 74, 78, 79, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
123, 124, 125, 126, 130, 136, 136, 147, 149, 150, 123, 124, 125, 126, 130, 136, 136, 147, 149, 150,
154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
164, 165, 166, 169, 178, 180, 183, 184, 188, 189, 164, 165, 166, 169, 178, 180, 183, 184, 188, 189,
190, 191, 194, 196, 201, 208, 212, 225, 233, 240, 190, 191, 194, 196, 201, 208, 212, 225, 233, 241,
244, 248, 253, 267, 267, 282, 284, 289, 291, 296, 245, 249, 254, 268, 268, 283, 285, 290, 292, 297,
313, 330, 330, 342, 342, 344, 345, 346, 347, 348, 314, 331, 331, 343, 343, 345, 346, 347, 348, 349,
350, 354, 361, 365, 372, 374, 376, 378, 393, 408, 351, 355, 362, 366, 373, 375, 377, 379, 394, 409,
408, 418, 418, 420, 421, 422, 423, 424, 426, 428, 409, 419, 419, 421, 422, 423, 424, 425, 427, 429,
432, 439, 447, 453, 453, 472, 473, 474, 478, 484, 433, 440, 448, 454, 454, 473, 474, 475, 479, 486,
491, 498, 505, 507, 509, 513, 517, 519, 521, 523, 494, 501, 508, 510, 512, 516, 520, 522, 524, 526,
525, 532, 540, 542, 544, 552, 554, 564, 577, 590, 528, 535, 543, 545, 547, 555, 557, 567, 580, 593,
603, 613, 617, 623, 626, 632, 638, 647 606, 616, 620, 627, 630, 636, 642, 651
}; };
#endif #endif
#if YYDEBUG || YYERROR_VERBOSE || 0 #if YYDEBUG || YYERROR_VERBOSE || 0
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] = static const char *const yytname[] =
{ {
"$end", "error", "$undefined", "INT", "UINT", "BOOL", "STRING", "$end", "error", "$undefined", "INT", "UINT", "BOOL", "STRING",
"TOK_CIPHERS", "TOK_SSL_ENGINE", "TOK_PREFER_SERVER_CIPHERS", "TOK_CIPHERS", "TOK_SSL_ENGINE", "TOK_PREFER_SERVER_CIPHERS",
skipping to change at line 1724 skipping to change at line 1724
else else
cfg->PEM_DIR_GLOB = NULL; cfg->PEM_DIR_GLOB = NULL;
} }
#line 1748 "cfg_parser.c" /* yacc.c:1652 */ #line 1748 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 88: case 88:
#line 233 "cfg_parser.y" /* yacc.c:1652 */ #line 233 "cfg_parser.y" /* yacc.c:1652 */
{ {
free(cfg->OCSP_DIR);
if ((yyvsp[0].s)) if ((yyvsp[0].s))
cfg->OCSP_DIR = strdup((yyvsp[0].s)); cfg->OCSP_DIR = strdup((yyvsp[0].s));
else else
cfg->OCSP_DIR = NULL; cfg->OCSP_DIR = NULL;
} }
#line 1759 "cfg_parser.c" /* yacc.c:1652 */ #line 1760 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 89: case 89:
#line 240 "cfg_parser.y" /* yacc.c:1652 */ #line 241 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->OCSP_RESP_TMO = (yyvsp[0].i); cfg->OCSP_RESP_TMO = (yyvsp[0].i);
} }
#line 1767 "cfg_parser.c" /* yacc.c:1652 */ #line 1768 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 90: case 90:
#line 244 "cfg_parser.y" /* yacc.c:1652 */ #line 245 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->OCSP_CONN_TMO = (yyvsp[0].i); cfg->OCSP_CONN_TMO = (yyvsp[0].i);
} }
#line 1775 "cfg_parser.c" /* yacc.c:1652 */ #line 1776 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 91: case 91:
#line 248 "cfg_parser.y" /* yacc.c:1652 */ #line 249 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->OCSP_REFRESH_INTERVAL = (yyvsp[0].i); cfg->OCSP_REFRESH_INTERVAL = (yyvsp[0].i);
} }
#line 1783 "cfg_parser.c" /* yacc.c:1652 */ #line 1784 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 92: case 92:
#line 253 "cfg_parser.y" /* yacc.c:1652 */ #line 254 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s) != NULL) { if ((yyvsp[0].s) != NULL) {
int r; int r;
struct cfg_cert_file *cert; struct cfg_cert_file *cert;
cert = cfg_cert_file_new(); cert = cfg_cert_file_new();
cert->filename = strdup((yyvsp[0].s)); cert->filename = strdup((yyvsp[0].s));
r = cfg_cert_vfy(cert); r = cfg_cert_vfy(cert);
if (r == 0) { if (r == 0) {
cfg_cert_file_free(&cert); cfg_cert_file_free(&cert);
YYABORT; YYABORT;
} }
cfg_cert_add(cert, &cur_fa->certs); cfg_cert_add(cert, &cur_fa->certs);
} }
} }
#line 1802 "cfg_parser.c" /* yacc.c:1652 */ #line 1803 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 93: case 93:
#line 267 "cfg_parser.y" /* yacc.c:1652 */ #line 268 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* NB: Mid-rule action */ /* NB: Mid-rule action */
AZ(cur_pem); AZ(cur_pem);
cur_pem = cfg_cert_file_new(); cur_pem = cfg_cert_file_new();
} }
#line 1812 "cfg_parser.c" /* yacc.c:1652 */ #line 1813 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 94: case 94:
#line 272 "cfg_parser.y" /* yacc.c:1652 */ #line 273 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cfg_cert_vfy(cur_pem) != 0) if (cfg_cert_vfy(cur_pem) != 0)
cfg_cert_add(cur_pem, &cur_fa->certs); cfg_cert_add(cur_pem, &cur_fa->certs);
else { else {
cfg_cert_file_free(&cur_pem); cfg_cert_file_free(&cur_pem);
YYABORT; YYABORT;
} }
cur_pem = NULL; cur_pem = NULL;
} }
#line 1826 "cfg_parser.c" /* yacc.c:1652 */ #line 1827 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 96: case 96:
#line 284 "cfg_parser.y" /* yacc.c:1652 */ #line 285 "cfg_parser.y" /* yacc.c:1652 */
{ {
cur_fa->client_verify_ca = strdup((yyvsp[0].s)); cur_fa->client_verify_ca = strdup((yyvsp[0].s));
} }
#line 1834 "cfg_parser.c" /* yacc.c:1652 */ #line 1835 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 97: case 97:
#line 289 "cfg_parser.y" /* yacc.c:1652 */ #line 290 "cfg_parser.y" /* yacc.c:1652 */
{ cur_fa->match_global_certs = (yyvsp[0].i); } { cur_fa->match_global_certs = (yyvsp[0].i); }
#line 1840 "cfg_parser.c" /* yacc.c:1652 */ #line 1841 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 98: case 98:
#line 291 "cfg_parser.y" /* yacc.c:1652 */ #line 292 "cfg_parser.y" /* yacc.c:1652 */
{ {
cur_fa->sni_nomatch_abort = (yyvsp[0].i); cur_fa->sni_nomatch_abort = (yyvsp[0].i);
} }
#line 1848 "cfg_parser.c" /* yacc.c:1652 */ #line 1849 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 99: case 99:
#line 296 "cfg_parser.y" /* yacc.c:1652 */ #line 297 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cur_fa->selected_protos != 0) { if (cur_fa->selected_protos != 0) {
fprintf(stderr, "%s (%s, line %d):" fprintf(stderr, "%s (%s, line %d):"
" It is illegal to specify tls after ssl," " It is illegal to specify tls after ssl,"
" tls or tls-protos.\n", " tls or tls-protos.\n",
__func__, __FILE__, __LINE__); __func__, __FILE__, __LINE__);
front_arg_destroy(cur_fa); front_arg_destroy(cur_fa);
cur_fa = NULL; cur_fa = NULL;
YYABORT; YYABORT;
} }
if ((yyvsp[0].i)) if ((yyvsp[0].i))
cur_fa->selected_protos = TLS_OPTION_PROTOS; cur_fa->selected_protos = TLS_OPTION_PROTOS;
else else
fprintf(stderr, fprintf(stderr,
"Warning: tls = off is deprecated and has no effect.\n"); "Warning: tls = off is deprecated and has no effect.\n");
} }
#line 1869 "cfg_parser.c" /* yacc.c:1652 */ #line 1870 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 100: case 100:
#line 313 "cfg_parser.y" /* yacc.c:1652 */ #line 314 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cur_fa->selected_protos != 0) { if (cur_fa->selected_protos != 0) {
fprintf(stderr, "%s (%s, line %d):" fprintf(stderr, "%s (%s, line %d):"
" It is illegal to specify ssl after ssl," " It is illegal to specify ssl after ssl,"
" tls or tls-protos.\n", " tls or tls-protos.\n",
__func__, __FILE__, __LINE__); __func__, __FILE__, __LINE__);
front_arg_destroy(cur_fa); front_arg_destroy(cur_fa);
cur_fa = NULL; cur_fa = NULL;
YYABORT; YYABORT;
} }
if ((yyvsp[0].i)) if ((yyvsp[0].i))
cur_fa->selected_protos = SSL_OPTION_PROTOS; cur_fa->selected_protos = SSL_OPTION_PROTOS;
else else
fprintf(stderr, fprintf(stderr,
"Warning: ssl = off is deprecated and has no effect.\n"); "Warning: ssl = off is deprecated and has no effect.\n");
} }
#line 1890 "cfg_parser.c" /* yacc.c:1652 */ #line 1891 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 101: case 101:
#line 330 "cfg_parser.y" /* yacc.c:1652 */ #line 331 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cur_fa->selected_protos != 0) { if (cur_fa->selected_protos != 0) {
fprintf(stderr, "%s (%s, line %d):" fprintf(stderr, "%s (%s, line %d):"
" It is illegal to specify tls-protos after" " It is illegal to specify tls-protos after"
" ssl, tls or tls-protos\nSelected before was %d\n", " ssl, tls or tls-protos\nSelected before was %d\n",
__func__, __FILE__, __LINE__, cur_fa->selected_protos); __func__, __FILE__, __LINE__, cur_fa->selected_protos);
front_arg_destroy(cur_fa); front_arg_destroy(cur_fa);
cur_fa = NULL; cur_fa = NULL;
YYABORT; YYABORT;
} }
} }
#line 1906 "cfg_parser.c" /* yacc.c:1652 */ #line 1907 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 105: case 105:
#line 344 "cfg_parser.y" /* yacc.c:1652 */ #line 345 "cfg_parser.y" /* yacc.c:1652 */
{ cur_fa->selected_protos |= SSLv3_PROTO; } { cur_fa->selected_protos |= SSLv3_PROTO; }
#line 1912 "cfg_parser.c" /* yacc.c:1652 */ #line 1913 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 106: case 106:
#line 345 "cfg_parser.y" /* yacc.c:1652 */ #line 346 "cfg_parser.y" /* yacc.c:1652 */
{ cur_fa->selected_protos |= TLSv1_0_PROTO; } { cur_fa->selected_protos |= TLSv1_0_PROTO; }
#line 1918 "cfg_parser.c" /* yacc.c:1652 */ #line 1919 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 107: case 107:
#line 346 "cfg_parser.y" /* yacc.c:1652 */ #line 347 "cfg_parser.y" /* yacc.c:1652 */
{ cur_fa->selected_protos |= TLSv1_1_PROTO; } { cur_fa->selected_protos |= TLSv1_1_PROTO; }
#line 1924 "cfg_parser.c" /* yacc.c:1652 */ #line 1925 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 108: case 108:
#line 347 "cfg_parser.y" /* yacc.c:1652 */ #line 348 "cfg_parser.y" /* yacc.c:1652 */
{ cur_fa->selected_protos |= TLSv1_2_PROTO; } { cur_fa->selected_protos |= TLSv1_2_PROTO; }
#line 1930 "cfg_parser.c" /* yacc.c:1652 */ #line 1931 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 109: case 109:
#line 348 "cfg_parser.y" /* yacc.c:1652 */ #line 349 "cfg_parser.y" /* yacc.c:1652 */
{ cur_fa->selected_protos |= TLSv1_3_PROTO; } { cur_fa->selected_protos |= TLSv1_3_PROTO; }
#line 1936 "cfg_parser.c" /* yacc.c:1652 */ #line 1937 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 110: case 110:
#line 350 "cfg_parser.y" /* yacc.c:1652 */ #line 351 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) cur_fa->ciphers_tlsv12 = strdup((yyvsp[0].s)); if ((yyvsp[0].s)) cur_fa->ciphers_tlsv12 = strdup((yyvsp[0].s));
} }
#line 1944 "cfg_parser.c" /* yacc.c:1652 */ #line 1945 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 111: case 111:
#line 354 "cfg_parser.y" /* yacc.c:1652 */ #line 355 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) { if ((yyvsp[0].s)) {
CHECK_OBJ_NOTNULL(cur_fa, FRONT_ARG_MAGIC); CHECK_OBJ_NOTNULL(cur_fa, FRONT_ARG_MAGIC);
cur_fa->ciphersuites_tlsv13 = strdup((yyvsp[0].s)); cur_fa->ciphersuites_tlsv13 = strdup((yyvsp[0].s));
} }
} }
#line 1955 "cfg_parser.c" /* yacc.c:1652 */ #line 1956 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 112: case 112:
#line 361 "cfg_parser.y" /* yacc.c:1652 */ #line 362 "cfg_parser.y" /* yacc.c:1652 */
{ {
cur_fa->prefer_server_ciphers = (yyvsp[0].i); cur_fa->prefer_server_ciphers = (yyvsp[0].i);
} }
#line 1963 "cfg_parser.c" /* yacc.c:1652 */ #line 1964 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 113: case 113:
#line 365 "cfg_parser.y" /* yacc.c:1652 */ #line 366 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].i)) if ((yyvsp[0].i))
cfg->LOG_LEVEL = 0; cfg->LOG_LEVEL = 0;
else else
cfg->LOG_LEVEL = 1; cfg->LOG_LEVEL = 1;
} }
#line 1974 "cfg_parser.c" /* yacc.c:1652 */ #line 1975 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 114: case 114:
#line 372 "cfg_parser.y" /* yacc.c:1652 */ #line 373 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->NCORES = (yyvsp[0].i); } { cfg->NCORES = (yyvsp[0].i); }
#line 1980 "cfg_parser.c" /* yacc.c:1652 */ #line 1981 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 115: case 115:
#line 374 "cfg_parser.y" /* yacc.c:1652 */ #line 375 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->BACKLOG = (yyvsp[0].i); } { cfg->BACKLOG = (yyvsp[0].i); }
#line 1986 "cfg_parser.c" /* yacc.c:1652 */ #line 1987 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 116: case 116:
#line 376 "cfg_parser.y" /* yacc.c:1652 */ #line 377 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->TCP_KEEPALIVE_TIME = (yyvsp[0].i); } { cfg->TCP_KEEPALIVE_TIME = (yyvsp[0].i); }
#line 1992 "cfg_parser.c" /* yacc.c:1652 */ #line 1993 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 117: case 117:
#line 378 "cfg_parser.y" /* yacc.c:1652 */ #line 379 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cfg->SELECTED_TLS_PROTOS != 0) { if (cfg->SELECTED_TLS_PROTOS != 0) {
fprintf(stderr, "%s (%s, line %d):" fprintf(stderr, "%s (%s, line %d):"
" It is illegal to specify tls after ssl," " It is illegal to specify tls after ssl,"
" tls or tls-protos\n", " tls or tls-protos\n",
__func__, __FILE__, __LINE__); __func__, __FILE__, __LINE__);
YYABORT; YYABORT;
} }
if ((yyvsp[0].i)) if ((yyvsp[0].i))
cfg->SELECTED_TLS_PROTOS = TLS_OPTION_PROTOS; cfg->SELECTED_TLS_PROTOS = TLS_OPTION_PROTOS;
else else
fprintf(stderr, fprintf(stderr,
"Warning: tls = off is deprecated and has no effect.\n"); "Warning: tls = off is deprecated and has no effect.\n");
} }
#line 2011 "cfg_parser.c" /* yacc.c:1652 */ #line 2012 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 118: case 118:
#line 393 "cfg_parser.y" /* yacc.c:1652 */ #line 394 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cfg->SELECTED_TLS_PROTOS != 0) { if (cfg->SELECTED_TLS_PROTOS != 0) {
fprintf(stderr, "%s (%s, line %d):" fprintf(stderr, "%s (%s, line %d):"
" It is illegal to specify ssl after ssl," " It is illegal to specify ssl after ssl,"
" tls or tls-protos.\n", " tls or tls-protos.\n",
__func__, __FILE__, __LINE__); __func__, __FILE__, __LINE__);
YYABORT; YYABORT;
} }
if ((yyvsp[0].i)) if ((yyvsp[0].i))
cfg->SELECTED_TLS_PROTOS = SSL_OPTION_PROTOS; cfg->SELECTED_TLS_PROTOS = SSL_OPTION_PROTOS;
else else
fprintf(stderr, fprintf(stderr,
"Warning: ssl = off is deprecated and has no effect.\n"); "Warning: ssl = off is deprecated and has no effect.\n");
} }
#line 2030 "cfg_parser.c" /* yacc.c:1652 */ #line 2031 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 119: case 119:
#line 408 "cfg_parser.y" /* yacc.c:1652 */ #line 409 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cfg->SELECTED_TLS_PROTOS != 0) { if (cfg->SELECTED_TLS_PROTOS != 0) {
fprintf(stderr, "%s (%s, line %d):" fprintf(stderr, "%s (%s, line %d):"
" It is illegal to specify tls-protos after" " It is illegal to specify tls-protos after"
" ssl, tls or tls-protos\n", " ssl, tls or tls-protos\n",
__func__, __FILE__, __LINE__); __func__, __FILE__, __LINE__);
YYABORT; YYABORT;
} }
} }
#line 2044 "cfg_parser.c" /* yacc.c:1652 */ #line 2045 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 123: case 123:
#line 420 "cfg_parser.y" /* yacc.c:1652 */ #line 421 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->SELECTED_TLS_PROTOS |= SSLv3_PROTO; } { cfg->SELECTED_TLS_PROTOS |= SSLv3_PROTO; }
#line 2050 "cfg_parser.c" /* yacc.c:1652 */ #line 2051 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 124: case 124:
#line 421 "cfg_parser.y" /* yacc.c:1652 */ #line 422 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->SELECTED_TLS_PROTOS |= TLSv1_0_PROTO; } { cfg->SELECTED_TLS_PROTOS |= TLSv1_0_PROTO; }
#line 2056 "cfg_parser.c" /* yacc.c:1652 */ #line 2057 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 125: case 125:
#line 422 "cfg_parser.y" /* yacc.c:1652 */ #line 423 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->SELECTED_TLS_PROTOS |= TLSv1_1_PROTO; } { cfg->SELECTED_TLS_PROTOS |= TLSv1_1_PROTO; }
#line 2062 "cfg_parser.c" /* yacc.c:1652 */ #line 2063 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 126: case 126:
#line 423 "cfg_parser.y" /* yacc.c:1652 */ #line 424 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->SELECTED_TLS_PROTOS |= TLSv1_2_PROTO; } { cfg->SELECTED_TLS_PROTOS |= TLSv1_2_PROTO; }
#line 2068 "cfg_parser.c" /* yacc.c:1652 */ #line 2069 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 127: case 127:
#line 424 "cfg_parser.y" /* yacc.c:1652 */ #line 425 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->SELECTED_TLS_PROTOS |= TLSv1_3_PROTO; } { cfg->SELECTED_TLS_PROTOS |= TLSv1_3_PROTO; }
#line 2074 "cfg_parser.c" /* yacc.c:1652 */ #line 2075 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 128: case 128:
#line 426 "cfg_parser.y" /* yacc.c:1652 */ #line 427 "cfg_parser.y" /* yacc.c:1652 */
{ if ((yyvsp[0].s)) cfg->ENGINE = strdup((yyvsp[0].s)); } { if ((yyvsp[0].s)) cfg->ENGINE = strdup((yyvsp[0].s)); }
#line 2080 "cfg_parser.c" /* yacc.c:1652 */ #line 2081 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 129: case 129:
#line 428 "cfg_parser.y" /* yacc.c:1652 */ #line 429 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->PREFER_SERVER_CIPHERS = (yyvsp[0].i); cfg->PREFER_SERVER_CIPHERS = (yyvsp[0].i);
} }
#line 2088 "cfg_parser.c" /* yacc.c:1652 */ #line 2089 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 130: case 130:
#line 432 "cfg_parser.y" /* yacc.c:1652 */ #line 433 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("chroot", (yyvsp[0].s), cfg, "" , if ((yyvsp[0].s) && config_param_validate("chroot", (yyvsp[0].s), cfg, "" ,
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2099 "cfg_parser.c" /* yacc.c:1652 */ #line 2100 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 131: case 131:
#line 439 "cfg_parser.y" /* yacc.c:1652 */ #line 440 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("backend", (yyvsp[0].s), cfg, " ", if ((yyvsp[0].s) && config_param_validate("backend", (yyvsp[0].s), cfg, " ",
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2110 "cfg_parser.c" /* yacc.c:1652 */ #line 2111 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 132: case 132:
#line 447 "cfg_parser.y" /* yacc.c:1652 */ #line 448 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("pem-file", (yyvsp[0].s ), cfg, "", if ((yyvsp[0].s) && config_param_validate("pem-file", (yyvsp[0].s ), cfg, "",
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2121 "cfg_parser.c" /* yacc.c:1652 */ #line 2122 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 133: case 133:
#line 453 "cfg_parser.y" /* yacc.c:1652 */ #line 454 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* NB: Mid-rule action */ /* NB: Mid-rule action */
AZ(cur_pem); AZ(cur_pem);
cur_pem = cfg_cert_file_new(); cur_pem = cfg_cert_file_new();
} }
#line 2131 "cfg_parser.c" /* yacc.c:1652 */ #line 2132 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 134: case 134:
#line 458 "cfg_parser.y" /* yacc.c:1652 */ #line 459 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cfg_cert_vfy(cur_pem) != 0) { if (cfg_cert_vfy(cur_pem) != 0) {
if (cfg->CERT_DEFAULT != NULL) { if (cfg->CERT_DEFAULT != NULL) {
struct cfg_cert_file *tmp = cfg->CERT_DEFAULT; struct cfg_cert_file *tmp = cfg->CERT_DEFAULT;
cfg_cert_add(tmp, &cfg->CERT_FILES); cfg_cert_add(tmp, &cfg->CERT_FILES);
} }
cfg->CERT_DEFAULT = cur_pem; cfg->CERT_DEFAULT = cur_pem;
} else { } else {
cfg_cert_file_free(&cur_pem); cfg_cert_file_free(&cur_pem);
YYABORT; YYABORT;
} }
cur_pem = NULL; cur_pem = NULL;
} }
#line 2149 "cfg_parser.c" /* yacc.c:1652 */ #line 2150 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 135: case 135:
#line 472 "cfg_parser.y" /* yacc.c:1652 */ #line 473 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->SYSLOG = (yyvsp[0].i); } { cfg->SYSLOG = (yyvsp[0].i); }
#line 2155 "cfg_parser.c" /* yacc.c:1652 */ #line 2156 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 136: case 136:
#line 473 "cfg_parser.y" /* yacc.c:1652 */ #line 474 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->DAEMONIZE = (yyvsp[0].i); } { cfg->DAEMONIZE = (yyvsp[0].i); }
#line 2161 "cfg_parser.c" /* yacc.c:1652 */ #line 2162 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 137: case 137:
#line 474 "cfg_parser.y" /* yacc.c:1652 */ #line 475 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->SNI_NOMATCH_ABORT = (yyvsp[0].i); cfg->SNI_NOMATCH_ABORT = (yyvsp[0].i);
} }
#line 2169 "cfg_parser.c" /* yacc.c:1652 */ #line 2170 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 138: case 138:
#line 478 "cfg_parser.y" /* yacc.c:1652 */ #line 479 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) { if ((yyvsp[0].s)) {
free(cfg->CIPHERS_TLSv12);
cfg->CIPHERS_TLSv12 = strdup((yyvsp[0].s)); cfg->CIPHERS_TLSv12 = strdup((yyvsp[0].s));
} }
} }
#line 2179 "cfg_parser.c" /* yacc.c:1652 */ #line 2181 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 139: case 139:
#line 484 "cfg_parser.y" /* yacc.c:1652 */ #line 486 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) { if ((yyvsp[0].s)) {
free(cfg->CIPHERSUITES_TLSv13);
cfg->CIPHERSUITES_TLSv13 = strdup((yyvsp[0].s)); cfg->CIPHERSUITES_TLSv13 = strdup((yyvsp[0].s));
} }
} }
#line 2189 "cfg_parser.c" /* yacc.c:1652 */ #line 2192 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 140: case 140:
#line 491 "cfg_parser.y" /* yacc.c:1652 */ #line 494 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("user", (yyvsp[0].s), cfg, "", if ((yyvsp[0].s) && config_param_validate("user", (yyvsp[0].s), cfg, "",
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2200 "cfg_parser.c" /* yacc.c:1652 */ #line 2203 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 141: case 141:
#line 498 "cfg_parser.y" /* yacc.c:1652 */ #line 501 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("group", (yyvsp[0].s), cfg, "", if ((yyvsp[0].s) && config_param_validate("group", (yyvsp[0].s), cfg, "",
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2211 "cfg_parser.c" /* yacc.c:1652 */ #line 2214 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 142: case 142:
#line 505 "cfg_parser.y" /* yacc.c:1652 */ #line 508 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->WRITE_IP_OCTET = (yyvsp[0].i); } { cfg->WRITE_IP_OCTET = (yyvsp[0].i); }
#line 2217 "cfg_parser.c" /* yacc.c:1652 */ #line 2220 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 143: case 143:
#line 507 "cfg_parser.y" /* yacc.c:1652 */ #line 510 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->WRITE_PROXY_LINE_V2 = (yyvsp[0].i); } { cfg->WRITE_PROXY_LINE_V2 = (yyvsp[0].i); }
#line 2223 "cfg_parser.c" /* yacc.c:1652 */ #line 2226 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 144: case 144:
#line 509 "cfg_parser.y" /* yacc.c:1652 */ #line 512 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->WRITE_PROXY_LINE_V1 = (yyvsp[0].i); cfg->WRITE_PROXY_LINE_V1 = (yyvsp[0].i);
} }
#line 2231 "cfg_parser.c" /* yacc.c:1652 */ #line 2234 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 145: case 145:
#line 513 "cfg_parser.y" /* yacc.c:1652 */ #line 516 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->WRITE_PROXY_LINE_V2 = (yyvsp[0].i); cfg->WRITE_PROXY_LINE_V2 = (yyvsp[0].i);
} }
#line 2239 "cfg_parser.c" /* yacc.c:1652 */ #line 2242 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 146: case 146:
#line 517 "cfg_parser.y" /* yacc.c:1652 */ #line 520 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->PROXY_TLV = (yyvsp[0].i); } { cfg->PROXY_TLV = (yyvsp[0].i); }
#line 2245 "cfg_parser.c" /* yacc.c:1652 */ #line 2248 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 147: case 147:
#line 519 "cfg_parser.y" /* yacc.c:1652 */ #line 522 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->PROXY_AUTHORITY = (yyvsp[0].i); } { cfg->PROXY_AUTHORITY = (yyvsp[0].i); }
#line 2251 "cfg_parser.c" /* yacc.c:1652 */ #line 2254 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 148: case 148:
#line 521 "cfg_parser.y" /* yacc.c:1652 */ #line 524 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->PROXY_CLIENT_CERT = (yyvsp[0].i); } { cfg->PROXY_CLIENT_CERT = (yyvsp[0].i); }
#line 2257 "cfg_parser.c" /* yacc.c:1652 */ #line 2260 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 149: case 149:
#line 523 "cfg_parser.y" /* yacc.c:1652 */ #line 526 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->PROXY_PROXY_LINE = (yyvsp[0].i); } { cfg->PROXY_PROXY_LINE = (yyvsp[0].i); }
#line 2263 "cfg_parser.c" /* yacc.c:1652 */ #line 2266 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 150: case 150:
#line 525 "cfg_parser.y" /* yacc.c:1652 */ #line 528 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("alpn-protos", (yyvsp[0].s), cf g, "", if ((yyvsp[0].s) && config_param_validate("alpn-protos", (yyvsp[0].s), cf g, "",
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2274 "cfg_parser.c" /* yacc.c:1652 */ #line 2277 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 151: case 151:
#line 532 "cfg_parser.y" /* yacc.c:1652 */ #line 535 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && if ((yyvsp[0].s) &&
config_param_validate("syslog-facility", (yyvsp[0].s), cfg, "", config_param_validate("syslog-facility", (yyvsp[0].s), cfg, "",
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2286 "cfg_parser.c" /* yacc.c:1652 */ #line 2289 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 152: case 152:
#line 540 "cfg_parser.y" /* yacc.c:1652 */ #line 543 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->SEND_BUFSIZE = (yyvsp[0].i); } { cfg->SEND_BUFSIZE = (yyvsp[0].i); }
#line 2292 "cfg_parser.c" /* yacc.c:1652 */ #line 2295 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 153: case 153:
#line 542 "cfg_parser.y" /* yacc.c:1652 */ #line 545 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->RECV_BUFSIZE = (yyvsp[0].i); } { cfg->RECV_BUFSIZE = (yyvsp[0].i); }
#line 2298 "cfg_parser.c" /* yacc.c:1652 */ #line 2301 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 154: case 154:
#line 544 "cfg_parser.y" /* yacc.c:1652 */ #line 547 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && if ((yyvsp[0].s) &&
config_param_validate("log-filename", (yyvsp[0].s), cfg, "", config_param_validate("log-filename", (yyvsp[0].s), cfg, "",
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2310 "cfg_parser.c" /* yacc.c:1652 */ #line 2313 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 155: case 155:
#line 552 "cfg_parser.y" /* yacc.c:1652 */ #line 555 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->LOG_LEVEL = (yyvsp[0].i); } { cfg->LOG_LEVEL = (yyvsp[0].i); }
#line 2316 "cfg_parser.c" /* yacc.c:1652 */ #line 2319 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 156: case 156:
#line 554 "cfg_parser.y" /* yacc.c:1652 */ #line 557 "cfg_parser.y" /* yacc.c:1652 */
{ {
#ifdef USE_SHARED_CACHE #ifdef USE_SHARED_CACHE
cfg->SHARED_CACHE = (yyvsp[0].i); cfg->SHARED_CACHE = (yyvsp[0].i);
#else #else
fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache " fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache "
"for '%s'", input_line); "for '%s'", input_line);
YYABORT; YYABORT;
#endif #endif
} }
#line 2330 "cfg_parser.c" /* yacc.c:1652 */ #line 2333 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 157: case 157:
#line 564 "cfg_parser.y" /* yacc.c:1652 */ #line 567 "cfg_parser.y" /* yacc.c:1652 */
{ {
#ifdef USE_SHARED_CACHE #ifdef USE_SHARED_CACHE
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("shared-cache-listen", (yyvsp[0 ].s), cfg, if ((yyvsp[0].s) && config_param_validate("shared-cache-listen", (yyvsp[0 ].s), cfg,
"", yyget_lineno()) != 0) "", yyget_lineno()) != 0)
YYABORT; YYABORT;
#else #else
fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache " fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache "
"for '%s'", input_line); "for '%s'", input_line);
YYABORT; YYABORT;
#endif #endif
} }
#line 2347 "cfg_parser.c" /* yacc.c:1652 */ #line 2350 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 158: case 158:
#line 577 "cfg_parser.y" /* yacc.c:1652 */ #line 580 "cfg_parser.y" /* yacc.c:1652 */
{ {
#ifdef USE_SHARED_CACHE #ifdef USE_SHARED_CACHE
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("shared-cache-peer", (yyvsp[0]. s), cfg, if ((yyvsp[0].s) && config_param_validate("shared-cache-peer", (yyvsp[0]. s), cfg,
"", yyget_lineno()) != 0) "", yyget_lineno()) != 0)
YYABORT; YYABORT;
#else #else
fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache " fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache "
"for '%s'", input_line); "for '%s'", input_line);
YYABORT; YYABORT;
#endif #endif
} }
#line 2364 "cfg_parser.c" /* yacc.c:1652 */ #line 2367 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 159: case 159:
#line 590 "cfg_parser.y" /* yacc.c:1652 */ #line 593 "cfg_parser.y" /* yacc.c:1652 */
{ {
#ifdef USE_SHARED_CACHE #ifdef USE_SHARED_CACHE
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("shared-cache-if", (yyvsp[0].s) , cfg, if ((yyvsp[0].s) && config_param_validate("shared-cache-if", (yyvsp[0].s) , cfg,
"", yyget_lineno()) != 0) "", yyget_lineno()) != 0)
YYABORT; YYABORT;
#else #else
fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache " fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache "
"for '%s'", input_line); "for '%s'", input_line);
YYABORT; YYABORT;
#endif #endif
} }
#line 2381 "cfg_parser.c" /* yacc.c:1652 */ #line 2384 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 160: case 160:
#line 603 "cfg_parser.y" /* yacc.c:1652 */ #line 606 "cfg_parser.y" /* yacc.c:1652 */
{ {
#ifdef TCP_FASTOPEN_WORKS #ifdef TCP_FASTOPEN_WORKS
{ cfg->TFO = (yyvsp[0].i); }; { cfg->TFO = (yyvsp[0].i); };
#else #else
fprintf(stderr, "Hitch needs to be compiled with --enable-tfo" fprintf(stderr, "Hitch needs to be compiled with --enable-tfo"
"for '%s'", input_line); "for '%s'", input_line);
YYABORT; YYABORT;
#endif #endif
} }
#line 2395 "cfg_parser.c" /* yacc.c:1652 */ #line 2398 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 161: case 161:
#line 613 "cfg_parser.y" /* yacc.c:1652 */ #line 616 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->BACKEND_REFRESH_TIME = (yyvsp[0].i); cfg->BACKEND_REFRESH_TIME = (yyvsp[0].i);
} }
#line 2403 "cfg_parser.c" /* yacc.c:1652 */ #line 2406 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 162: case 162:
#line 617 "cfg_parser.y" /* yacc.c:1652 */ #line 620 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) { if ((yyvsp[0].s)) {
free(cfg->ECDH_CURVE);
cfg->ECDH_CURVE = strdup((yyvsp[0].s)); cfg->ECDH_CURVE = strdup((yyvsp[0].s));
} }
} }
#line 2413 "cfg_parser.c" /* yacc.c:1652 */ #line 2417 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 164: case 164:
#line 626 "cfg_parser.y" /* yacc.c:1652 */ #line 630 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cur_fa) if (cur_fa)
cur_fa->client_verify = SSL_VERIFY_NONE; cur_fa->client_verify = SSL_VERIFY_NONE;
else else
cfg->CLIENT_VERIFY = SSL_VERIFY_NONE; cfg->CLIENT_VERIFY = SSL_VERIFY_NONE;
} }
#line 2424 "cfg_parser.c" /* yacc.c:1652 */ #line 2428 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 165: case 165:
#line 632 "cfg_parser.y" /* yacc.c:1652 */ #line 636 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cur_fa) if (cur_fa)
cur_fa->client_verify = SSL_VERIFY_PEER; cur_fa->client_verify = SSL_VERIFY_PEER;
else else
cfg->CLIENT_VERIFY = SSL_VERIFY_PEER; cfg->CLIENT_VERIFY = SSL_VERIFY_PEER;
} }
#line 2435 "cfg_parser.c" /* yacc.c:1652 */ #line 2439 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 166: case 166:
#line 638 "cfg_parser.y" /* yacc.c:1652 */ #line 642 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cur_fa) if (cur_fa)
cur_fa->client_verify = cur_fa->client_verify =
SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT; SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT;
else else
cfg->CLIENT_VERIFY = cfg->CLIENT_VERIFY =
SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT; SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT;
} }
#line 2448 "cfg_parser.c" /* yacc.c:1652 */ #line 2452 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 167: case 167:
#line 647 "cfg_parser.y" /* yacc.c:1652 */ #line 651 "cfg_parser.y" /* yacc.c:1652 */
{ {
free(cfg->CLIENT_VERIFY_CA);
cfg->CLIENT_VERIFY_CA = strdup((yyvsp[0].s)); cfg->CLIENT_VERIFY_CA = strdup((yyvsp[0].s));
} }
#line 2456 "cfg_parser.c" /* yacc.c:1652 */ #line 2461 "cfg_parser.c" /* yacc.c:1652 */
break; break;
#line 2460 "cfg_parser.c" /* yacc.c:1652 */ #line 2465 "cfg_parser.c" /* yacc.c:1652 */
default: break; default: break;
} }
/* User semantic actions sometimes alter yychar, and that requires /* User semantic actions sometimes alter yychar, and that requires
that yytoken be updated with the new translation. We take the that yytoken be updated with the new translation. We take the
approach of translating immediately before every use of yytoken. approach of translating immediately before every use of yytoken.
One alternative is translating here after every semantic action, One alternative is translating here after every semantic action,
but that translation would be missed if the semantic action invokes but that translation would be missed if the semantic action invokes
YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
incorrect destructor might then be invoked immediately. In the incorrect destructor might then be invoked immediately. In the
skipping to change at line 2649 skipping to change at line 2654
#ifndef yyoverflow #ifndef yyoverflow
if (yyss != yyssa) if (yyss != yyssa)
YYSTACK_FREE (yyss); YYSTACK_FREE (yyss);
#endif #endif
#if YYERROR_VERBOSE #if YYERROR_VERBOSE
if (yymsg != yymsgbuf) if (yymsg != yymsgbuf)
YYSTACK_FREE (yymsg); YYSTACK_FREE (yymsg);
#endif #endif
return yyresult; return yyresult;
} }
#line 651 "cfg_parser.y" /* yacc.c:1918 */ #line 656 "cfg_parser.y" /* yacc.c:1918 */
void void
yyerror(hitch_config *cfg, const char *s) yyerror(hitch_config *cfg, const char *s)
{ {
(void) cfg; (void) cfg;
/* Clean up if FRONTEND_BLK parsing failed */ /* Clean up if FRONTEND_BLK parsing failed */
if (cur_fa != NULL) if (cur_fa != NULL)
FREE_OBJ(cur_fa); FREE_OBJ(cur_fa);
 End of changes. 151 change blocks. 
154 lines changed or deleted 159 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)