comparison src/event/ngx_event_quic_transport.c @ 7728:66f59c67adf4 quic

Skip unknown transport parameters.
author Vladimir Homutov <vl@nginx.com>
date Mon, 23 Mar 2020 12:57:24 +0300
parents 55a3a9c50af2
children c58bbe31e87d
comparison
equal deleted inserted replaced
7727:55a3a9c50af2 7728:66f59c67adf4
1225 switch (id) { 1225 switch (id) {
1226 case NGX_QUIC_TP_ORIGINAL_CONNECTION_ID: 1226 case NGX_QUIC_TP_ORIGINAL_CONNECTION_ID:
1227 case NGX_QUIC_TP_STATELESS_RESET_TOKEN: 1227 case NGX_QUIC_TP_STATELESS_RESET_TOKEN:
1228 case NGX_QUIC_TP_PREFERRED_ADDRESS: 1228 case NGX_QUIC_TP_PREFERRED_ADDRESS:
1229 // TODO 1229 // TODO
1230 return NGX_ERROR; 1230 return NGX_DECLINED;
1231 } 1231 }
1232 1232
1233 switch (id) { 1233 switch (id) {
1234 1234
1235 case NGX_QUIC_TP_DISABLE_ACTIVE_MIGRATION: 1235 case NGX_QUIC_TP_DISABLE_ACTIVE_MIGRATION:
1257 return NGX_ERROR; 1257 return NGX_ERROR;
1258 } 1258 }
1259 break; 1259 break;
1260 1260
1261 default: 1261 default:
1262 return NGX_ERROR; 1262 return NGX_DECLINED;
1263 } 1263 }
1264 1264
1265 switch (id) { 1265 switch (id) {
1266 1266
1267 case NGX_QUIC_TP_MAX_IDLE_TIMEOUT: 1267 case NGX_QUIC_TP_MAX_IDLE_TIMEOUT:
1318 1318
1319 ngx_int_t 1319 ngx_int_t
1320 ngx_quic_parse_transport_params(u_char *p, u_char *end, ngx_quic_tp_t *tp, 1320 ngx_quic_parse_transport_params(u_char *p, u_char *end, ngx_quic_tp_t *tp,
1321 ngx_log_t *log) 1321 ngx_log_t *log)
1322 { 1322 {
1323 ngx_int_t rc;
1323 1324
1324 #if (quic_version < 0xff00001b) 1325 #if (quic_version < 0xff00001b)
1325 1326
1326 uint16_t id, len, tp_len; 1327 uint16_t id, len, tp_len;
1327 1328
1346 ngx_log_error(NGX_LOG_INFO, log, 0, 1347 ngx_log_error(NGX_LOG_INFO, log, 0,
1347 "failed to parse transport param id 0x%xi length", id); 1348 "failed to parse transport param id 0x%xi length", id);
1348 return NGX_ERROR; 1349 return NGX_ERROR;
1349 } 1350 }
1350 1351
1351 if (ngx_quic_parse_transport_param(p, p + len, id, tp) != NGX_OK) { 1352 rc = ngx_quic_parse_transport_param(p, p + len, id, tp);
1353
1354 if (rc == NGX_ERROR) {
1352 ngx_log_error(NGX_LOG_INFO, log, 0, 1355 ngx_log_error(NGX_LOG_INFO, log, 0,
1353 "failed to parse transport param id 0x%xi data", id); 1356 "failed to parse transport param id 0x%xi data", id);
1354 return NGX_ERROR; 1357 return NGX_ERROR;
1355 } 1358 }
1356 1359
1360 if (rc == NGX_DECLINED) {
1361 ngx_log_error(NGX_LOG_INFO, log, 0,
1362 "unknown transport param id 0x%xi, skipped", id);
1363 }
1364
1357 p += len; 1365 p += len;
1358 }; 1366 };
1359 1367
1360 #else 1368 #else
1361 1369
1374 ngx_log_error(NGX_LOG_INFO, log, 0, 1382 ngx_log_error(NGX_LOG_INFO, log, 0,
1375 "failed to parse transport param id 0x%xi length", id); 1383 "failed to parse transport param id 0x%xi length", id);
1376 return NGX_ERROR; 1384 return NGX_ERROR;
1377 } 1385 }
1378 1386
1379 if (ngx_quic_parse_transport_param(p, p + len, id, tp) != NGX_OK) { 1387 rc = ngx_quic_parse_transport_param(p, p + len, id, tp);
1388
1389 if (rc == NGX_ERROR) {
1380 ngx_log_error(NGX_LOG_INFO, log, 0, 1390 ngx_log_error(NGX_LOG_INFO, log, 0,
1381 "failed to parse transport param id 0x%xi data", id); 1391 "failed to parse transport param id 0x%xi data", id);
1382 return NGX_ERROR; 1392 return NGX_ERROR;
1393 }
1394
1395 if (rc == NGX_DECLINED) {
1396 ngx_log_error(NGX_LOG_INFO, log, 0,
1397 "unknown transport param id 0x%xi,skipped", id);
1383 } 1398 }
1384 1399
1385 p += len; 1400 p += len;
1386 1401
1387 } 1402 }