diff --git a/docs/releases.rst b/docs/releases.rst index b8043260..c66816e8 100644 --- a/docs/releases.rst +++ b/docs/releases.rst @@ -5,6 +5,7 @@ Release notes :maxdepth: 2 releases/next + releases/v3.0.2 releases/v3.0.1 releases/v3.0.0 releases/v2.4.1 diff --git a/docs/releases/v3.0.2.rst b/docs/releases/v3.0.2.rst new file mode 100644 index 00000000..7eac09db --- /dev/null +++ b/docs/releases/v3.0.2.rst @@ -0,0 +1,12 @@ +What's new in Tornado 3.0.2 +=========================== + +Jun 2, 2013 +----------- + +* `tornado.auth.TwitterMixin` now defaults to version 1.1 of the + Twitter API, instead of version 1.0 which is being `discontinued on + June 11 `_. It also now uses HTTPS + when talking to Twitter. +* Fixed a potential memory leak with a long chain of `.gen.coroutine` + or `.gen.engine` functions. diff --git a/tornado/auth.py b/tornado/auth.py index 42400e19..89ac9479 100644 --- a/tornado/auth.py +++ b/tornado/auth.py @@ -37,7 +37,7 @@ Example usage for Google OpenID:: class GoogleLoginHandler(tornado.web.RequestHandler, tornado.auth.GoogleMixin): @tornado.web.asynchronous - @tornado.gen.coroutine + @tornado.gen.engine def get(self): if self.get_argument("openid.mode", None): user = yield self.get_authenticated_user() @@ -605,7 +605,7 @@ class TwitterMixin(OAuthMixin): class TwitterLoginHandler(tornado.web.RequestHandler, tornado.auth.TwitterMixin): @tornado.web.asynchronous - @tornado.gen.coroutine + @tornado.gen.engine def get(self): if self.get_argument("oauth_token", None): user = yield self.get_authenticated_user() @@ -667,7 +667,7 @@ class TwitterMixin(OAuthMixin): tornado.auth.TwitterMixin): @tornado.web.authenticated @tornado.web.asynchronous - @tornado.gen.coroutine + @tornado.gen.engine def get(self): new_entry = yield self.twitter_request( "/statuses/update", @@ -746,7 +746,7 @@ class FriendFeedMixin(OAuthMixin): class FriendFeedLoginHandler(tornado.web.RequestHandler, tornado.auth.FriendFeedMixin): @tornado.web.asynchronous - @tornado.gen.coroutine + @tornado.gen.engine def get(self): if self.get_argument("oauth_token", None): user = yield self.get_authenticated_user() @@ -791,7 +791,7 @@ class FriendFeedMixin(OAuthMixin): tornado.auth.FriendFeedMixin): @tornado.web.authenticated @tornado.web.asynchronous - @tornado.gen.coroutine + @tornado.gen.engine def get(self): new_entry = yield self.friendfeed_request( "/entry", @@ -875,7 +875,7 @@ class GoogleMixin(OpenIdMixin, OAuthMixin): class GoogleLoginHandler(tornado.web.RequestHandler, tornado.auth.GoogleMixin): @tornado.web.asynchronous - @tornado.gen.coroutine + @tornado.gen.engine def get(self): if self.get_argument("openid.mode", None): user = yield self.get_authenticated_user() @@ -1171,7 +1171,7 @@ class FacebookGraphMixin(OAuth2Mixin): class FacebookGraphLoginHandler(LoginHandler, tornado.auth.FacebookGraphMixin): @tornado.web.asynchronous - @tornado.gen.coroutine + @tornado.gen.engine def get(self): if self.get_argument("code", False): user = yield self.get_authenticated_user( @@ -1258,7 +1258,7 @@ class FacebookGraphMixin(OAuth2Mixin): tornado.auth.FacebookGraphMixin): @tornado.web.authenticated @tornado.web.asynchronous - @tornado.gen.coroutine + @tornado.gen.engine def get(self): new_entry = yield self.facebook_request( "/me/feed",