Handle failing rs_context_create().
[libradsec.git] / lib / conn.c
index 6f7b313..33642e3 100644 (file)
@@ -222,7 +222,7 @@ rs_conn_receive_packet (struct rs_connection *conn,
 
   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;
@@ -269,7 +269,10 @@ rs_conn_receive_packet (struct rs_connection *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);
     }