fix(hysteria): clamp udpIdleTimeout to xray-core's accepted 2-600s range (#5117)

The schema and form inputs allowed any value >= 1, but xray-core rejects
UdpIdleTimeout outside 2-600 seconds at startup, so an out-of-range value
silently killed the whole config.
This commit is contained in:
MHSanaei
2026-06-12 01:21:54 +02:00
parent a5e5640804
commit 10a0c9131c
3 changed files with 4 additions and 3 deletions
@@ -19,7 +19,7 @@ export default function HysteriaFields({ form }: { form: FormInstance }) {
label={t('pages.inbounds.form.udpIdleTimeout')}
name={['streamSettings', 'hysteriaSettings', 'udpIdleTimeout']}
>
<InputNumber min={1} style={{ width: '100%' }} />
<InputNumber min={2} max={600} style={{ width: '100%' }} />
</Form.Item>
<Form.Item label={t('pages.inbounds.form.masquerade')}>
@@ -25,7 +25,7 @@ export default function HysteriaForm({ form }: { form: FormInstance }) {
label={t('pages.inbounds.form.udpIdleTimeout')}
name={['streamSettings', 'hysteriaSettings', 'udpIdleTimeout']}
>
<InputNumber min={1} style={{ width: '100%' }} />
<InputNumber min={2} max={600} style={{ width: '100%' }} />
</Form.Item>
<Form.Item label={t('pages.inbounds.form.masquerade')}>
@@ -25,7 +25,8 @@ export type HysteriaMasquerade = z.infer<typeof HysteriaMasqueradeSchema>;
export const HysteriaStreamSettingsSchema = z.object({
version: z.literal(2).default(2),
auth: z.string().default(''),
udpIdleTimeout: z.number().int().min(1).default(60),
// Xray-core rejects values outside 2-600 seconds at startup.
udpIdleTimeout: z.number().int().min(2).max(600).default(60),
masquerade: HysteriaMasqueradeSchema.optional(),
});
export type HysteriaStreamSettings = z.infer<typeof HysteriaStreamSettingsSchema>;