Complete.Org: Mailing Lists: Archives: freeciv-dev: November 2003:
[Freeciv-Dev] Re: (PR#6585) Delta version 15
Home

[Freeciv-Dev] Re: (PR#6585) Delta version 15

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: undisclosed-recipients: ;
Subject: [Freeciv-Dev] Re: (PR#6585) Delta version 15
From: "Raimar Falke" <i-freeciv-lists@xxxxxxxxxxxxx>
Date: Mon, 24 Nov 2003 06:51:36 -0800
Reply-to: rt@xxxxxxxxxxx

<URL: http://rt.freeciv.org/Ticket/Display.html?id=6585 >

On Mon, Nov 24, 2003 at 01:12:57AM -0800, mateusz stefek wrote:
> 
> <URL: http://rt.freeciv.org/Ticket/Display.html?id=6585 >
> 
> 2: cut connection mathew mateuszstefek.ds1 (gracz Mathew) due to ping timeout
> >
> 2: Utracono po????czenie: mathew mateuszstefek.ds1 (gracz Mathew).
> > civserver: packets_gen.c:18080: send_packet_conn_ping: Assertion 
> > `pc->phs.vari
> ant' failed.
>  
> Program received signal SIGABRT, Aborted.
> 0x400ea481 in kill () from /lib/i686/libc.so.6
> (gdb) back
> #0  0x400ea481 in kill () from /lib/i686/libc.so.6
> #1  0x400ea215 in raise () from /lib/i686/libc.so.6
> #2  0x400eb76b in abort () from /lib/i686/libc.so.6
> #3  0x400e3745 in __assert_fail () from /lib/i686/libc.so.6
> #4  0x080f5a48 in send_packet_conn_ping (pc=0x81719c0) at packets_gen.c:18080
> #5  0x080adb0c in ping_connection (pconn=0x81719c0) at sernet.c:898
> #6  0x080ac9e6 in sniff_packets () at sernet.c:431
> #7  0x08050ef0 in main_loop () at srv_main.c:1319
> #8  0x080518f4 in srv_loop () at srv_main.c:1652
> #9  0x080512a3 in srv_main () at srv_main.c:1439
> #10 0x0804a579 in main (argc=1, argv=0xbffff7b4) at civserver.c:157
> #11 0x400d77f7 in __libc_start_main () from /lib/i686/libc.so.6
> (gdb)

I can reproduce this and fixed it. Problem is that in
        if ((timer_list_size(pconn->server.ping_timers) > 0
             &&
             read_timer_seconds(timer_list_get(pconn->server.ping_timers, 0))
             > game.pingtimeout) || pconn->ping_time > game.pingtimeout) {
          /* cut mute players */
          freelog(LOG_NORMAL, "cut connection %s due to ping timeout",
                  conn_description(pconn));
          close_socket_callback(pconn);
        }
        ping_connection(pconn);

ping_connection may send a packet to an already closed connection.

        Raimar

-- 
 email: rf13@xxxxxxxxxxxxxxxxx
 "I heard if you play the NT-4.0-CD backwards, you get a satanic message."
 "That's nothing, if you play it forward, it installs NT-4.0"




[Prev in Thread] Current Thread [Next in Thread]