|
10 | 10 | *
|
11 | 11 | *
|
12 | 12 | * IDENTIFICATION
|
13 |
| - * $PostgreSQL: pgsql/src/backend/libpq/hba.c,v 1.182 2009/03/04 18:43:38 mha Exp $ |
| 13 | + * $PostgreSQL: pgsql/src/backend/libpq/hba.c,v 1.183 2009/03/07 21:28:00 mha Exp $ |
14 | 14 | *
|
15 | 15 | *-------------------------------------------------------------------------
|
16 | 16 | */
|
@@ -1304,6 +1304,7 @@ load_hba(void)
|
1304 | 1304 | List *hba_line_nums = NIL;
|
1305 | 1305 | ListCell *line, *line_num;
|
1306 | 1306 | List *new_parsed_lines = NIL;
|
| 1307 | + bool ok = true; |
1307 | 1308 |
|
1308 | 1309 | file = AllocateFile(HbaFileName, "r");
|
1309 | 1310 | if (file == NULL)
|
@@ -1332,17 +1333,29 @@ load_hba(void)
|
1332 | 1333 |
|
1333 | 1334 | if (!parse_hba_line(lfirst(line), lfirst_int(line_num), newline))
|
1334 | 1335 | {
|
1335 |
| - /* Parse error in the file, so bail out */ |
| 1336 | + /* Parse error in the file, so indicate there's a problem */ |
1336 | 1337 | free_hba_record(newline);
|
1337 | 1338 | pfree(newline);
|
1338 |
| - clean_hba_list(new_parsed_lines); |
1339 |
| - /* Error has already been reported in the parsing function */ |
1340 |
| - return false; |
| 1339 | + |
| 1340 | + /* |
| 1341 | + * Keep parsing the rest of the file so we can report errors |
| 1342 | + * on more than the first row. Error has already been reported |
| 1343 | + * in the parsing function, so no need to log it here. |
| 1344 | + */ |
| 1345 | + ok = false; |
| 1346 | + continue; |
1341 | 1347 | }
|
1342 | 1348 |
|
1343 | 1349 | new_parsed_lines = lappend(new_parsed_lines, newline);
|
1344 | 1350 | }
|
1345 | 1351 |
|
| 1352 | + if (!ok) |
| 1353 | + { |
| 1354 | + /* Parsing failed at one or more rows, so bail out */ |
| 1355 | + clean_hba_list(new_parsed_lines); |
| 1356 | + return false; |
| 1357 | + } |
| 1358 | + |
1346 | 1359 | /* Loaded new file successfully, replace the one we use */
|
1347 | 1360 | clean_hba_list(parsed_hba_lines);
|
1348 | 1361 | parsed_hba_lines = new_parsed_lines;
|
|
0 commit comments