<div dir="ltr"><span style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px">Hi, </span><br style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px"><br style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px"><span style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px">While writing  a DTLS server using  DTLSv1_listen(),   I found  that  when I receive a fragmented clienthello from the client,  DTLS handshake fails.  DTLSv1_listen stuck in the while loop (in the app).</span><br style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px"><span style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px">When I checked the man page of DTLSv1_listen(),  it clearly says that API does not handle a fragmented clienthello.  as it operates entirely statelessly ( Safeguard against  DOS attacks ? )</span><br style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px"><br style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px"><span style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px">However DTLS RFC clearly states that implementation must handle fragmented handshake messages</span><br style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px"><br style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px"><span style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px">RFC 4347 Datagram Transport Layer Security:</span><br style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px"><span style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px">“When a DTLS implementation receives a handshake message fragment, it MUST buffer it until it has the entire handshake message.”</span><br style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px"><br style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px"><span style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px">Avoiding the fragmented clienthello is the only way out for this problem ? or any other alternatives exist ?</span><br style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px"><br style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px"><span style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px">Regards,</span><br style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px"><span style="color:rgb(33,33,33);font-family:wf_segoe-ui_normal,"segoe ui","segoe wp",tahoma,arial,sans-serif;font-size:13.3333px">Vijay</span><br></div>