~ubuntu-branches/ubuntu/saucy/uwsgi/saucy

« back to all changes in this revision

Viewing changes to proto/fastcgi.c

  • Committer: Package Import Robot
  • Author(s): Janos Guljas
  • Date: 2012-04-30 17:35:22 UTC
  • mfrom: (1.1.7)
  • Revision ID: package-import@ubuntu.com-20120430173522-qucwu1au3s9bflhb
Tags: 1.2+dfsg-1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
193
193
        if (len <= 65535) {
194
194
                rlen = write(wsgi_req->poll.fd, &fr, 8);
195
195
                if (rlen <= 0) {
196
 
                        return rlen;
197
 
                }
198
 
                return write(wsgi_req->poll.fd, buf, len);
 
196
                        if (!uwsgi.ignore_write_errors) {
 
197
                                uwsgi_req_error("write()");
 
198
                        }
 
199
                        wsgi_req->write_errors++;
 
200
                        return 0;
 
201
                }
 
202
                rlen = write(wsgi_req->poll.fd, buf, len);
 
203
                if (rlen <= 0) {
 
204
                        if (!uwsgi.ignore_write_errors) {
 
205
                                uwsgi_req_error("write()");
 
206
                        }
 
207
                        wsgi_req->write_errors++;
 
208
                        return 0;
 
209
                }
 
210
                return rlen;    
199
211
        }       
200
212
        else {
201
213
                while(len > 0) {
202
214
                        chunk_len = UMIN(65535, len);   
203
215
                        fr.cl = htons(chunk_len);
204
216
                        rlen = write(wsgi_req->poll.fd, &fr, 8);
205
 
                        if (rlen <= 0) {
206
 
                                return rlen;
207
 
                        }
 
217
                        if (rlen != 8) {
 
218
                                if (!uwsgi.ignore_write_errors) {
 
219
                                        uwsgi_req_error("write()");
 
220
                                }
 
221
                                wsgi_req->write_errors++;
 
222
                                return 0;
 
223
                        }
208
224
                        rlen = write(wsgi_req->poll.fd, ptr, chunk_len);
209
 
                        if (rlen <= 0) {
210
 
                                return rlen;
211
 
                        }
 
225
                        if (rlen != 8) {
 
226
                                if (!uwsgi.ignore_write_errors) {
 
227
                                        uwsgi_req_error("write()");
 
228
                                }
 
229
                                wsgi_req->write_errors++;
 
230
                                return 0;
 
231
                        }
212
232
                        ptr += rlen;
213
233
                        len -= rlen;
214
234
                }
224
244
void uwsgi_proto_fastcgi_close(struct wsgi_request *wsgi_req) {
225
245
 
226
246
        if (write(wsgi_req->poll.fd, FCGI_END_REQUEST, 24) <= 0) {
227
 
                uwsgi_error("write()");
 
247
                uwsgi_req_error("write()");
228
248
        }
229
249
 
230
250
        uwsgi_proto_base_close(wsgi_req);