net: vlan clients with no fd_can_read() can always receive

If a vlan client has no fd_can_read(), that means it can
always receive packets. The current code assumes it can *never*
receive packets.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
master
Mark McLoughlin 2009-04-29 09:36:43 +01:00
parent 5b01e886d9
commit 2e1e064110
1 changed files with 10 additions and 6 deletions

16
net.c
View File

@ -389,15 +389,19 @@ VLANClientState *qemu_find_vlan_client(VLANState *vlan, void *opaque)
return NULL;
}
int qemu_can_send_packet(VLANClientState *vc1)
int qemu_can_send_packet(VLANClientState *sender)
{
VLANState *vlan = vc1->vlan;
VLANState *vlan = sender->vlan;
VLANClientState *vc;
for(vc = vlan->first_client; vc != NULL; vc = vc->next) {
if (vc != vc1) {
if (vc->fd_can_read && vc->fd_can_read(vc->opaque))
return 1;
for (vc = vlan->first_client; vc != NULL; vc = vc->next) {
if (vc == sender) {
continue;
}
/* no fd_can_read() handler, they can always receive */
if (!vc->fd_can_read || vc->fd_can_read(vc->opaque)) {
return 1;
}
}
return 0;