asyncio: Add Task.current_task() class method.
diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py
index 999e962..cd9718f 100644
--- a/Lib/asyncio/tasks.py
+++ b/Lib/asyncio/tasks.py
@@ -122,6 +122,22 @@
     # Weak set containing all tasks alive.
     _all_tasks = weakref.WeakSet()
 
+    # Dictionary containing tasks that are currently active in
+    # all running event loops.  {EventLoop: Task}
+    _current_tasks = {}
+
+    @classmethod
+    def current_task(cls, loop=None):
+        """Return the currently running task in an event loop or None.
+
+        By default the current task for the current event loop is returned.
+
+        None is returned when called not in the context of a Task.
+        """
+        if loop is None:
+            loop = events.get_event_loop()
+        return cls._current_tasks.get(loop)
+
     @classmethod
     def all_tasks(cls, loop=None):
         """Return a set of all tasks for an event loop.
@@ -252,6 +268,8 @@
             self._must_cancel = False
         coro = self._coro
         self._fut_waiter = None
+
+        self.__class__._current_tasks[self._loop] = self
         # Call either coro.throw(exc) or coro.send(value).
         try:
             if exc is not None:
@@ -302,6 +320,8 @@
                     self._step, None,
                     RuntimeError(
                         'Task got bad yield: {!r}'.format(result)))
+        finally:
+            self.__class__._current_tasks.pop(self._loop)
         self = None
 
     def _wakeup(self, future):
diff --git a/Lib/asyncio/test_utils.py b/Lib/asyncio/test_utils.py
index c26dd88..131a546 100644
--- a/Lib/asyncio/test_utils.py
+++ b/Lib/asyncio/test_utils.py
@@ -88,7 +88,7 @@
     class SSLWSGIServer(SilentWSGIServer):
         def finish_request(self, request, client_address):
             # The relative location of our test directory (which
-            # contains the sample key and certificate files) differs
+            # contains the ssl key and certificate files) differs
             # between the stdlib and stand-alone Tulip/asyncio.
             # Prefer our own if we can find it.
             here = os.path.join(os.path.dirname(__file__), '..', 'tests')