Hi Nginx Developers,


Could someone explain what is the purpose to use blocked frame for SYN_REPLY frame in spdy implementation?

According to our investigation it makes it impossible to use spdy priorities because of blocked frames (since each stream is started with SYN_REPLY which is blocked there is no way how frames from subsequent requests can outrun previous request with lower priority in spdy output queue).

Here is log snippet which shows the problem:
2013/06/25 07:35:04 [debug] 4045#0: *245 free: 0000000002090650, unused: 0
2013/06/25 07:35:04 [debug] 4045#0: *245 free: 0000000002090760, unused: 128
2013/06/25 07:35:04 [debug] 4045#0: *1 post event 00007FA2EC947280
2013/06/25 07:35:04 [debug] 4045#0: *1 delete posted event 00007FA2EC947280
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy write handler
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 00000000022B17D8 sid:243 prio:3 bl:0 size:8
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 00000000022B16C0 sid:243 prio:3 bl:0 size:5008
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 00000000022AB2F8 sid:243 prio:3 bl:1 size:269
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 00000000022A8748 sid:239 prio:3 bl:0 size:8
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 00000000022A8630 sid:239 prio:3 bl:0 size:5008
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 00000000022AC690 sid:241 prio:1 bl:0 size:8
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 00000000021184B8 sid:241 prio:1 bl:0 size:1008
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 0000000002118278 sid:241 prio:1 bl:1 size:268
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 00000000020B3C38 sid:239 prio:3 bl:1 size:269
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 00000000022A4718 sid:237 prio:3 bl:0 size:8
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 00000000022A4600 sid:237 prio:3 bl:0 size:5008
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 000000000229D228 sid:237 prio:3 bl:1 size:269
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 000000000229F6C8 sid:235 prio:3 bl:0 size:8
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 000000000229F5B0 sid:235 prio:3 bl:0 size:5008
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 0000000002290158 sid:235 prio:3 bl:1 size:269
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 000000000229A678 sid:233 prio:3 bl:0 size:8
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 000000000229A560 sid:233 prio:3 bl:0 size:5008
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 0000000002294198 sid:233 prio:3 bl:1 size:269
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 0000000002297648 sid:229 prio:3 bl:0 size:8
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 0000000002297530 sid:229 prio:3 bl:0 size:5008
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 0000000002296638 sid:231 prio:3 bl:0 size:8
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 0000000002296520 sid:231 prio:3 bl:0 size:5008
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 00000000020B5C58 sid:231 prio:3 bl:1 size:269
2013/06/25 07:35:04 [debug] 4045#0: *1 spdy frame out: 00000000020ACBC8 sid:229 prio:3 bl:1 size:269

As you can see farm with priority 1 was added somewhere in the middle of queue because of we have 
00000000020B3C38 sid:239 prio:3 bl:1 size:269

BR/ Yury