Setting up a TCP connection:

struct uvClientData
  {
    bool assoc;
    uint fnpno;
    uint lineno; 
    /* telnet_t */ void * telnetp;
    // Work buffet for processLineInput
    char buffer [1024];
    size_t nPos;
  };
typedef struct uvClientData uvClientData;

    linep->client = (uv_tcp_t *) malloc (sizeof (uv_tcp_t));
    uv_tcp_init (loop, linep->client);


    uvClientData * p = (uvClientData *) malloc (sizeof (uvClientData));
    p->fnpno = fnpno;
    p->lineno = lineno;

    linep->client->data = p;

    uv_tcp_connect (& linep->doConnect, linep->client, (const struct 
sockaddr *) & dest, on_do_connect);


static void on_do_connect (uv_connect_t * server, int status)
  {
    uvClientData * p = (uvClientData *) server->handle->data;
    struct t_line * linep = & fnpUnitData[p->fnpno].MState.line[p->lineno];
    ....
  }

I managed to invoke a connection failure, leading to an application 
crash....

(gdb) where
#0  on_do_connect (server=0x182f7e8 <fnpUnitData+412168>, status=-125)
    at fnpuv.c:755
#1  0x00007f616eb77e1c in uv.stream_destroy () from /lib64/libuv.so.1
#2  0x00007f616eb6e3e6 in uv_run () from /lib64/libuv.so.1

(gdb) p status
$10 = -125

'status' shows the connection failure.

(gdb) p server->handle->data
$9 = (void *) 0x0

However, it appears that the 'data' field is NULL, which means that my 
callback handler has no way to find the data it needs to handle the failure.

I am unsure if this is a bug  in my code, or if stream_destroy is failing 
to pass the callback the data it needs.


-- 
You received this message because you are subscribed to the Google Groups 
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.

Reply via email to