changeset 228:dcb58243e91f

More cleanups
author Sebastien Decugis <sdecugis@nict.go.jp>
date Tue, 02 Mar 2010 14:58:19 +0900
parents 80a7e65167c4
children 965f5971dc23
files freeDiameter/cnxctx.c freeDiameter/fD.h freeDiameter/p_psm.c freeDiameter/sctp.c freeDiameter/sctps.c
diffstat 5 files changed, 28 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- 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:	
--- 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
 	
--- 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);
--- 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:	
--- 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.");
"Welcome to our mercurial repository"