diff --git a/usrsctplib/netinet/sctp_indata.c b/usrsctplib/netinet/sctp_indata.c
index 8b33235..503c91c 100755
--- a/usrsctplib/netinet/sctp_indata.c
+++ b/usrsctplib/netinet/sctp_indata.c
@@ -476,7 +476,7 @@
 static void
 sctp_clean_up_control(struct sctp_tcb *stcb, struct sctp_queued_to_read *control)
 {
-	/* 
+	/*
 	 * The control could not be placed and must be cleaned.
 	 */
 	struct sctp_tmit_chunk *chk, *nchk;
@@ -770,7 +770,7 @@
 	}
 }
 
-static void 
+static void
 sctp_build_readq_entry_from_ctl(struct sctp_queued_to_read *nc, struct sctp_queued_to_read *control)
 {
 	memset(nc, 0, sizeof(struct sctp_queued_to_read));
@@ -792,13 +792,13 @@
 	nc->port_from = control->port_from;
 }
 
-static void 
+static void
 sctp_reset_a_control(struct sctp_queued_to_read *control,
                      struct sctp_inpcb *inp, uint32_t tsn)
 {
 	control->fsn_included = tsn;
 	if (control->on_read_q) {
-		/* 
+		/*
 		 * We have to purge it from there,
 		 * hopefully this will work :-)
 		 */
@@ -854,7 +854,7 @@
 			if (control->end_added) {
 				/* We are done */
 				if (!TAILQ_EMPTY(&control->reasm)) {
-					/* 
+					/*
 					 * Ok we have to move anything left on
 					 * the control queue to a new control.
 					 */
@@ -973,7 +973,7 @@
 			chk->rec.data.fsn);
 		at = TAILQ_FIRST(&control->reasm);
 		if (at && SCTP_TSN_GT(chk->rec.data.fsn, at->rec.data.fsn)) {
-			/* 
+			/*
 			 * The first chunk in the reassembly is
 			 * a smaller TSN than this one, even though
 			 * this has a first, it must be from a subsequent
@@ -997,7 +997,7 @@
 			}
 			if ((chk->rec.data.fsn == control->fsn_included) ||
 			    (control->pdapi_started)) {
-				/* 
+				/*
 				 * Ok this should not happen, if it does
 				 * we started the pd-api on the higher TSN (since
 				 * the equals part is a TSN failure it must be that).
@@ -1066,7 +1066,7 @@
 			TAILQ_INSERT_BEFORE(at, chk, sctp_next);
 			break;
 		} else if (at->rec.data.fsn == chk->rec.data.fsn) {
-			/* 
+			/*
 			 * They sent a duplicate fsn number. This
 			 * really should not happen since the FSN is
 			 * a TSN and it should have been dropped earlier.
@@ -1497,7 +1497,7 @@
 				}
 			}
 			if (asoc->idata_supported || control->first_frag_seen) {
-				/* 
+				/*
 				 * For IDATA we always check since we know that
 				 * the first fragment is 0. For old DATA we have
 				 * to receive the first before we know the first FSN
@@ -1523,7 +1523,7 @@
 				return;
 			}
 			if (asoc->idata_supported || control->first_frag_seen) {
-				/* 
+				/*
 				 * For IDATA we always check since we know that
 				 * the first fragment is 0. For old DATA we have
 				 * to receive the first before we know the first FSN
@@ -1555,7 +1555,7 @@
 		}
 		/*
 		 * If we reach here, we need to place the
-		 * new chunk in the reassembly for this 
+		 * new chunk in the reassembly for this
 		 * control.
 		 */
 		SCTPDBG(SCTP_DEBUG_XXX,
@@ -1863,8 +1863,8 @@
 	if ((chk_type == SCTP_IDATA) &&
 	    ((chk_flags & SCTP_DATA_FIRST_FRAG) == 0) &&
 	    (fsn == 0)) {
-		/* 
-		 *  The first *must* be fsn 0, and other 
+		/*
+		 *  The first *must* be fsn 0, and other
 		 *  (middle/end) pieces can *not* be fsn 0.
 		 * XXX: This can happen in case of a wrap around.
 		 *      Ignore is for now.
@@ -2801,7 +2801,7 @@
 			} else {
 				last_chunk = 0;
 			}
-			if (sctp_process_a_data_chunk(stcb, asoc, mm, *offset, 
+			if (sctp_process_a_data_chunk(stcb, asoc, mm, *offset,
 						      chk_length, net, high_tsn, &abort_flag, &break_flag,
 						      last_chunk, ch->chunk_type)) {
 				num_chunks++;
@@ -5566,10 +5566,10 @@
 	 *
 	 * Assume we get FwdTSN(x):
 	 *
-	 * 1) update local cumTSN to x 
-	 * 2) try to further advance cumTSN to x + others we have 
-	 * 3) examine and update re-ordering queue on pr-in-streams 
-	 * 4) clean up re-assembly queue 
+	 * 1) update local cumTSN to x
+	 * 2) try to further advance cumTSN to x + others we have
+	 * 3) examine and update re-ordering queue on pr-in-streams
+	 * 4) clean up re-assembly queue
 	 * 5) Send a sack to report where we are.
 	 */
 	struct sctp_association *asoc;
diff --git a/usrsctplib/netinet/sctp_userspace.c b/usrsctplib/netinet/sctp_userspace.c
index 28922b6..d5c4f8b 100755
--- a/usrsctplib/netinet/sctp_userspace.c
+++ b/usrsctplib/netinet/sctp_userspace.c
@@ -49,7 +49,7 @@
  * routines.
  */
 #if defined(__MINGW32__)
-#pragma GCC diagnostic push 
+#pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wpedantic"
 #endif
 static DWORD WINAPI
