# HG changeset patch # User Sebastien Decugis # Date 1267509499 -32400 # Node ID dcb58243e91f8ea36275d05660df1d41fd97af2e # Parent 80a7e65167c402bf1797f11cdb32256560574ac5 More cleanups diff -r 80a7e65167c4 -r dcb58243e91f freeDiameter/cnxctx.c --- a/freeDiameter/cnxctx.c Tue Mar 02 14:17:15 2010 +0900 +++ b/freeDiameter/cnxctx.c Tue Mar 02 14:58:19 2010 +0900 @@ -543,7 +543,7 @@ TRACE_ENTRY("%p", conn); CHECK_PARAMS_DO( conn, goto fatal ); - TRACE_DEBUG(FULL, "CC_STATUS_ERROR set for socket %d (%s)", conn->cc_socket, conn->cc_id); + TRACE_DEBUG(FULL, "Error flag set for socket %d (%s / %s)", conn->cc_socket, conn->cc_remid, conn->cc_id); /* Mark the error */ conn->cc_status |= CC_STATUS_ERROR; @@ -732,6 +732,11 @@ goto out; } + if (event == FDEVP_CNX_SHUTDOWN) { + /* Just ignore the notification for now, we will get another error later anyway */ + continue; + } + CHECK_FCT_DO( fd_event_send( Target_Queue(conn), event, bufsz, buf), goto fatal ); } while (conn->cc_loop); @@ -805,11 +810,16 @@ case GNUTLS_E_INTERRUPTED: if (!(conn->cc_status & CC_STATUS_CLOSING)) goto again; - TRACE_DEBUG(INFO, "Connection is closing, so abord gnutls_record_recv now."); + TRACE_DEBUG(FULL, "Connection is closing, so abord gnutls_record_recv now."); break; + case GNUTLS_E_UNEXPECTED_PACKET_LENGTH: + /* The connection is closed */ + TRACE_DEBUG(FULL, "Got 0 size while reading the socket, probably connection closed..."); + break; + default: - TRACE_DEBUG(INFO, "This TLS error is not handled, assume unrecoverable error"); + TRACE_DEBUG(INFO, "This GNU TLS error is not handled, assume unrecoverable error"); } } ); end: diff -r 80a7e65167c4 -r dcb58243e91f freeDiameter/fD.h --- a/freeDiameter/fD.h Tue Mar 02 14:17:15 2010 +0900 +++ b/freeDiameter/fD.h Tue Mar 02 14:58:19 2010 +0900 @@ -201,6 +201,9 @@ /* Endpoints of a connection have been changed (multihomed SCTP). */ ,FDEVP_CNX_EP_CHANGE + /* The connection is being shutdown (SCTP notification). */ + ,FDEVP_CNX_SHUTDOWN + /* A new connection (with a CER) has been received */ ,FDEVP_CNX_INCOMING diff -r 80a7e65167c4 -r dcb58243e91f freeDiameter/p_psm.c --- a/freeDiameter/p_psm.c Tue Mar 02 14:17:15 2010 +0900 +++ b/freeDiameter/p_psm.c Tue Mar 02 14:58:19 2010 +0900 @@ -187,7 +187,7 @@ if (old == new_state) return 0; - TRACE_DEBUG(FULL, "'%s'\t-> '%s'\t'%s'", + TRACE_DEBUG(((old == STATE_OPEN) || (new_state == STATE_OPEN)) ? INFO : FULL, "'%s'\t-> '%s'\t'%s'", STATE_STR(old), STATE_STR(new_state), peer->p_hdr.info.pi_diamid); diff -r 80a7e65167c4 -r dcb58243e91f freeDiameter/sctp.c --- a/freeDiameter/sctp.c Tue Mar 02 14:17:15 2010 +0900 +++ b/freeDiameter/sctp.c Tue Mar 02 14:58:19 2010 +0900 @@ -1211,7 +1211,7 @@ case SCTP_SHUTDOWN_EVENT: TRACE_DEBUG(FULL, "Received SCTP_SHUTDOWN_EVENT notification"); - *event = FDEVP_CNX_ERROR; + *event = FDEVP_CNX_SHUTDOWN; break; default: diff -r 80a7e65167c4 -r dcb58243e91f freeDiameter/sctps.c --- a/freeDiameter/sctps.c Tue Mar 02 14:17:15 2010 +0900 +++ b/freeDiameter/sctps.c Tue Mar 02 14:58:19 2010 +0900 @@ -77,7 +77,7 @@ /* Set the thread name */ { char buf[48]; - snprintf(buf, sizeof(buf), "Demuxer (%d)", conn->cc_socket); + snprintf(buf, sizeof(buf), "Demuxer (%d:%s)", conn->cc_socket, conn->cc_remid); fd_log_threadname ( buf ); } @@ -107,6 +107,10 @@ fd_cnx_markerror(conn); goto out; + case FDEVP_CNX_SHUTDOWN: + /* Just ignore the notification for now, we will get another error later anyway */ + continue; + default: goto fatal; } @@ -142,7 +146,7 @@ /* Set the thread name */ { char buf[48]; - snprintf(buf, sizeof(buf), "Decipher (%hu@%d)", ctx->strid, cnx->cc_socket); + snprintf(buf, sizeof(buf), "Decipher (%hu@%d:%s)", ctx->strid, cnx->cc_socket, cnx->cc_remid); fd_log_threadname ( buf ); } @@ -341,6 +345,10 @@ /* Check the data is the same */ if ((data.size != sr->data.size) || memcmp(data.data, sr->data.data, data.size)) { TRACE_DEBUG(INFO, "GnuTLS tried to store a session with same key and different data!"); + TRACE_DEBUG_BUFFER(INFO, "Session store [key ", key.data, key.size, "]"); + TRACE_DEBUG_BUFFER(INFO, " -- old data [", sr->data.data, sr->data.size, "]"); + TRACE_DEBUG_BUFFER(INFO, " -- new data [", data.data, data.size, "]"); + ret = -1; } else { TRACE_DEBUG(GNUTLS_DBG_LEVEL, "GnuTLS tried to store a session with same key and same data, skipped.");