#endif
#include <string.h>
+#include <stdlib.h>
+#include <errno.h>
#include <assert.h>
#include <event2/event.h>
#include <event2/bufferevent.h>
if (conn->is_connected)
err = rs_conn_disconnect (conn);
+
+#if defined (RS_ENABLE_TLS)
+ if (conn->tls_ssl) /* FIXME: Free SSL strucxt in rs_conn_disconnect? */
+ SSL_free (conn->tls_ssl);
+ if (conn->tls_ctx)
+ SSL_CTX_free (conn->tls_ctx);
+#endif
+
if (conn->tev)
event_free (conn->tev);
if (conn->bev)
if (conn->evb)
event_base_free (conn->evb);
- /* TODO: free tls_ctx */
- /* TODO: free tls_ssl */
-
rs_free (conn->ctx, conn);
return err;
assert (conn);
assert (conn->realm);
- assert (!conn_user_dispatch_p (conn)); /* Dispatching mode only. */
+ assert (!conn_user_dispatch_p (conn)); /* Blocking mode only. */
if (rs_packet_create (conn, &pkt))
return -1;
"event_add: %s",
evutil_gai_strerror (err));
- /* Activae retransmission timer. */
+ /* Activate retransmission timer. */
conn_activate_timeout (pkt->conn);
}
|| (req_msg
&& packet_verify_response (pkt->conn, pkt, req_msg) != RSE_OK))
{
- assert (rs_err_conn_peek_code (pkt->conn));
+ if (rs_err_conn_peek_code (pkt->conn) == RSE_OK)
+ /* No packet and no error on the stack _should_ mean that the
+ server hung up on us. */
+ rs_err_conn_push (pkt->conn, RSE_DISCO, "no response");
return rs_err_conn_peek_code (conn);
}