Index: src/mlx/gui/flight.py
===================================================================
--- src/mlx/gui/flight.py	(revision 819)
+++ src/mlx/gui/flight.py	(revision 821)
@@ -541,4 +541,10 @@
         self._flightList.addFlight(flight)
 
+    def _reflyFlight(self, flight):
+        """Refly the given flight."""
+        self._addFlight(flight)
+        self._setupHelp()
+        self._updatePendingButton()
+
     def _pendingClicked(self, button):
         """Called when the Pending flights button is clicked."""
@@ -5080,5 +5086,6 @@
         self._loginPage = LoginPage(self)
         self._pages.append(self._loginPage)
-        self._pages.append(FlightSelectionPage(self))
+        self._flightSelectionPage = FlightSelectionPage(self)
+        self._pages.append(self._flightSelectionPage)
         self._pages.append(GateSelectionPage(self))
         self._pages.append(RegisterPage(self))
@@ -5481,4 +5488,9 @@
         self.login(callback, None, None)
 
+    def reflyFlight(self, bookedFlight):
+        """Add the given booked flight to the flight selection page."""
+        self._removePendingFlight(bookedFlight)
+        self._flightSelectionPage._reflyFlight(bookedFlight)
+
     def cancelFlight(self, reloadCallback):
         """Cancel the flight.
@@ -5526,4 +5538,13 @@
             if page is not originator:
                 page.changeMETAR(metar)
+
+    def _removePendingFlight(self, flight):
+        """Remove the given pending flight from the login result."""
+        for flights in [self._loginResult.reportedFlights,
+                        self._loginResult.rejectedFlights]:
+            for f in flights:
+                if f.id==flight.id:
+                    flights.remove(f)
+                    return
 
     def _loginResultCallback(self, returned, result):
Index: src/mlx/gui/flightlist.py
===================================================================
--- src/mlx/gui/flightlist.py	(revision 819)
+++ src/mlx/gui/flightlist.py	(revision 821)
@@ -251,4 +251,5 @@
         self._reflyButton = gtk.Button(xstr("pendflt_refly_" + which))
         self._reflyButton.set_sensitive(False)
+        self._reflyButton.connect("clicked", self._reflyClicked)
         buttonBox.pack_start(self._reflyButton, False, False, 2)
 
@@ -284,4 +285,37 @@
         self._deleteButton.set_sensitive(sensitive)
 
+    def _reflyClicked(self, button):
+        """Called when the Refly button is clicked."""
+        gui = self._wizard.gui
+        gui.beginBusy(xstr("pendflt_refly_busy"))
+        self.set_sensitive(False)
+
+        flight = self._flights[self._flightList.selectedIndex]
+        gui.webHandler.reflyFlights(self._reflyResultCallback, [flight.id])
+
+    def _reflyResultCallback(self, returned, result):
+        """Called when the refly result is available."""
+        gobject.idle_add(self._handleReflyResult, returned, result)
+
+    def _handleReflyResult(self, returned, result):
+        """Handle the refly result."""
+
+        self.set_sensitive(True)
+        gui = self._wizard.gui
+        gui.endBusy()
+
+        print "PendingFlightsFrame._handleReflyResult", returned, result
+
+        if returned:
+            index = self._flightList.selectedIndex
+
+            flight = self._flights[index]
+
+            self._flightList.removeFlight(index)
+            del self._flights[index]
+
+            self._wizard.reflyFlight(flight)
+
+
 #-----------------------------------------------------------------------------
 
Index: src/mlx/rpc.py
===================================================================
--- src/mlx/rpc.py	(revision 820)
+++ src/mlx/rpc.py	(revision 821)
@@ -340,4 +340,9 @@
                           self._server.setCheckFlightPassed(sessionID, type))
 
+    def reflyFlights(self, flightIDs):
+        """Mark the flights with the given IDs for reflying."""
+        self._performCall(lambda sessionID:
+                          self._server.reflyFlights(sessionID, flightIDs))
+
     def _performCall(self, callFn, acceptResults = []):
         """Perform a call using the given call function.
Index: src/mlx/web.py
===================================================================
--- src/mlx/web.py	(revision 809)
+++ src/mlx/web.py	(revision 821)
@@ -1242,4 +1242,18 @@
 #------------------------------------------------------------------------------
 
+class ReflyFlights(RPCRequest):
+    """A request to mark certain flights for reflying."""
+    def __init__(self, client, callback, flightIDs):
+        """Construct the request."""
+        super(ReflyFlights, self).__init__(client, callback)
+        self._flightIDs = flightIDs
+
+    def run(self):
+        """Perform the update."""
+        self._client.reflyFlights(self._flightIDs)
+        return Result()
+
+#------------------------------------------------------------------------------
+
 class Handler(threading.Thread):
     """The handler for the web services.
@@ -1323,4 +1337,8 @@
                                               callback, aircraftType))
 
+    def reflyFlights(self, callback, flightIDs):
+        """Mark the flights with the given IDs for reflying."""
+        self._addRequest(ReflyFlights(self._rpcClient, callback, flightIDs))
+
     def run(self):
         """Process the requests."""
