From: Eric W. <war...@us...> - 2001-11-02 20:55:59
|
Update of /cvsroot/gaim/gaim/src/protocols/msn In directory usw-pr-cvs1:/tmp/cvs-serv1789/protocols/msn Modified Files: msn.c Log Message: hi Index: msn.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/msn/msn.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -d -r1.32 -r1.33 --- msn.c 2001/10/25 18:30:22 1.32 +++ msn.c 2001/11/02 20:55:55 1.33 @@ -1579,7 +1579,7 @@ { struct msn_data *md = gc->proto_data; char buf[MSN_BUF_LEN]; - GSList *s; + GSList *s, *t = NULL; if (gc->permdeny == PERMIT_ALL || gc->permdeny == DENY_SOME) g_snprintf(buf, sizeof(buf), "BLP %d AL\r\n", ++md->trId); @@ -1609,28 +1609,53 @@ s = g_slist_nth(gc->permit, g_slist_length(md->permit)); while (s) { char *who = s->data; + s = s->next; + if (!strchr(who, '@')) { + t = g_slist_append(t, who); + continue; + } g_snprintf(buf, sizeof(buf), "ADD %d AL %s %s\r\n", ++md->trId, who, who); if (msn_write(md->fd, buf, strlen(buf)) < 0) { hide_login_progress(gc, "Write error"); signoff(gc); return; } - s = s->next; } + while (t) { + char *who = t->data; + gc->permit = g_slist_remove(gc->permit, who); + g_free(who); + t = t->next; + } + if (t) + g_slist_free(t); + t = NULL; g_slist_free(md->permit); md->permit = NULL; s = g_slist_nth(gc->deny, g_slist_length(md->deny)); while (s) { char *who = s->data; + s = s->next; + if (!strchr(who, '@')) { + t = g_slist_append(t, who); + continue; + } g_snprintf(buf, sizeof(buf), "ADD %d AL %s %s\r\n", ++md->trId, who, who); if (msn_write(md->fd, buf, strlen(buf)) < 0) { hide_login_progress(gc, "Write error"); signoff(gc); return; } - s = s->next; } + while (t) { + char *who = t->data; + gc->deny = g_slist_remove(gc->deny, who); + g_free(who); + t = t->next; + } + if (t) + g_slist_free(t); g_slist_free(md->deny); md->deny = NULL; } @@ -1640,6 +1665,13 @@ struct msn_data *md = gc->proto_data; char buf[MSN_BUF_LEN]; + if (!strchr(who, '@')) { + do_error_dialog(_("Invalid name"), _("MSN Error")); + gc->permit = g_slist_remove(gc->permit, who); + g_free(who); + return; + } + g_snprintf(buf, sizeof(buf), "ADD %d AL %s %s\r\n", ++md->trId, who, who); if (msn_write(md->fd, buf, strlen(buf)) < 0) { hide_login_progress(gc, "Write error"); @@ -1665,6 +1697,13 @@ { struct msn_data *md = gc->proto_data; char buf[MSN_BUF_LEN]; + + if (!strchr(who, '@')) { + do_error_dialog(_("Invalid name"), _("MSN Error")); + gc->deny = g_slist_remove(gc->deny, who); + g_free(who); + return; + } g_snprintf(buf, sizeof(buf), "ADD %d BL %s %s\r\n", ++md->trId, who, who); if (msn_write(md->fd, buf, strlen(buf)) < 0) { |