Index: driver/error.c
===================================================================
--- driver/error.c	(revision 781)
+++ driver/error.c	(working copy)
@@ -248,6 +248,8 @@
             break;
         case CR_SERVER_HANDSHAKE_ERR:
         case CR_CONNECTION_ERROR:
+        case CR_SERVER_GONE_ERROR:
+        case CR_SERVER_LOST:
             state= "08S01";
             break;
         default: break;
Index: test/my_error.c
===================================================================
--- test/my_error.c	(revision 781)
+++ test/my_error.c	(working copy)
@@ -322,7 +322,7 @@
 #endif
   ADD_TEST(t_diagrec)
   ADD_TEST(t_warning)
-  ADD_TODO(t_bug3456)
+  ADD_TEST(t_bug3456)
   ADD_TEST(t_bug16224)
   ADD_TEST(bind_invalidcol)
   ADD_TEST(getdata_need_nullind)
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 781)
+++ ChangeLog	(working copy)
@@ -3,6 +3,8 @@
   Functionality added or changed:
 
   Bugs fixed:
+  * The wrong SQLSTATE was reported when the connection to the server
+    was lost. (Bug #3456)
   * SQLDescribeCol() incorrectly reported whether auto-increment and
     some timestamp fields were nullable. (Bug #26108)
   * SQLGetTypeInfo() reported the wrong column size for the SQL_TYPE_TIME