Index: src/Main/options.cxx
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/Main/options.cxx,v
retrieving revision 1.108
diff -u -r1.108 options.cxx
--- src/Main/options.cxx	1 May 2008 21:14:02 -0000	1.108
+++ src/Main/options.cxx	15 Jun 2008 15:24:23 -0000
@@ -239,8 +239,10 @@
     fgSetString("/sim/multiplay/callsign", "callsign");
     fgSetString("/sim/multiplay/rxhost", "0");
     fgSetString("/sim/multiplay/txhost", "0");
+    fgSetString("/sim/multiplay/repeathost", "0");
     fgSetInt("/sim/multiplay/rxport", 0);
     fgSetInt("/sim/multiplay/txport", 0);
+    fgSetInt("/sim/multiplay/repeatport", 0);
 }
 
 static bool
Index: src/MultiPlayer/multiplaymgr.cxx
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/MultiPlayer/multiplaymgr.cxx,v
retrieving revision 1.23
diff -u -r1.23 multiplaymgr.cxx
--- src/MultiPlayer/multiplaymgr.cxx	3 Jun 2008 15:57:33 -0000	1.23
+++ src/MultiPlayer/multiplaymgr.cxx	15 Jun 2008 15:24:23 -0000
@@ -200,6 +200,7 @@
   mSocket        = 0;
   mInitialised   = false;
   mHaveServer    = false;
+  repeatHaveServer = false ;
 } // FGMultiplayMgr::FGMultiplayMgr()
 //////////////////////////////////////////////////////////////////////
 
@@ -255,6 +256,12 @@
       "FGMultiplayMgr - No receiver port, Multiplayermode disabled");
     return (false);
   }
+  short repeatPort = fgGetInt("/sim/multiplay/repeatport");
+  string repeatAddress = fgGetString("/sim/multiplay/repeathost");
+  if (repeatPort > 0 && !repeatAddress.empty()) {
+    repeatHaveServer = true;
+    repeatServer.set(repeatAddress.c_str(), repeatPort);
+  }
   if (mCallsign.empty())
     mCallsign = "JohnDoe"; // FIXME: use getpwuid
   SG_LOG(SG_NETWORK,SG_INFO,"FGMultiplayMgr::init-txaddress= "<<txAddress);
@@ -262,6 +269,8 @@
   SG_LOG(SG_NETWORK,SG_INFO,"FGMultiplayMgr::init-rxaddress="<<rxAddress );
   SG_LOG(SG_NETWORK,SG_INFO,"FGMultiplayMgr::init-rxport= "<<rxPort);
   SG_LOG(SG_NETWORK,SG_INFO,"FGMultiplayMgr::init-callsign= "<<mCallsign);
+  SG_LOG(SG_NETWORK,SG_INFO,"FGMultiplayMgr::init-repeataddress= "<<repeatAddress);
+  SG_LOG(SG_NETWORK,SG_INFO,"FGMultiplayMgr::init-repeatport= "<<repeatPort );
   Close(); // Should Init be called twice, close Socket first
            // A memory leak was reported here by valgrind
   mSocket = new netSocket();
@@ -521,6 +530,7 @@
   int bytes;
   do {
     char Msg[MAX_PACKET_SIZE];
+    char MsgOriginal[MAX_PACKET_SIZE];
     //////////////////////////////////////////////////
     //  Although the recv call asks for 
     //  MAX_PACKET_SIZE of data, the number of bytes
@@ -545,6 +555,9 @@
     //////////////////////////////////////////////////
     //  Read header
     //////////////////////////////////////////////////
+    if (repeatHaveServer ) {
+      memcpy(MsgOriginal,Msg,MAX_PACKET_SIZE) ;
+    }
     T_MsgHdr* MsgHdr = (T_MsgHdr *)Msg;
     MsgHdr->Magic       = XDR_decode_uint32 (MsgHdr->Magic);
     MsgHdr->Version     = XDR_decode_uint32 (MsgHdr->Version);
@@ -574,6 +587,9 @@
       ProcessChatMsg(Msg, SenderAddress);
       break;
     case POS_DATA_ID:
+      if ( repeatHaveServer ) {
+	mSocket->sendto(MsgOriginal, bytes, 0, &repeatServer);
+      }
       ProcessPosMsg(Msg, SenderAddress, bytes, stamp);
       break;
     case UNUSABLE_POS_DATA_ID:
Index: src/MultiPlayer/multiplaymgr.hxx
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/MultiPlayer/multiplaymgr.hxx,v
retrieving revision 1.6
diff -u -r1.6 multiplaymgr.hxx
--- src/MultiPlayer/multiplaymgr.hxx	22 Mar 2008 09:31:09 -0000	1.6
+++ src/MultiPlayer/multiplaymgr.hxx	15 Jun 2008 15:24:23 -0000
@@ -88,7 +88,9 @@
 
   netSocket* mSocket;
   netAddress mServer;
+  netAddress repeatServer;
   bool mHaveServer;
+  bool repeatHaveServer ;
   bool mInitialised;
   string mCallsign;
 };
Index: src/Network/multiplay.cxx
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/Network/multiplay.cxx,v
retrieving revision 1.15
diff -u -r1.15 multiplay.cxx
--- src/Network/multiplay.cxx	10 Oct 2006 05:17:07 -0000	1.15
+++ src/Network/multiplay.cxx	15 Jun 2008 15:24:23 -0000
@@ -59,6 +59,11 @@
 
   set_hz(rate);
 
+  if (dir == "repeat" ) {
+        set_direction("out");
+	fgSetInt("/sim/multiplay/repeatport", port);
+	fgSetString("/sim/multiplay/repeathost", host.c_str());
+  } else {
   set_direction(dir);
 
   if (get_direction() == SG_IO_IN) {
@@ -72,6 +77,7 @@
     fgSetString("/sim/multiplay/txhost", host.c_str());
 
   }
+  }
 
 }
 
