Mercurial > pidgin
diff plugins/icq/queue.c @ 1498:0ef6603d986e
[gaim-migrate @ 1508]
updating icqlib
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Thu, 22 Feb 2001 23:07:34 +0000 |
parents | 4c510ca3563f |
children | 8ed70631ed15 |
line wrap: on
line diff
--- a/plugins/icq/queue.c Thu Feb 22 22:50:03 2001 +0000 +++ b/plugins/icq/queue.c Thu Feb 22 23:07:34 2001 +0000 @@ -1,9 +1,12 @@ /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* -$Id: queue.c 1442 2001-01-28 01:52:27Z warmenhoven $ +$Id: queue.c 1508 2001-02-22 23:07:34Z warmenhoven $ $Log$ -Revision 1.4 2001/01/28 01:52:27 warmenhoven -icqlib 1.1.5 +Revision 1.5 2001/02/22 23:07:34 warmenhoven +updating icqlib + +Revision 1.13 2001/02/22 05:40:04 bills +port tcp connect timeout code and UDP queue to new timeout manager Revision 1.12 2000/12/19 06:00:07 bills moved members from ICQLINK to ICQLINK_private struct @@ -61,47 +64,25 @@ link->icq_UDPExpireInterval = 15; /* expire interval = 15 sec */ } -void icq_UDPQueuePut(ICQLINK *link, icq_Packet *p, int attempt) +void icq_UDPQueuePut(ICQLINK *link, icq_Packet *p) { icq_UDPQueueItem *ptr = (icq_UDPQueueItem*)malloc(sizeof(icq_UDPQueueItem)); #ifdef QUEUE_DEBUG printf("icq_UDPQueuePut(seq=0x%04X, cmd=0x%04X)\n", icq_PacketReadUDPOutSeq1(p), icq_PacketReadUDPOutCmd(p)); #endif - ptr->attempts = attempt; - ptr->expire = time(0L)+link->icq_UDPExpireInterval; + ptr->attempts = 1; + ptr->timeout = icq_TimeoutNew(link->icq_UDPExpireInterval, + (icq_TimeoutHandler)icq_UDPQueueItemResend, ptr); + ptr->timeout->single_shot = 0; ptr->pack = p; + ptr->icqlink = link; #ifdef QUEUE_DEBUG printf("enqueuing queueitem %p\n", ptr); #endif list_enqueue(link->d->icq_UDPQueue, ptr); } -icq_Packet *icq_UDPQueueGet(ICQLINK *link) -{ - icq_UDPQueueItem *ptr = (icq_UDPQueueItem*)list_first(link->d->icq_UDPQueue); - icq_Packet *pack = 0L; - if(ptr) - { - pack = ptr->pack; - list_remove(link->d->icq_UDPQueue, (list_node*)ptr); - } -#ifdef QUEUE_DEBUG - if(pack) - printf("icq_UDPQueueGet(cmd=0x%04X)\n", icq_PacketReadUDPOutCmd(pack)); -#endif - return pack; -} - -icq_Packet *icq_UDPQueuePeek(ICQLINK *link) -{ - icq_UDPQueueItem *ptr = (icq_UDPQueueItem*)list_first(link->d->icq_UDPQueue); - if(ptr) - return ptr->pack; - else - return 0L; -} - void _icq_UDPQueueItemFree(void *p) { icq_UDPQueueItem *pitem=(icq_UDPQueueItem *)p; @@ -113,6 +94,9 @@ if (pitem->pack) icq_PacketDelete(pitem->pack); + if (pitem->timeout) + icq_TimeoutDelete(pitem->timeout); + free(p); } @@ -165,14 +149,16 @@ #endif } -long icq_UDPQueueInterval(ICQLINK *link) +void icq_UDPQueueItemResend(icq_UDPQueueItem *p) { - long interval; - icq_UDPQueueItem *ptr = (icq_UDPQueueItem*)list_first(link->d->icq_UDPQueue); - if(ptr) + p->attempts++; + if (p->attempts > 6) { - interval = ptr->expire - time(0L); - return interval>=0?interval:0; + icq_Disconnect(p->icqlink); + invoke_callback(p->icqlink, icq_Disconnected)(p->icqlink); + return; } - return -1; + + icq_UDPSockWriteDirect(p->icqlink, p->pack); } +