atom feed9 messages in ru.sysoev.nginxRe: Upload Progress Issue -- do not h...
FromSent OnAttachments
Yanxin Z.Apr 20, 2011 6:30 pm 
Yanxin Z.Apr 20, 2011 6:32 pm 
EnsiferousApr 20, 2011 7:37 pm 
Yanxin Z.Apr 20, 2011 9:45 pm 
Yanxin Z.Apr 20, 2011 11:23 pm 
Yanxin Z.Apr 21, 2011 12:08 am 
Yanxin Z.Apr 21, 2011 12:22 am 
Brice FigureauApr 21, 2011 2:41 am 
Yanxin Z.Apr 21, 2011 9:22 am 
Subject:Re: Upload Progress Issue -- do not have "uploading" state
From:Yanxin Z. (lis@ruby-forum.com)
Date:Apr 20, 2011 11:23:32 pm
List:ru.sysoev.nginx

I print out the debug

2021 2011/04/20 17:28:07 [debug] 28372#0: *6 http script var: "/opt/nginx/html/api/1.0/web/ upload_internal/" 2022 2011/04/20 17:28:07 [debug] 28372#0: *6 http script copy: "^@" 2023 2011/04/20 17:28:07 [debug] 28372#0: *6 http script file op 0000000000000005 "/opt/nginx/ html/api/1.0/web/upload_internal/" 2024 2011/04/20 17:28:07 [debug] 28372#0: *6 http script if 2025 2011/04/20 17:28:07 [debug] 28372#0: *6 http script regex: "(.*)/upload$" 2026 2011/04/20 17:28:07 [notice] 28372#0: *6 "(.*)/upload$" does not match "/api/1.0/web/ upload_internal/", client: 10.31.1.100, server: localhost, request: "POST /api/1.0/web/ upload_internal/?X-Progress-ID=db298fe5d036a8ae19d2a55b9d1d0ca9 HTTP/1.1", host: "10.1.4. 243", referrer: "https://10.1.4.243/api/1.0/web/upload" 2027 2011/04/20 17:28:07 [debug] 28372#0: *6 test location: "/" 2028 2011/04/20 17:28:07 [debug] 28372#0: *6 test location: "progress" 2029 2011/04/20 17:28:07 [debug] 28372#0: *6 test location: "50x.html" 2030 2011/04/20 17:28:07 [debug] 28372#0: *6 test location: ~ "/api/1.0/web/upload.php" 2031 2011/04/20 17:28:07 [debug] 28372#0: *6 test location: ~ "/api/1.0/web/.*php$" 2032 2011/04/20 17:28:07 [debug] 28372#0: *6 test location: ~ "/api/1.0/web/upload_internal" 2033 2011/04/20 17:28:07 [debug] 28372#0: *6 using configuration "/api/1.0/web/upload_internal" 2034 2011/04/20 17:28:07 [debug] 28372#0: *6 http cl:29308 max:10485760 2035 2011/04/20 17:28:07 [debug] 28372#0: *6 rewrite phase: 2 2036 2011/04/20 17:28:07 [debug] 28372#0: *6 upload-progress: get_tracking_id 2037 2011/04/20 17:28:07 [debug] 28372#0: *6 upload-progress: get_tracking_id no header found 2038 2011/04/20 17:28:07 [debug] 28372#0: *6 upload-progress: get_tracking_id no header found, args found 2039 2011/04/20 17:28:07 [debug] 28372#0: *6 upload-progress: get_tracking_id found args: X- Progress-ID=db298fe5d036a8ae19d2a55b9d1d0ca9 HTTP/1.1^M 2040 Host 2041 2011/04/20 17:28:07 [debug] 28372#0: *6 malloc: 0000000010B7CF40:16 2042 2011/04/20 17:28:07 [debug] 28372#0: *6 upload-progress: get_tracking_id found args: db298fe5d036a8ae19d2a55b9d1d0ca9 2043 2011/04/20 17:28:07 [debug] 28372#0: *6 trackuploads id found: db298fe5d036a8ae19d2a55b9d1d0ca9 2044 2011/04/20 17:28:07 [debug] 28372#0: *6 trackuploads hash 5351D33B for id: db298fe5d036a8ae19d2a55b9d1d0ca9 2045 2011/04/20 17:28:07 [debug] 28372#0: *6 upload-progress: find_node db298fe5d036a8ae19d2a55b9d1d0ca9 2046 2011/04/20 17:28:07 [debug] 28372#0: *6 upload-progress: can't find node 2047 2011/04/20 17:28:07 [debug] 28372#0: *6 add cleanup: 0000000010B7F670 2048 2011/04/20 17:28:07 [debug] 28372#0: slab alloc: 136 slot: 5 2049 2011/04/20 17:28:07 [debug] 28372#0: slab alloc: 00002B65BDE08000 2050 2011/04/20 17:28:07 [debug] 28372#0: *6 trackuploads: 5351D33B inserted in rbtree 2051 2011/04/20 17:28:07 [debug] 28372#0: event timer add: 7: 15000:1303345702489 2052 2011/04/20 17:28:07 [debug] 28372#0: *6 rewrite phase: 3 2053 2011/04/20 17:28:07 [debug] 28372#0: *6 http script var 2054 2011/04/20 17:28:07 [debug] 28372#0: *6 http script var: "POST" 2055 2011/04/20 17:28:07 [debug] 28372#0: *6 http script value: "POST" 2056 2011/04/20 17:28:07 [debug] 28372#0: *6 http script equal

I look at the code, in find_node(), I find out node and sentinel are NULL. So it does not go into while loop.

350 static ngx_http_uploadprogress_node_t * 351 find_node(ngx_str_t * id, ngx_http_uploadprogress_ctx_t * ctx, ngx_log_t * log) 352 { 353 uint32_t hash; 354 ngx_rbtree_node_t *node, *sentinel; 355 ngx_int_t rc; 356 ngx_http_uploadprogress_node_t *up; 357 358 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0, "upload-progress: find_node %V", id); 359 360 hash = ngx_crc32_short(id->data, id->len); 361 362 node = ctx->rbtree->root; 363 sentinel = ctx->rbtree->sentinel; 364 365 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0, "upload-progress: node: %V sentinel: %V", node, sentinel); 366 367 while (node != sentinel) { 368 369 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0, "upload-progress: hash: %V node->key: %V", hash, node->key); 370 if (hash < node->key) { 371 372 node = node->left; 373 continue; 374 } 375 376 if (hash > node->key) { 377 node = node->right; 378 continue; 379 } 380 381 /* hash == node->key */ 382 383 do { 384 385 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0, "upload-progress: In while"); 386 up = (ngx_http_uploadprogress_node_t *) node; 387 388 rc = ngx_memn2cmp(id->data, up->data, id->len, (size_t) up->len); 389 390 if (rc == 0) { 391 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0, 392 "upload-progress: found node"); 393 return up; 394 }

I want to know which function to initialize node and sentinel.