diff --git a/pjlib/include/pj/activesock.h b/pjlib/include/pj/activesock.h
index 056890f..e2213fd 100644
--- a/pjlib/include/pj/activesock.h
+++ b/pjlib/include/pj/activesock.h
@@ -227,6 +227,8 @@
  *			the default values will be used.
  * @param cb		Pointer to structure containing application
  *			callbacks.
+ * @param user_data	Arbitrary user data to be associated with this
+ *			active socket.
  * @param p_asock	Pointer to receive the active socket instance.
  *
  * @return		PJ_SUCCESS if the operation has been successful,
@@ -238,6 +240,7 @@
 					  const pj_activesock_cfg *opt,
 					  pj_ioqueue_t *ioqueue,
 					  const pj_activesock_cb *cb,
+					  void *user_data,
 					  pj_activesock_t **p_asock);
 
 /**
@@ -253,6 +256,8 @@
  *			the default values will be used.
  * @param cb		Pointer to structure containing application
  *			callbacks.
+ * @param user_data	Arbitrary user data to be associated with this
+ *			active socket.
  * @param p_asock	Pointer to receive the active socket instance.
  * @param bound_addr	If this argument is specified, it will be filled with
  *			the bound address on return.
@@ -265,6 +270,7 @@
 					      const pj_activesock_cfg *opt,
 					      pj_ioqueue_t *ioqueue,
 					      const pj_activesock_cb *cb,
+					      void *user_data,
 					      pj_activesock_t **p_asock,
 					      pj_sockaddr *bound_addr);
 
diff --git a/pjlib/src/pj/activesock.c b/pjlib/src/pj/activesock.c
index 112ca5f..8e098ed 100644
--- a/pjlib/src/pj/activesock.c
+++ b/pjlib/src/pj/activesock.c
@@ -97,6 +97,7 @@
 					  const pj_activesock_cfg *opt,
 					  pj_ioqueue_t *ioqueue,
 					  const pj_activesock_cb *cb,
+					  void *user_data,
 					  pj_activesock_t **p_asock)
 {
     pj_activesock_t *asock;
@@ -114,6 +115,7 @@
     asock->stream_oriented = (sock_type == pj_SOCK_STREAM());
     asock->async_count = (opt? opt->async_cnt : 1);
     asock->max_loop = PJ_ACTIVESOCK_MAX_LOOP;
+    asock->user_data = user_data;
     pj_memcpy(&asock->cb, cb, sizeof(*cb));
 
     pj_bzero(&ioq_cb, sizeof(ioq_cb));
@@ -143,6 +145,7 @@
 					      const pj_activesock_cfg *opt,
 					      pj_ioqueue_t *ioqueue,
 					      const pj_activesock_cb *cb,
+					      void *user_data,
 					      pj_activesock_t **p_asock,
 					      pj_sockaddr *bound_addr)
 {
@@ -168,7 +171,7 @@
     }
 
     status = pj_activesock_create(pool, sock_fd, pj_SOCK_DGRAM(), opt,
-				  ioqueue, cb, p_asock);
+				  ioqueue, cb, user_data, p_asock);
     if (status != PJ_SUCCESS) {
 	pj_sock_close(sock_fd);
 	return status;
diff --git a/pjlib/src/pjlib-test/activesock.c b/pjlib/src/pjlib-test/activesock.c
index 0e38eea..570aef5 100644
--- a/pjlib/src/pjlib-test/activesock.c
+++ b/pjlib/src/pjlib-test/activesock.c
@@ -114,7 +114,7 @@
     activesock_cb.on_data_recvfrom = &udp_echo_srv_on_data_recvfrom;
 
     status = pj_activesock_create_udp(pool, &addr, NULL, ioqueue, &activesock_cb, 
-				      &srv->asock, &addr);
+				      srv, &srv->asock, &addr);
     if (status != PJ_SUCCESS) {
 	pj_sock_close(sock_fd);
 	udp_echo_err("pj_activesock_create()", status);
@@ -123,7 +123,6 @@
 
     srv->port = pj_ntohs(addr.ipv4.sin_port);
 
-    pj_activesock_set_user_data(srv->asock, srv);
     pj_ioqueue_op_key_init(&srv->send_key, sizeof(srv->send_key));
 
     status = pj_activesock_start_recvfrom(srv->asock, pool, 32, 0);
