Пример #1
0
PLIST_API void plist_cleanup(void)
{
    /* free memory from parser initialization */
    xmlCleanupCharEncodingHandlers();
    xmlDictCleanup();
    xmlResetLastError();
    xmlCleanupGlobals();
    xmlCleanupThreads();
    xmlCleanupMemory();
}
Пример #2
0
/**
	@brief Destroy a transport_session and close its socket, without disconnecting from Jabber.
	@param session Pointer to the transport_session to be destroyed.
	@return 1 if successful, or 0 if not.

	This function may be called from a child process in order to free resources associated
	with the parent's transport_session, but without sending a disconnect to Jabber (since
	that would disconnect the parent).

	The only error condition is a NULL pointer argument.
*/
int session_discard( transport_session* session ) {
	if( ! session )
		return 0;

	if(session->sock_mgr)
		socket_manager_free(session->sock_mgr);

	if( session->state_machine ) free( session->state_machine );
	if( session->parser_ctxt) {
		xmlFreeDoc( session->parser_ctxt->myDoc );
		xmlFreeParserCtxt(session->parser_ctxt);
	}

	xmlCleanupCharEncodingHandlers();
	xmlDictCleanup();
	xmlCleanupParser();

	buffer_free(session->body_buffer);
	buffer_free(session->subject_buffer);
	buffer_free(session->thread_buffer);
	buffer_free(session->from_buffer);
	buffer_free(session->recipient_buffer);
	buffer_free(session->status_buffer);
	buffer_free(session->message_error_type);
	buffer_free(session->router_to_buffer);
	buffer_free(session->router_from_buffer);
	buffer_free(session->osrf_xid_buffer);
	buffer_free(session->router_class_buffer);
	buffer_free(session->router_command_buffer);
	buffer_free(session->session_id);

	free(session->server);
	free(session->unix_path);

	free( session );
	return 1;
}
Пример #3
0
jsonObject* jsonXMLToJSONObject(const char* xml) {

    osrfXMLGatewayParser parser;

    /* don't define freeItem, since objects will be cleaned by freeing the parent */
    parser.objStack = osrfNewList(); 
    /* don't define freeItem, since the list eill end up empty if there are no errors*/
    parser.keyStack = osrfNewList(); 
    parser.obj = NULL;
    parser.inString = 0;
    parser.inNumber = 0;

    xmlParserCtxtPtr ctxt = xmlCreatePushParserCtxt(SAXHandler, &parser, "", 0, NULL);
    xmlParseChunk(ctxt, xml, strlen(xml), 1);

    osrfListFree(parser.objStack);
    osrfListFree(parser.keyStack);
    xmlFreeParserCtxt(ctxt);
    xmlCleanupCharEncodingHandlers();
    xmlDictCleanup();
    xmlCleanupParser();

    return parser.obj;
}