fix python memory leak.

git-svn-id: file:///svn/unbound/trunk@1818 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
Wouter Wijngaards 2009-09-04 14:14:54 +00:00
parent ca9c1fa2a8
commit 18e9cbb39f
3 changed files with 17 additions and 10 deletions

View file

@ -4,6 +4,7 @@
- do not call sphinx for documentation when python is disabled.
- remove EV_PERSIST from libevent timeout code to make the code
compatible with the libevent-2.0. Works with older libevent too.
- fix memory leak in python code.
3 September 2009: Wouter
- Got a patch from Luca Bruno for libunbound support on windows to

View file

@ -779,7 +779,7 @@ int set_return_msg(struct module_qstate* qstate,
{
ldns_pkt* pkt = 0;
ldns_status status;
ldns_rr_list* rr_list1 = 0,*rr_list2 = 0,*rr_list3 = 0,*rr_list4 = 0;
ldns_rr_list* rr_list = 0;
ldns_buffer *qb = 0;
int res = 1;
@ -790,14 +790,18 @@ int set_return_msg(struct module_qstate* qstate,
if ((status != LDNS_STATUS_OK) || (pkt == 0))
return 0;
rr_list1 = createRRList(question, default_ttl);
if ((rr_list1) && (res)) res = ldns_pkt_push_rr_list(pkt, LDNS_SECTION_QUESTION, rr_list1);
rr_list2 = createRRList(answer, default_ttl);
if ((rr_list2) && (res)) res = ldns_pkt_push_rr_list(pkt, LDNS_SECTION_ANSWER, rr_list2);
rr_list3 = createRRList(authority, default_ttl);
if ((rr_list3) && (res)) res = ldns_pkt_push_rr_list(pkt, LDNS_SECTION_AUTHORITY, rr_list3);
rr_list4 = createRRList(additional, default_ttl);
if ((rr_list4) && (res)) res = ldns_pkt_push_rr_list(pkt, LDNS_SECTION_ADDITIONAL, rr_list4);
rr_list = createRRList(question, default_ttl);
if ((rr_list) && (res)) res = ldns_pkt_push_rr_list(pkt, LDNS_SECTION_QUESTION, rr_list);
ldns_rr_list_free(rr_list);
rr_list = createRRList(answer, default_ttl);
if ((rr_list) && (res)) res = ldns_pkt_push_rr_list(pkt, LDNS_SECTION_ANSWER, rr_list);
ldns_rr_list_free(rr_list);
rr_list = createRRList(authority, default_ttl);
if ((rr_list) && (res)) res = ldns_pkt_push_rr_list(pkt, LDNS_SECTION_AUTHORITY, rr_list);
ldns_rr_list_free(rr_list);
rr_list = createRRList(additional, default_ttl);
if ((rr_list) && (res)) res = ldns_pkt_push_rr_list(pkt, LDNS_SECTION_ADDITIONAL, rr_list);
ldns_rr_list_free(rr_list);
if ((res) && ((qb = ldns_buffer_new(LDNS_MIN_BUFLEN)) == 0)) res = 0;
if ((res) && (ldns_pkt2buffer_wire(qb, pkt) != LDNS_STATUS_OK)) res = 0;
@ -806,7 +810,7 @@ int set_return_msg(struct module_qstate* qstate,
if (qb) ldns_buffer_free(qb);
ldns_pkt_free(pkt); //this function dealocates pkt as well as rr_lists
ldns_pkt_free(pkt); //this function dealocates pkt as well as rrs
return res;
}
%}

View file

@ -245,6 +245,8 @@ void pythonmod_deinit(struct module_env* env, int id)
Py_Finalize();
}
pe->fname = NULL;
free(pe);
/* Module is deallocated in Python */
env->modinfo[id] = NULL;