Index: trunk/src/org/openstreetmap/josm/gui/ExceptionDialogUtil.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/ExceptionDialogUtil.java	(revision 2001)
+++ trunk/src/org/openstreetmap/josm/gui/ExceptionDialogUtil.java	(revision 2002)
@@ -37,5 +37,5 @@
     public static void explainOsmApiInitializationException(OsmApiInitializationException e) {
         e.printStackTrace();
-        OptionPaneUtil.showMessageDialog(
+        JOptionPane.showMessageDialog(
                 Main.parent,
                 tr(   "Failed to initialize communication with the OSM server {0}.\n"
@@ -56,5 +56,5 @@
     public static void explainPreconditionFailed(OsmApiException e) {
         e.printStackTrace();
-        OptionPaneUtil.showMessageDialog(
+        JOptionPane.showMessageDialog(
                 Main.parent,
                 tr("<html>Uploading to the server <strong>failed</strong> because your current<br>"
@@ -82,5 +82,5 @@
         }
         e.printStackTrace();
-        OptionPaneUtil.showMessageDialog(
+        JOptionPane.showMessageDialog(
                 Main.parent,
                 msg,
@@ -113,5 +113,5 @@
                 apiUrl, host
         );
-        OptionPaneUtil.showMessageDialog(
+        JOptionPane.showMessageDialog(
                 Main.parent,
                 message,
@@ -137,5 +137,5 @@
         );
         e.printStackTrace();
-        OptionPaneUtil.showMessageDialog(
+        JOptionPane.showMessageDialog(
                 Main.parent,
                 message,
@@ -163,8 +163,32 @@
         );
         e.printStackTrace();
-        OptionPaneUtil.showMessageDialog(
+        JOptionPane.showMessageDialog(
                 Main.parent,
                 message,
                 tr("IO Exception"),
+                JOptionPane.ERROR_MESSAGE
+        );
+    }
+
+    /**
+     * Explains a {@see OsmApiException} which was thrown because of an internal server
+     * error in the OSM API server..
+     * 
+     * @param e the exception
+     */
+
+    public static void explainInternalServerError(OsmTransferException e) {
+        String apiUrl = OsmApi.getOsmApi().getBaseUrl();
+        String message = tr("<html>The OSM server<br>"
+                + "''{0}''<br>"
+                + "reported an internal server error.<br>"
+                + "This is most likely a temporary problem. Please try again later.</html>",
+                apiUrl
+        );
+        e.printStackTrace();
+        JOptionPane.showMessageDialog(
+                Main.parent,
+                message,
+                tr("Internal Server Error"),
                 JOptionPane.ERROR_MESSAGE
         );
@@ -195,5 +219,5 @@
         );
         e.printStackTrace();
-        OptionPaneUtil.showMessageDialog(
+        JOptionPane.showMessageDialog(
                 Main.parent,
                 message,
@@ -261,4 +285,8 @@
                 return;
             }
+            if (oae.getResponseCode() == HttpURLConnection.HTTP_INTERNAL_ERROR) {
+                explainInternalServerError(oae);
+                return;
+            }
         }
         explainGeneric(e);
@@ -281,5 +309,5 @@
                 e.getMessage().replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
         );
-        OptionPaneUtil.showMessageDialog(
+        JOptionPane.showMessageDialog(
                 Main.parent,
                 msg,
