Index: uspace/srv/net/tl/icmp/icmp.c
===================================================================
--- uspace/srv/net/tl/icmp/icmp.c	(revision 0743493a4e08f4592e45edfc40bfa33c3c4bacde)
+++ uspace/srv/net/tl/icmp/icmp.c	(revision 4a4c8bcf0ce34cbf901b7d7d1d02ef84f5b04d48)
@@ -612,9 +612,11 @@
 static void icmp_receiver(ipc_callid_t iid, ipc_call_t *icall)
 {
-	bool loop = true;
 	packet_t *packet;
 	int rc;
 	
-	while (loop) {
+	while (true) {
+		if (!IPC_GET_IMETHOD(*icall))
+			break;
+		
 		switch (IPC_GET_IMETHOD(*icall)) {
 		case NET_TL_RECEIVED:
@@ -629,7 +631,4 @@
 			async_answer_0(iid, (sysarg_t) rc);
 			break;
-		case IPC_M_PHONE_HUNGUP:
-			loop = false;
-			continue;
 		default:
 			async_answer_0(iid, (sysarg_t) ENOTSUP);
Index: uspace/srv/net/tl/tcp/tcp.c
===================================================================
--- uspace/srv/net/tl/tcp/tcp.c	(revision 0743493a4e08f4592e45edfc40bfa33c3c4bacde)
+++ uspace/srv/net/tl/tcp/tcp.c	(revision 4a4c8bcf0ce34cbf901b7d7d1d02ef84f5b04d48)
@@ -38,4 +38,5 @@
 #include <assert.h>
 #include <async.h>
+#include <async_obsolete.h>
 #include <fibril_synch.h>
 #include <malloc.h>
@@ -72,4 +73,7 @@
 #include "tcp.h"
 #include "tcp_header.h"
+
+// FIXME: remove this header
+#include <kernel/ipc/ipc_methods.h>
 
 /** TCP module name. */
@@ -799,5 +803,5 @@
 
 	/* Notify the destination socket */
-	async_msg_5(socket->phone, NET_SOCKET_RECEIVED,
+	async_obsolete_msg_5(socket->phone, NET_SOCKET_RECEIVED,
 	    (sysarg_t) socket->socket_id,
 	    ((packet_dimension->content < socket_data->data_fragment_size) ?
@@ -820,5 +824,5 @@
 
 	/* Notify the destination socket */
-	async_msg_5(socket->phone, NET_SOCKET_RECEIVED,
+	async_obsolete_msg_5(socket->phone, NET_SOCKET_RECEIVED,
 	    (sysarg_t) socket->socket_id,
 	    0, 0, 0,
@@ -1078,5 +1082,5 @@
 		if (rc == EOK) {
 			/* Notify the destination socket */
-			async_msg_5(socket->phone, NET_SOCKET_ACCEPTED,
+			async_obsolete_msg_5(socket->phone, NET_SOCKET_ACCEPTED,
 			    (sysarg_t) listening_socket->socket_id,
 			    socket_data->data_fragment_size, TCP_HEADER_SIZE,
@@ -1269,5 +1273,4 @@
 {
 	int res;
-	bool keep_on_going = true;
 	socket_cores_t local_sockets;
 	int app_phone = IPC_GET_PHONE(call);
@@ -1293,5 +1296,5 @@
 	fibril_rwlock_initialize(&lock);
 
-	while (keep_on_going) {
+	while (true) {
 
 		/* Answer the call */
@@ -1301,12 +1304,12 @@
 		/* Get the next call */
 		callid = async_get_call(&call);
+		
+		if (!IPC_GET_IMETHOD(call)) {
+			res = EHANGUP;
+			break;
+		}
 
 		/* Process the call */
 		switch (IPC_GET_IMETHOD(call)) {
-		case IPC_M_PHONE_HUNGUP:
-			keep_on_going = false;
-			res = EHANGUP;
-			break;
-
 		case NET_SOCKET:
 			socket_data =
@@ -1506,5 +1509,5 @@
 
 	/* Release the application phone */
-	async_hangup(app_phone);
+	async_obsolete_hangup(app_phone);
 
 	printf("release\n");
Index: uspace/srv/net/tl/udp/udp.c
===================================================================
--- uspace/srv/net/tl/udp/udp.c	(revision 0743493a4e08f4592e45edfc40bfa33c3c4bacde)
+++ uspace/srv/net/tl/udp/udp.c	(revision 4a4c8bcf0ce34cbf901b7d7d1d02ef84f5b04d48)
@@ -37,4 +37,5 @@
 
 #include <async.h>
+#include <async_obsolete.h>
 #include <fibril_synch.h>
 #include <malloc.h>
@@ -69,4 +70,7 @@
 #include "udp.h"
 #include "udp_header.h"
+
+// FIXME: remove this header
+#include <kernel/ipc/ipc_methods.h>
 
 /** UDP module name. */
@@ -299,5 +303,5 @@
 	/* Notify the destination socket */
 	fibril_rwlock_write_unlock(&udp_globals.lock);
-	async_msg_5(socket->phone, NET_SOCKET_RECEIVED,
+	async_obsolete_msg_5(socket->phone, NET_SOCKET_RECEIVED,
 	    (sysarg_t) socket->socket_id, packet_dimension->content, 0, 0,
 	    (sysarg_t) fragments);
@@ -748,5 +752,4 @@
 {
 	int res;
-	bool keep_on_going = true;
 	socket_cores_t local_sockets;
 	int app_phone = IPC_GET_PHONE(call);
@@ -773,5 +776,5 @@
 	socket_cores_initialize(&local_sockets);
 
-	while (keep_on_going) {
+	while (true) {
 
 		/* Answer the call */
@@ -783,12 +786,12 @@
 		/* Get the next call */
 		callid = async_get_call(&call);
+		
+		if (!IPC_GET_IMETHOD(call)) {
+			res = EHANGUP;
+			break;
+		}
 
 		/* Process the call */
 		switch (IPC_GET_IMETHOD(call)) {
-		case IPC_M_PHONE_HUNGUP:
-			keep_on_going = false;
-			res = EHANGUP;
-			break;
-
 		case NET_SOCKET:
 			socket_id = SOCKET_GET_SOCKET_ID(call);
@@ -880,5 +883,5 @@
 
 	/* Release the application phone */
-	async_hangup(app_phone);
+	async_obsolete_hangup(app_phone);
 
 	/* Release all local sockets */
