diff -urpN iperf-2.0.4.orig/include/Settings.hpp iperf-2.0.4/include/Settings.hpp
--- iperf-2.0.4.orig/include/Settings.hpp	2008-04-08 08:07:54.000000000 +0530
+++ iperf-2.0.4/include/Settings.hpp	2008-04-25 17:57:02.000000000 +0530
@@ -210,6 +210,7 @@ typedef struct thread_Settings {
 #define FLAG_SINGLECLIENT   0x00100000
 #define FLAG_SINGLEUDP      0x00200000
 #define FLAG_CONGESTION     0x00400000
+#define FLAG_DUMMYDUALHDR   0x00800000
 
 #define isBuflenSet(settings)      ((settings->flags & FLAG_BUFLENSET) != 0)
 #define isCompat(settings)         ((settings->flags & FLAG_COMPAT) != 0)
@@ -236,6 +237,7 @@ typedef struct thread_Settings {
 #define isSingleClient(settings)   ((settings->flags & FLAG_SINGLECLIENT) != 0)
 #define isSingleUDP(settings)      ((settings->flags & FLAG_SINGLEUDP) != 0)
 #define isCongestionControl(settings) ((settings->flags & FLAG_CONGESTION) != 0)
+#define isDummyDualHdr(settings)   ((settings->flags & FLAG_DUMMYDUALHDR) != 0)
 
 #define setBuflenSet(settings)     settings->flags |= FLAG_BUFLENSET
 #define setCompat(settings)        settings->flags |= FLAG_COMPAT
@@ -260,6 +262,7 @@ typedef struct thread_Settings {
 #define setSingleClient(settings)  settings->flags |= FLAG_SINGLECLIENT
 #define setSingleUDP(settings)     settings->flags |= FLAG_SINGLEUDP
 #define setCongestionControl(settings) settings->flags |= FLAG_CONGESTION
+#define setDummyDualHdr(settings)  settings->flags |= FLAG_DUMMYDUALHDR
 
 #define unsetBuflenSet(settings)   settings->flags &= ~FLAG_BUFLENSET
 #define unsetCompat(settings)      settings->flags &= ~FLAG_COMPAT
@@ -284,10 +287,12 @@ typedef struct thread_Settings {
 #define unsetSingleClient(settings)   settings->flags &= ~FLAG_SINGLECLIENT
 #define unsetSingleUDP(settings)      settings->flags &= ~FLAG_SINGLEUDP
 #define unsetCongestionControl(settings) settings->flags &= ~FLAG_CONGESTION
+#define unsetDummyDualHdr(settings)  settings->flags &= ~FLAG_DUMMYDUALHDR
 
 
 #define HEADER_VERSION1 0x80000000
 #define RUN_NOW         0x00000001
+#define INVALID_DUAL_HDR 0x00000002
 
 // used to reference the 4 byte ID number we place in UDP datagrams
 // use int32_t if possible, otherwise a 32 bit bitfield (e.g. on J90) 
diff -urpN iperf-2.0.4.orig/src/Launch.cpp iperf-2.0.4/src/Launch.cpp
--- iperf-2.0.4.orig/src/Launch.cpp	2007-08-30 03:36:19.000000000 +0530
+++ iperf-2.0.4/src/Launch.cpp	2008-04-25 17:57:02.000000000 +0530
@@ -154,12 +154,18 @@ void client_init( thread_Settings *clien
     // For each of the needed threads create a copy of the
     // provided settings, unsetting the report flag and add
     // to the list of threads to start
+    if ( clients->mMode == kTest_DualTest && clients->mThreads > 1 )
+        setDummyDualHdr(clients);
+    else
+        unsetDummyDualHdr(clients);
     for (int i = 1; i < clients->mThreads; i++) {
         Settings_Copy( clients, &next );
         unsetReport( next );
         itr->runNow = next;
         itr = next;
     }
+    if ( clients->mMode == kTest_DualTest && clients->mThreads > 1 )
+        unsetDummyDualHdr(next);
 #ifndef HAVE_THREAD
     if ( next != NULL ) {
         // We don't have threads and we need to start a listener so
diff -urpN iperf-2.0.4.orig/src/Settings.cpp iperf-2.0.4/src/Settings.cpp
--- iperf-2.0.4.orig/src/Settings.cpp	2008-04-08 08:07:54.000000000 +0530
+++ iperf-2.0.4/src/Settings.cpp	2008-04-25 18:00:09.000000000 +0530
@@ -749,7 +749,8 @@ void Settings_GenerateClientSettings( th
                                       thread_Settings **client,
                                       client_hdr *hdr ) {
     int flags = ntohl(hdr->flags);
-    if ( (flags & HEADER_VERSION1) != 0 ) {
+    if ( (flags & HEADER_VERSION1) != 0 &&
+         (flags & INVALID_DUAL_HDR) == 0 ) {
         *client = new thread_Settings;
         memcpy(*client, server, sizeof( thread_Settings ));
         setCompat( (*client) );
@@ -839,5 +840,7 @@ void Settings_GenerateClientHdr( thread_
     }
     if ( client->mMode == kTest_DualTest ) {
         hdr->flags |= htonl(RUN_NOW);
+        if ( isDummyDualHdr(client) )
+	    hdr->flags |= htonl(INVALID_DUAL_HDR);
     }
 }
