int oncp_esp_send_probes(struct openconnect_info *vpninfo)
{
struct pkt *pkt;
- int pktlen;
+ int pktlen, seq;
if (vpninfo->dtls_fd == -1) {
int fd = udp_connect(vpninfo);
if (!pkt)
return -ENOMEM;
- pkt->len = 1;
- pkt->data[0] = 0;
- pktlen = encrypt_esp_packet(vpninfo, pkt);
- if (pktlen >= 0)
- send(vpninfo->dtls_fd, (void *)&pkt->esp, pktlen, 0);
-
- pkt->len = 1;
- pkt->data[0] = 0;
- pktlen = encrypt_esp_packet(vpninfo, pkt);
- if (pktlen >= 0)
- send(vpninfo->dtls_fd, (void *)&pkt->esp, pktlen, 0);
-
+ for (seq=1; seq <= (vpninfo->dtls_state==DTLS_CONNECTED ? 1 : 2); seq++) {
+ pkt->len = 1;
+ pkt->data[0] = 0;
+ pktlen = encrypt_esp_packet(vpninfo, pkt);
+ if (pktlen >= 0)
+ send(vpninfo->dtls_fd, (void *)&pkt->esp, pktlen, 0);
+ }
free(pkt);
vpninfo->dtls_times.last_tx = time(&vpninfo->new_dtls_started);