Index: uspace/app/netecho/comm.c
===================================================================
--- uspace/app/netecho/comm.c	(revision 917324b020541527dac5b8005f14b501b9bc830d)
+++ uspace/app/netecho/comm.c	(revision b9be9b05d752d24c03c7c6bbcf6925a1335216ee)
@@ -52,5 +52,4 @@
 static udp_t *udp;
 static udp_assoc_t *assoc;
-static inet_ep_t remote;
 
 #define RECV_BUF_SIZE 1024
@@ -185,5 +184,5 @@
 errno_t comm_send(void *data, size_t size)
 {
-	errno_t rc = udp_assoc_send_msg(assoc, &remote, data, size);
+	errno_t rc = udp_assoc_send_msg(assoc, NULL, data, size);
 	if (rc != EOK)
 		return EIO;
Index: uspace/lib/inet/src/udp.c
===================================================================
--- uspace/lib/inet/src/udp.c	(revision 917324b020541527dac5b8005f14b501b9bc830d)
+++ uspace/lib/inet/src/udp.c	(revision b9be9b05d752d24c03c7c6bbcf6925a1335216ee)
@@ -256,7 +256,14 @@
 {
 	async_exch_t *exch;
+	inet_ep_t ddest;
 
 	exch = async_exchange_begin(assoc->udp->sess);
 	aid_t req = async_send_1(exch, UDP_ASSOC_SEND_MSG, assoc->id, NULL);
+
+	/* If dest is null, use default destination */
+	if (dest == NULL) {
+		inet_ep_init(&ddest);
+		dest = &ddest;
+	}
 
 	errno_t rc = async_data_write_start(exch, (void *)dest,
Index: uspace/srv/net/udp/assoc.c
===================================================================
--- uspace/srv/net/udp/assoc.c	(revision 917324b020541527dac5b8005f14b501b9bc830d)
+++ uspace/srv/net/udp/assoc.c	(revision b9be9b05d752d24c03c7c6bbcf6925a1335216ee)
@@ -243,5 +243,6 @@
  *
  * @param assoc		Association
- * @param remote	Remote endpoint or NULL not to override @a assoc
+ * @param remote	Remote endpoint or inet_addr_any/inet_port_any
+ *			not to override association's remote endpoint
  * @param msg		Message
  *
@@ -261,5 +262,6 @@
 	/* @a remote can be used to override the remote endpoint */
 	epp = assoc->ident;
-	if (remote != NULL)
+	if (!inet_addr_is_any(&remote->addr) &&
+	    remote->port != inet_port_any)
 		epp.remote = *remote;
 
Index: uspace/srv/net/udp/test/assoc.c
===================================================================
--- uspace/srv/net/udp/test/assoc.c	(revision 917324b020541527dac5b8005f14b501b9bc830d)
+++ uspace/srv/net/udp/test/assoc.c	(revision b9be9b05d752d24c03c7c6bbcf6925a1335216ee)
@@ -250,11 +250,12 @@
 }
 
-/** Sending message with destination set in association and NULL destination
- * argument
+/** Sending message with destination set in association and inet_addr_any /
+ * inet_port_any destination argument
  */
-PCUT_TEST(send_assoc_null_dest)
-{
-	udp_assoc_t *assoc;
-	inet_ep2_t epp;
+PCUT_TEST(send_assoc_any_dest)
+{
+	udp_assoc_t *assoc;
+	inet_ep2_t epp;
+	inet_ep_t ep;
 	errno_t rc;
 	udp_msg_t *msg;
@@ -272,4 +273,6 @@
 	epp.local.port = 1;
 
+	inet_ep_init(&ep);
+
 	assoc = udp_assoc_new(&epp, &test_assoc_cb, NULL);
 	PCUT_ASSERT_NOT_NULL(assoc);
@@ -281,5 +284,5 @@
 	sent_msg = NULL;
 
-	rc = udp_assoc_send(assoc, NULL, msg);
+	rc = udp_assoc_send(assoc, &ep, msg);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 	PCUT_ASSERT_EQUALS(msg, sent_msg);
@@ -311,6 +314,4 @@
 
 	inet_ep2_init(&epp);
-	inet_addr(&epp.remote.addr, 127, 0, 0, 1);
-	epp.remote.port = 42;
 	inet_addr(&epp.local.addr, 127, 0, 0, 1);
 	epp.local.port = 1;
