| 921 | } |
| 922 | |
| 923 | function socketOnEnd(server, socket, parser, state) { |
| 924 | const ret = parser.finish(); |
| 925 | |
| 926 | if (ret instanceof Error) { |
| 927 | debug('parse error'); |
| 928 | // socketOnError has additional logic and will call socket.destroy(err). |
| 929 | socketOnError.call(socket, ret); |
| 930 | } else if (!server.httpAllowHalfOpen) { |
| 931 | socket.end(); |
| 932 | } else if (state.outgoing.length) { |
| 933 | state.outgoing[state.outgoing.length - 1]._last = true; |
| 934 | } else if (socket._httpMessage) { |
| 935 | socket._httpMessage._last = true; |
| 936 | } else { |
| 937 | socket.end(); |
| 938 | } |
| 939 | } |
| 940 | |
| 941 | function socketOnData(server, socket, parser, state, d) { |
| 942 | assert(!socket._paused); |