Index: uspace/lib/c/generic/irc.c
===================================================================
--- uspace/lib/c/generic/irc.c	(revision d51838f190d8e49cb00493b84858f7ad93996014)
+++ uspace/lib/c/generic/irc.c	(revision c212a03937276f657ca068f79bcfbd68dd0cdb9d)
@@ -35,8 +35,10 @@
 #include <assert.h>
 #include <errno.h>
+#include <fibril_synch.h>
 #include <ipc/irc.h>
 #include <ipc/services.h>
 #include <irc.h>
-#include <ns.h>
+#include <loc.h>
+#include <stdlib.h>
 #include <sysinfo.h>
 
@@ -49,7 +51,31 @@
 static int irc_init(void)
 {
+	category_id_t irc_cat;
+	service_id_t *svcs;
+	size_t count;
+	int rc;
+
 	assert(irc_sess == NULL);
+	rc = loc_category_get_id("irc", &irc_cat, IPC_FLAG_BLOCKING);
+	if (rc != EOK)
+		return EIO;
 
-	irc_sess = service_connect_blocking(SERVICE_IRC, INTERFACE_IRC, 0);
+	while (true) {
+		rc = loc_category_get_svcs(irc_cat, &svcs, &count);
+		if (rc != EOK)
+			return EIO;
+
+		if (count > 0)
+			break;
+
+		free(svcs);
+
+		// XXX This is just a temporary hack
+		fibril_usleep(500 * 1000);
+	}
+
+	irc_sess = loc_service_connect(svcs[0], INTERFACE_IRC,
+	    IPC_FLAG_BLOCKING);
+	free(svcs);
 
 	if (irc_sess == NULL)
