diff --git a/Lib/test/test_socket_ssl.py b/Lib/test/test_socket_ssl.py
index eb00b9b..ccb8318 100644
--- a/Lib/test/test_socket_ssl.py
+++ b/Lib/test/test_socket_ssl.py
@@ -2,13 +2,14 @@
 
 from test import test_support
 import socket
+import time
 
 # Optionally test SSL support.  This requires the 'network' resource as given
 # on the regrtest command line.
 skip_expected = not (test_support.is_resource_enabled('network') and
                      hasattr(socket, "ssl"))
 
-def test_main():
+def test_basic():
     test_support.requires('network')
     if not hasattr(socket, "ssl"):
         raise test_support.TestSkipped("socket module has no ssl support")
@@ -28,5 +29,40 @@
     buf = f.read()
     f.close()
 
+def test_rude_shutdown():
+    try:
+        import thread
+    except ImportError:
+        return
+
+    # some random port to connect to
+    PORT = 9934
+    def listener():
+        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        s.bind(('', PORT))
+        s.listen(5)
+        s.accept()
+        del s
+        thread.exit()
+
+    def connector():
+        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        s.connect(('', PORT))
+        try:
+            ssl_sock = socket.ssl(s)
+        except socket.sslerror:
+            pass
+        else:
+            raise test_support.TestFailed, \
+                        'connecting to closed SSL socket failed'
+
+    thread.start_new_thread(listener, ())
+    time.sleep(1)
+    connector()
+
+def test_main():
+    test_rude_shutdown()
+    test_basic()
+
 if __name__ == "__main__":
     test_main()
diff --git a/Modules/_ssl.c b/Modules/_ssl.c
index 16edadd..27c3297 100644
--- a/Modules/_ssl.c
+++ b/Modules/_ssl.c
@@ -110,7 +110,7 @@
 	{
 		unsigned long e = ERR_get_error();
 		if (e == 0) {
-			if (ret == 0) {
+			if (ret == 0 || !obj->Socket) {
 				p = PY_SSL_ERROR_EOF;
 				errstr = "EOF occurred in violation of protocol";
 			} else if (ret == -1) {
@@ -432,6 +432,7 @@
 	timedout = wait_for_timeout(self->Socket, 0);
 	if (timedout) {
 		PyErr_SetString(PySSLErrorObject, "The read operation timed out");
+		Py_DECREF(buf);
 		return NULL;
 	}
 	do {
