~ubuntu-branches/ubuntu/lucid/nginx/lucid-updates

« back to all changes in this revision

Viewing changes to src/http/ngx_http_core_module.c

  • Committer: Bazaar Package Importer
  • Author(s): Bhavani Shankar
  • Date: 2008-12-01 20:11:53 UTC
  • mfrom: (4.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20081201201153-q0ap33bcphfxriy3
Tags: 0.6.34-1ubuntu1
* Merge from debian unstable, remaining changes: (LP: #303916)
  + debian/control:
    - Add Depend on lsb >= 3.2-14, which has the status_of_proc() function.
  + debian/init.d:
    - Add sourcing to '. /lib/lsb/init-functions'
    - Add the 'status' action
  + Fixed FTBFS by properly defining IOV_MAX to its Linux equivelent.
  + Added dpatch based patch system

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
 
31
31
static ngx_int_t ngx_http_core_find_location(ngx_http_request_t *r,
32
32
    ngx_array_t *locations, ngx_uint_t regex_start, size_t len);
 
33
static ngx_int_t ngx_http_core_send_continue(ngx_http_request_t *r);
33
34
 
34
35
static ngx_int_t ngx_http_core_preconfiguration(ngx_conf_t *cf);
35
36
static void *ngx_http_core_create_main_conf(ngx_conf_t *cf);
785
786
{
786
787
    u_char                    *p;
787
788
    size_t                     len;
788
 
    ngx_int_t                  rc;
 
789
    ngx_int_t                  rc, expect;
789
790
    ngx_http_core_loc_conf_t  *clcf;
790
791
    ngx_http_core_srv_conf_t  *cscf;
791
792
 
832
833
        return NGX_OK;
833
834
    }
834
835
 
 
836
    if (r->headers_in.expect) {
 
837
        expect = ngx_http_core_send_continue(r);
 
838
 
 
839
        if (expect != NGX_OK) {
 
840
            ngx_http_finalize_request(r, expect);
 
841
            return NGX_OK;
 
842
        }
 
843
    }
835
844
 
836
845
    if (rc == NGX_HTTP_LOCATION_AUTO_REDIRECT) {
837
846
        r->headers_out.location = ngx_list_push(&r->headers_out.headers);
1252
1261
}
1253
1262
 
1254
1263
 
 
1264
static ngx_int_t
 
1265
ngx_http_core_send_continue(ngx_http_request_t *r)
 
1266
{
 
1267
    ngx_int_t   n;
 
1268
    ngx_str_t  *expect;
 
1269
 
 
1270
    if (r->expect_tested) {
 
1271
        return NGX_OK;
 
1272
    }
 
1273
 
 
1274
    r->expect_tested = 1;
 
1275
 
 
1276
    expect = &r->headers_in.expect->value;
 
1277
 
 
1278
    if (expect->len != sizeof("100-continue") - 1
 
1279
        || ngx_strncasecmp(expect->data, (u_char *) "100-continue",
 
1280
                           sizeof("100-continue") - 1)
 
1281
           != 0)
 
1282
    {
 
1283
        return NGX_OK;
 
1284
    }
 
1285
 
 
1286
    ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
 
1287
                   "send 100 Continue");
 
1288
 
 
1289
    n = r->connection->send(r->connection,
 
1290
                            (u_char *) "HTTP/1.1 100 Continue" CRLF CRLF,
 
1291
                            sizeof("HTTP/1.1 100 Continue" CRLF CRLF) - 1);
 
1292
 
 
1293
    if (n == sizeof("HTTP/1.1 100 Continue" CRLF CRLF) - 1) {
 
1294
        return NGX_OK;
 
1295
    }
 
1296
 
 
1297
    /* we assume that such small packet should be send successfully */
 
1298
 
 
1299
    return NGX_HTTP_INTERNAL_SERVER_ERROR;
 
1300
}
 
1301
 
 
1302
 
1255
1303
ngx_int_t
1256
1304
ngx_http_set_content_type(ngx_http_request_t *r)
1257
1305
{