diff -urN iaxclient/lib/libiax2/src/iax.c iaxclient.patched/lib/libiax2/src/iax.c
--- iaxclient/lib/libiax2/src/iax.c	2004-06-10 21:58:21.000000000 +0100
+++ iaxclient.patched/lib/libiax2/src/iax.c	2004-07-20 19:29:18.530468781 +0100
@@ -839,7 +839,10 @@
 	/* It is assumed that the callno has already been locked */
 	iax_predestroy(i);
 #endif	
-	return __send_command(i, type, command, ts, data, datalen, seqno, 0, 0, 1, 0);
+	int r;
+	r = __send_command(i, type, command, ts, data, datalen, seqno, 0, 0, 1, 0);
+	if (r >= 0) destroy_session(i);
+	return r;
 }
 
 static int send_command_immediate(struct iax_session *i, char type, int command, unsigned int ts, char *data, int datalen, int seqno)
