diff -r 58eec450954a plugins/python/wsgi_subhandler.c
--- a/plugins/python/wsgi_subhandler.c	Mon Mar 26 14:28:18 2012 +0200
+++ b/plugins/python/wsgi_subhandler.c	Tue Mar 27 11:29:14 2012 +0800
@@ -166,13 +166,14 @@
 
 	PyObject *pychunk;
 	ssize_t wsize;
+	Py_ssize_t chunk_size;
 #ifdef UWSGI_SENDFILE
 	ssize_t sf_len = 0;
 #endif
 
 	// return or yield ?
-	if (PyString_Check((PyObject *)wsgi_req->async_result)) {
-		if ((wsize = wsgi_req->socket->proto_write(wsgi_req, PyString_AsString(wsgi_req->async_result), PyString_Size(wsgi_req->async_result))) < 0) {
+	if (PyString_Check((PyObject *)wsgi_req->async_result) && ((chunk_size = PyString_Size(wsgi_req->async_result)) > 0)) {
+		if ((wsize = wsgi_req->socket->proto_write(wsgi_req, PyString_AsString(wsgi_req->async_result), chunk_size)) <= 0) {
 			uwsgi_error("write()");
 			goto clear;
 		}
@@ -257,8 +258,8 @@
 
 
 
-	if (PyString_Check(pychunk)) {
-		if ((wsize = wsgi_req->socket->proto_write(wsgi_req, PyString_AsString(pychunk), PyString_Size(pychunk))) < 0) {
+	if (PyString_Check(pychunk) && ((chunk_size = PyString_Size(pychunk)) > 0)) {
+		if ((wsize = wsgi_req->socket->proto_write(wsgi_req, PyString_AsString(pychunk), chunk_size)) <= 0) {
 			uwsgi_error("write()");
 			Py_DECREF(pychunk);
 			goto clear;
