/* Copyright 2011 NORDUnet A/S. All rights reserved.
- See the file COPYING for licensing information. */
+ See LICENSE for licensing information. */
#if defined HAVE_CONFIG_H
#include <config.h>
#include "tcp.h"
#include "udp.h"
-/* RFC 5080 2.2.1. Retransmission Behavior */
-#define IRT 2
-#define MRC 5
-#define MRT 16
-#define MRD 30
-
static int
_conn_open (struct rs_connection *conn, struct rs_packet *pkt)
{
if (conn->realm->type == RS_CONN_TYPE_TCP
|| conn->realm->type == RS_CONN_TYPE_TLS)
{
+ if (tcp_init_connect_timer (conn))
+ return -1;
if (event_init_bufferevent (conn, conn->active_peer))
return -1;
}
{
if (udp_init (conn, pkt))
return -1;
+ if (udp_init_retransmit_timer (conn))
+ return -1;
}
if (!conn->is_connected)
{
struct rs_packet *pkt = (struct rs_packet *) user_data;
assert (pkt);
- pkt->flags |= rs_packet_sent_flag;
+ pkt->flags |= RS_PACKET_SENT;
if (pkt->conn->bev)
bufferevent_disable (pkt->conn->bev, EV_WRITE|EV_READ);
else
}
else /* UDP */
{
+ event_assign (conn->wev, conn->evb, event_get_fd (conn->wev),
+ EV_WRITE, event_get_callback (conn->wev), pkt);
err = event_add (conn->wev, NULL);
if (err < 0)
return rs_err_conn_push_fl (conn, RSE_EVENT, __FILE__, __LINE__,
conn->callbacks.sent_cb = NULL;
conn->user_data = NULL;
- if ((pkt->flags & rs_packet_sent_flag) == 0)
- return -1;
+ if ((pkt->flags & RS_PACKET_SENT) == 0)
+ {
+ assert (rs_err_conn_peek_code (conn));
+ return rs_err_conn_peek_code (conn);
+ }
}
return RSE_OK;