Fixed crash bug with poll_reset() in rdata
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@367 74dad513-b988-da41-8d7b-12977e46ad98
This commit is contained in:
parent
55c060f1fb
commit
e0f70aa08b
|
@ -431,8 +431,8 @@ static pj_status_t mod_on_tx_msg(pjsip_tx_data *tdata)
|
||||||
return PJSIP_EMSGTOOLONG;
|
return PJSIP_EMSGTOOLONG;
|
||||||
}
|
}
|
||||||
pj_assert(size != 0);
|
pj_assert(size != 0);
|
||||||
tdata->buf.cur += size;
|
|
||||||
tdata->buf.cur[size] = '\0';
|
tdata->buf.cur[size] = '\0';
|
||||||
|
tdata->buf.cur += size;
|
||||||
}
|
}
|
||||||
|
|
||||||
return PJ_SUCCESS;
|
return PJ_SUCCESS;
|
||||||
|
|
|
@ -173,12 +173,26 @@ static void udp_on_read_complete( pj_ioqueue_key_t *key,
|
||||||
flags = 0;
|
flags = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reset pool. */
|
/* Reset pool.
|
||||||
pj_pool_reset(rdata->tp_info.pool);
|
* Need to copy rdata fields to temp variable because they will
|
||||||
init_rdata((struct udp_transport*)rdata->tp_info.transport,
|
* be invalid after pj_pool_reset().
|
||||||
(unsigned)rdata->tp_info.tp_data,
|
*/
|
||||||
rdata->tp_info.pool,
|
{
|
||||||
&rdata);
|
pj_pool_t *rdata_pool = rdata->tp_info.pool;
|
||||||
|
struct udp_transport *rdata_tp ;
|
||||||
|
unsigned rdata_index;
|
||||||
|
|
||||||
|
rdata_tp = (struct udp_transport*)rdata->tp_info.transport;
|
||||||
|
rdata_index = (unsigned)rdata->tp_info.tp_data;
|
||||||
|
|
||||||
|
pj_pool_reset(rdata_pool);
|
||||||
|
init_rdata(rdata_tp, rdata_index, rdata_pool, &rdata);
|
||||||
|
|
||||||
|
/* Change some vars to point to new location after
|
||||||
|
* pool reset.
|
||||||
|
*/
|
||||||
|
op_key = &rdata->tp_info.op_key.op_key;
|
||||||
|
}
|
||||||
|
|
||||||
/* Read next packet. */
|
/* Read next packet. */
|
||||||
bytes_read = sizeof(rdata->pkt_info.packet);
|
bytes_read = sizeof(rdata->pkt_info.packet);
|
||||||
|
|
Loading…
Reference in New Issue