Index: protocols/nogaim.h
===================================================================
--- protocols/nogaim.h	(revision 13df5155b5351d8804d3cf81d6cc9280aa53f387)
+++ protocols/nogaim.h	(revision 0eb971a6d1a996fbb76eae815145a88abebad75d)
@@ -198,5 +198,5 @@
 	void (* rem_permit)	(struct im_connection *, char *who);
 	void (* rem_deny)	(struct im_connection *, char *who);
-	/* Doesn't actually have UI hooks. */
+	/* Doesn't actually have UI hooks. Not used at all, can be removed. */
 	void (* set_permit_deny)(struct im_connection *);
 	
Index: protocols/oscar/aim.h
===================================================================
--- protocols/oscar/aim.h	(revision 13df5155b5351d8804d3cf81d6cc9280aa53f387)
+++ protocols/oscar/aim.h	(revision 0eb971a6d1a996fbb76eae815145a88abebad75d)
@@ -606,5 +606,4 @@
 int aim_flap_nop(aim_session_t *sess, aim_conn_t *conn);
 int aim_bos_setidle(aim_session_t *, aim_conn_t *, guint32);
-int aim_bos_changevisibility(aim_session_t *, aim_conn_t *, int, const char *);
 int aim_bos_setbuddylist(aim_session_t *, aim_conn_t *, const char *);
 int aim_bos_setprofile(aim_session_t *sess, aim_conn_t *conn, const char *profile, const char *awaymsg, guint32 caps);
Index: protocols/oscar/bos.c
===================================================================
--- protocols/oscar/bos.c	(revision 13df5155b5351d8804d3cf81d6cc9280aa53f387)
+++ protocols/oscar/bos.c	(revision 0eb971a6d1a996fbb76eae815145a88abebad75d)
@@ -56,84 +56,4 @@
 }
 
-/*
- * Modify permit/deny lists (group 9, types 5, 6, 7, and 8)
- *
- * Changes your visibility depending on changetype:
- *
- *  AIM_VISIBILITYCHANGE_PERMITADD: Lets provided list of names see you
- *  AIM_VISIBILITYCHANGE_PERMIDREMOVE: Removes listed names from permit list
- *  AIM_VISIBILITYCHANGE_DENYADD: Hides you from provided list of names
- *  AIM_VISIBILITYCHANGE_DENYREMOVE: Lets list see you again
- *
- * list should be a list of 
- * screen names in the form "Screen Name One&ScreenNameTwo&" etc.
- *
- * Equivelents to options in WinAIM:
- *   - Allow all users to contact me: Send an AIM_VISIBILITYCHANGE_DENYADD
- *      with only your name on it.
- *   - Allow only users on my Buddy List: Send an 
- *      AIM_VISIBILITYCHANGE_PERMITADD with the list the same as your
- *      buddy list
- *   - Allow only the uesrs below: Send an AIM_VISIBILITYCHANGE_PERMITADD 
- *      with everyone listed that you want to see you.
- *   - Block all users: Send an AIM_VISIBILITYCHANGE_PERMITADD with only 
- *      yourself in the list
- *   - Block the users below: Send an AIM_VISIBILITYCHANGE_DENYADD with
- *      the list of users to be blocked
- *
- * XXX ye gods.
- */
-int aim_bos_changevisibility(aim_session_t *sess, aim_conn_t *conn, int changetype, const char *denylist)
-{
-	aim_frame_t *fr;
-	int packlen = 0;
-	guint16 subtype;
-	char *localcpy = NULL, *tmpptr = NULL;
-	int i;
-	int listcount;
-	aim_snacid_t snacid;
-
-	if (!denylist)
-		return -EINVAL;
-
-	if (changetype == AIM_VISIBILITYCHANGE_PERMITADD)
-		subtype = 0x05;
-	else if (changetype == AIM_VISIBILITYCHANGE_PERMITREMOVE)
-		subtype = 0x06;
-	else if (changetype == AIM_VISIBILITYCHANGE_DENYADD)
-		subtype = 0x07;
-	else if (changetype == AIM_VISIBILITYCHANGE_DENYREMOVE)
-		subtype = 0x08;
-	else
-		return -EINVAL;
-
-	localcpy = g_strdup(denylist);
-
-	listcount = aimutil_itemcnt(localcpy, '&');
-	packlen = aimutil_tokslen(localcpy, 99, '&') + listcount + 9;
-
-	if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, packlen))) {
-		g_free(localcpy);
-		return -ENOMEM;
-	}
-
-	snacid = aim_cachesnac(sess, 0x0009, subtype, 0x0000, NULL, 0);
-	aim_putsnac(&fr->data, 0x0009, subtype, 0x00, snacid);
-
-	for (i = 0; (i < (listcount - 1)) && (i < 99); i++) {
-		tmpptr = aimutil_itemidx(localcpy, i, '&');
-
-		aimbs_put8(&fr->data, strlen(tmpptr));
-		aimbs_putraw(&fr->data, (guint8 *)tmpptr, strlen(tmpptr));
-
-		g_free(tmpptr);
-	}
-	g_free(localcpy);
-
-	aim_tx_enqueue(sess, fr);
-
-	return 0;
-}
-
 static int snachandler(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs)
 {
Index: protocols/oscar/oscar.c
===================================================================
--- protocols/oscar/oscar.c	(revision 13df5155b5351d8804d3cf81d6cc9280aa53f387)
+++ protocols/oscar/oscar.c	(revision 0eb971a6d1a996fbb76eae815145a88abebad75d)
@@ -2103,45 +2103,4 @@
 }
 
-static void oscar_set_permit_deny(struct im_connection *ic) {
-	struct oscar_data *od = (struct oscar_data *)ic->proto_data;
-	if (od->icq) {
-		GSList *list;
-		char buf[MAXMSGLEN];
-		int at;
-
-		switch(ic->permdeny) {
-		case 1:
-			aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, ic->acc->user);
-			break;
-		case 2:
-			aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, ic->acc->user);
-			break;
-		case 3:
-			list = ic->permit;
-			at = 0;
-			while (list) {
-				at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data);
-				list = list->next;
-			}
-			aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf);
-			break;
-		case 4:
-			list = ic->deny;
-			at = 0;
-			while (list) {
-				at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data);
-				list = list->next;
-			}
-			aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, buf);
-			break;
-			default:
-			break;
-		}
-	} else {
-		if (od->sess->ssi.received_data)
-			aim_ssi_setpermdeny(od->sess, od->conn, ic->permdeny, 0xffffffff);
-	}
-}
-
 static void oscar_add_permit(struct im_connection *ic, char *who) {
 	struct oscar_data *od = (struct oscar_data *)ic->proto_data;
@@ -2624,5 +2583,4 @@
 	ret->rem_permit = oscar_rem_permit;
 	ret->rem_deny = oscar_rem_deny;
-	ret->set_permit_deny = oscar_set_permit_deny;
 	ret->send_typing = oscar_send_typing;
 	
Index: protocols/oscar/ssi.c
===================================================================
--- protocols/oscar/ssi.c	(revision 13df5155b5351d8804d3cf81d6cc9280aa53f387)
+++ protocols/oscar/ssi.c	(revision 0eb971a6d1a996fbb76eae815145a88abebad75d)
@@ -1000,75 +1000,4 @@
 
 /**
- * Stores your permit/deny setting on the server, and starts using it.
- *
- * @param sess The oscar session.
- * @param conn The bos connection for this session.
- * @param permdeny Your permit/deny setting.  Can be one of the following:
- *        1 - Allow all users
- *        2 - Block all users
- *        3 - Allow only the users below
- *        4 - Block only the users below
- *        5 - Allow only users on my buddy list
- * @param vismask A bitmask of the class of users to whom you want to be 
- *        visible.  See the AIM_FLAG_BLEH #defines in aim.h
- * @return Return 0 if no errors, otherwise return the error number.
- */
-int aim_ssi_setpermdeny(aim_session_t *sess, aim_conn_t *conn, guint8 permdeny, guint32 vismask) {
-	struct aim_ssi_item *cur; //, *tmp;
-//	guint16 j;
-	aim_tlv_t *tlv;
-
-	if (!sess || !conn)
-		return -EINVAL;
-
-	/* Look up the permit/deny settings item */
-	cur = aim_ssi_itemlist_finditem(sess->ssi.items, NULL, NULL, AIM_SSI_TYPE_PDINFO);
-
-	if (cur) {
-		/* The permit/deny item exists */
-		if (cur->data && (tlv = aim_gettlv(cur->data, 0x00ca, 1))) {
-			/* Just change the value of the x00ca TLV */
-			if (tlv->length != 1) {
-				tlv->length = 1;
-				g_free(tlv->value);
-				tlv->value = (guint8 *)g_malloc(sizeof(guint8));
-			}
-			tlv->value[0] = permdeny;
-		} else {
-			/* Need to add the x00ca TLV to the TLV chain */
-			aim_addtlvtochain8((aim_tlvlist_t**)&cur->data, 0x00ca, permdeny);
-		}
-
-		if (cur->data && (tlv = aim_gettlv(cur->data, 0x00cb, 1))) {
-			/* Just change the value of the x00cb TLV */
-			if (tlv->length != 4) {
-				tlv->length = 4;
-				g_free(tlv->value);
-				tlv->value = (guint8 *)g_malloc(4*sizeof(guint8));
-			}
-			aimutil_put32(tlv->value, vismask);
-		} else {
-			/* Need to add the x00cb TLV to the TLV chain */
-			aim_addtlvtochain32((aim_tlvlist_t**)&cur->data, 0x00cb, vismask);
-		}
-
-		/* Send the mod item SNAC */
-		aim_ssi_addmoddel(sess, conn, &cur, 1, AIM_CB_SSI_MOD);
-	} else {
-		/* Need to add the permit/deny item */
-		if (!(cur = aim_ssi_itemlist_add(&sess->ssi.items, NULL, NULL, AIM_SSI_TYPE_PDINFO)))
-			return -ENOMEM;
-		aim_addtlvtochain8((aim_tlvlist_t**)&cur->data, 0x00ca, permdeny);
-		aim_addtlvtochain32((aim_tlvlist_t**)&cur->data, 0x00cb, vismask);
-		aim_ssi_addmoddel(sess, conn, &cur, 1, AIM_CB_SSI_ADD);
-	}
-
-	/* Begin sending SSI SNACs */
-	aim_ssi_dispatch(sess, conn);
-
-	return 0;
-}
-
-/**
  * Stores your setting for whether you should show up as idle or not.
  *
Index: protocols/oscar/ssi.h
===================================================================
--- protocols/oscar/ssi.h	(revision 13df5155b5351d8804d3cf81d6cc9280aa53f387)
+++ protocols/oscar/ssi.h	(revision 0eb971a6d1a996fbb76eae815145a88abebad75d)
@@ -71,5 +71,4 @@
 int aim_ssi_deletelist(aim_session_t *sess, aim_conn_t *conn);
 int aim_ssi_delpord(aim_session_t *sess, aim_conn_t *conn, char **sn, unsigned int num, guint16 type);
-int aim_ssi_setpermdeny(aim_session_t *sess, aim_conn_t *conn, guint8 permdeny, guint32 vismask);
 int aim_ssi_setpresence(aim_session_t *sess, aim_conn_t *conn, guint32 presence);
 int aim_ssi_auth_request(aim_session_t *sess, aim_conn_t *conn, char *uin, char *reason);
