En algunos casos, me gustaría descartar explícitamente los paquetes que esperan en el socket con la menor sobrecarga posible. Parece que no hay una llamada explícita del sistema "drop udp buffer", pero ¿tal vez estoy equivocado?Desechar el paquete UDP entrante sin leer
La siguiente mejor manera sería probablemente recv
el paquete en un búfer temporal y simplemente soltarlo. Parece que no puedo recibir 0 bytes, ya que el hombre dice sobre recv
: The return value will be 0 when the peer has performed an orderly shutdown.
Entonces 1 es el mínimo en este caso.
¿Hay alguna otra forma de manejar esto?
Por las dudas, esta no es una optimización prematura. Lo único que hace este servidor es reenviar/despachar los paquetes UDP de una manera específica, aunque recv
con len=1
no me va a matar, prefiero descartar toda la cola de una sola vez con alguna función más específica (con suerte, bajando el estado latente).
¿Qué criterios está utilizando para decidir qué descartar? –
No estoy seguro de lo que puedo decir aquí, así que tiene sentido ... básicamente dos lados están anunciando (con alguna cookie compartida) que necesitan un proxy. El servidor debe abrir el socket después de la primera solicitud para asegurarse de que nadie más use el puerto. Hasta que la configuración esté completa, necesito dejar caer los paquetes, de lo contrario estarán en cola y se volverán a enviar más tarde, eso es algo muy malo en mi escenario. Básicamente, tengo una bandera interna para cada conexión que dice: descartar todo o reenviar todo. – viraptor