diff -urN asterisk-1.0.7/channels/chan_sip.c asterisk-1.0.7-allowdisallow/channels/chan_sip.c
--- asterisk-1.0.7/channels/chan_sip.c	2005-03-02 18:38:27.000000000 +0100
+++ asterisk-1.0.7-allowdisallow/channels/chan_sip.c	2005-06-11 18:12:18.748305074 +0200
@@ -1048,7 +1048,7 @@
 			mysql_real_escape_string(mysql, name, user, strlen(user));
 		}
 
-		snprintf(query, sizeof(query), "SELECT name, secret, context, username, ipaddr, port, regseconds, callerid, restrictcid FROM sipfriends WHERE name=\"%s\"", name);
+		snprintf(query, sizeof(query), "SELECT name, secret, context, username, ipaddr, port, regseconds, callerid, restrictcid, disallow, allow FROM sipfriends WHERE name=\"%s\"", name);
 
 		ast_mutex_lock(&mysqllock);
 		mysql_query(mysql, query);
@@ -1076,6 +1076,10 @@
 						} else if (!strcasecmp(fields[x].name, "callerid")) {
 							strncpy(u->callerid, rowval[x], sizeof(u->callerid) - 1);
 							u->hascallerid=1;
+						} else if (!strcasecmp(fields[x].name, "allow")) {
+							ast_parse_allow_disallow(&u->prefs, &u->capability, rowval[x], 1);
+						} else if (!strcasecmp(fields[x].name, "disallow")) {
+							ast_parse_allow_disallow(&u->prefs, &u->capability, rowval[x], 0);
 						}
 					}
 				}
@@ -1149,9 +1153,9 @@
 			mysql_real_escape_string(mysql, name, peer, strlen(peer));
 		}
 		if (sin)
-			snprintf(query, sizeof(query), "SELECT name, secret, context, username, ipaddr, port, regseconds FROM sipfriends WHERE ipaddr=\"%s\" AND port=\"%d\"", ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr), ntohs(sin->sin_port));
+			snprintf(query, sizeof(query), "SELECT name, secret, context, username, ipaddr, port, regseconds, disallow, allow FROM sipfriends WHERE ipaddr=\"%s\" AND port=\"%d\"", ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr), ntohs(sin->sin_port));
 		else
-			snprintf(query, sizeof(query), "SELECT name, secret, context, username, ipaddr, port, regseconds FROM sipfriends WHERE name=\"%s\"", name);
+			snprintf(query, sizeof(query), "SELECT name, secret, context, username, ipaddr, port, regseconds, disallow, allow FROM sipfriends WHERE name=\"%s\"", name);
 		ast_mutex_lock(&mysqllock);
 		mysql_query(mysql, query);
 		if ((result = mysql_store_result(mysql))) {
@@ -1179,6 +1183,10 @@
 						} else if (!strcasecmp(fields[x].name, "regseconds")) {
 							if (sscanf(rowval[x], "%li", &regseconds) != 1)
 								regseconds = 0;
+						} else if (!strcasecmp(fields[x].name, "allow")) {
+							ast_parse_allow_disallow(&p->prefs, &p->capability, rowval[x], 1);
+						} else if (!strcasecmp(fields[x].name, "disallow")) {
+							ast_parse_allow_disallow(&p->prefs, &p->capability, rowval[x], 0);
 						}
 					}
 				}
