[Expat-discuss] TCP live stream buffer and expat xml parsing

Mikhail Strizhov strizhov at cs.colostate.edu
Sun Jul 18 18:14:44 CEST 2010


Hi all,

I have live tcp xml stream and each xml message has same format:

<BGP_MESSAGE length="00001914" version="0.2" 
xmlns="urn:ietf:params:xml:ns:xfb-0.2" type_value="3" type="MESSAGE">
...other_xml_items_here...
</BGP_MESSAGE>

<BGP_MESSAGE length="00002918" version="0.2" 
xmlns="urn:ietf:params:xml:ns:xfb-0.2" type_value="3" type="MESSAGE">
...other_xml_items_here...
</BGP_MESSAGE>

<BGP_MESSAGE length="00002184" version="0.2" 
xmlns="urn:ietf:params:xml:ns:xfb-0.2" type_value="3" type="MESSAGE">
...other_xml_items_here...
</BGP_MESSAGE>

When I'm calling TCP recv function to get data from socket I need to 
specify size of buffer, lets say 4096 bytes.
Usually one <BGP_MESSAGE>..</BGP_MESSAGE> message is around 2500-3000 
bytes. In this case I'm getting 1st full message and half of next.
Afterwards I'm forwarding this buffer to XML_Parse function - 1st 
message parsed successfully, but 2nd is half parsed and then error messages.

Is anybody know how to handle live tcp stream with libexpat?

My code is large to attach, its available here - 
http://www.netsec.colostate.edu/~strizhov/bgpmon/bgpmonclient.c


Thank you!


-- 
*Sincerely,*
*Mikhail Strizhov*
*Email: strizhov at cs.colostate.edu <mailto:strizhov at cs.colostate.edu>*


More information about the Expat-discuss mailing list