annotate src/protocols/rendezvous/mdns_cache.c @ 8758:2db51720fd09

[gaim-migrate @ 9513] Some minor gtkconv fixes -Disable the "warn" conversation menu item for protocols that don't support it. Same with Get Info, Invite, and Insert Link -Fix the following weird icon animation bug: (sf bug 939768) In the conversation window talking to someone on AIM if you right click on an animated AIM buddy icon and unanimate it then you tab over to chat to someone else using another protocol (not AIM) (like MSN or ICQ) that don't have buddy icons then come back to the original AIM person you disabled the animated buddy icon, well, it's animated again. It works fine if you stay in AIM and tab from someone having a disabled animated icon to someone with no buddy icon and/or someone having a non animated buddy icon. So I think the bug is in when you tab to another chat protocol. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Thu, 22 Apr 2004 16:24:05 +0000
parents dbbf5470ba05
children 8212661dc3cc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8738
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
1 /**
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
2 * @file mdns_cache.c Multicast DNS resource record caching code.
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
3 *
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
4 * gaim
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
5 *
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
6 * Gaim is the legal property of its developers, whose names are too numerous
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
7 * to list here. Please refer to the COPYRIGHT file distributed with this
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
8 * source distribution.
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
9 *
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
13 * (at your option) any later version.
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
14 *
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
18 * GNU General Public License for more details.
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
19 *
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
21 * along with this program; if not, write to the Free Software
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
23 *
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
24 */
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
25
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
26 #include "internal.h"
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
27 #include "debug.h"
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
28
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
29 #include "mdns.h"
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
30
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
31 GSList *resourcerecords = NULL;
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
32
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
33 void mdns_cache_add(ResourceRecord *rr)
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
34 {
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
35 g_return_if_fail(rr != NULL);
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
36
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
37 resourcerecords = g_slist_prepend(resourcerecords, rr);
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
38 }
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
39
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
40 void mdns_cache_remove(ResourceRecord *rr)
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
41 {
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
42 g_return_if_fail(rr != NULL);
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
43
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
44 resourcerecords = g_slist_remove_all(resourcerecords, rr);
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
45
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
46 mdns_free_rr(rr);
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
47 }
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
48
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
49 void mdns_cache_remove_all()
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
50 {
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
51 while (resourcerecords != NULL)
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
52 mdns_cache_remove(resourcerecords->data);
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
53 }
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
54
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
55 void mdns_cache_respond(int fd, Question *q)
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
56 {
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
57 GSList *slist;
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
58 ResourceRecord *cur;
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
59
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
60 g_return_if_fail(q != NULL);
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
61
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
62 for (slist = resourcerecords; slist != NULL; slist = g_slist_next(slist)) {
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
63 cur = slist->data;
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
64 if ((q->type == cur->type) && (!strcmp(q->name, cur->name)))
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
65 mdns_send_rr(fd, cur);
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
66 }
dbbf5470ba05 [gaim-migrate @ 9493]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
67 }