Remove dynamic exceptions
[anna.git] / source / http / parser / WaitChunkSize.cpp
1 // ANNA - Anna is Not Nothingness Anymore                                                         //
2 //                                                                                                //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
4 //                                                                                                //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite                           //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7
8
9 #include <anna/http/parser/WaitChunkSize.hpp>
10
11 #include <anna/http/Transport.hpp>
12 #include <anna/http/functions.hpp>
13 #include <anna/http/internal/defines.hpp>
14
15 using namespace std;
16 using namespace anna;
17
18 /*
19    Se ha comprobado que una vez que parace el Transfer-encoding puede haber un
20    número indeterminado de header antes del chunk (propiemente dicho), pero
21    siempre hay una línea en blanco, que indica que la siguiente línea es la que
22    contiene el tamaño del primer chunk, etc, etc
23
24    160: 6e 65 63 74 69 6f 6e 3a 20 4b 65 65 70 2d 41 6c   nection: Keep-Al
25    176: 69 76 65 0d 0a 54 72 61 6e 73 66 65 72 2d 45 6e   ive..Transfer-En
26    192: 63 6f 64 69 6e 67 3a 20 63 68 75 6e 6b 65 64 0d   coding: chunked.
27    208: 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74   .Content-Type: t
28    224: 65 78 74 2f 70 6c 61 69 6e 0d 0a 0d 0a 31 66 66   ext/plain....1ff     <================= ojo
29    240: 38 0d 0a 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e   8..<?xml version
30    256: 3d 22 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d   ="1.0" encoding=
31
32    464: 4a 61 6e 20 31 39 39 35 20 32 32 3a 30 30 3a 30   Jan 1995 22:00:0
33    480: 30 20 47 4d 54 0d 0a 43 6f 6e 74 65 6e 74 2d 54   0 GMT..Content-T
34    496: 79 70 65 3a 20 74 65 78 74 2f 68 74 6d 6c 0d 0a   ype: text/html..
35    512: 54 72 61 6e 73 66 65 72 2d 65 6e 63 6f 64 69 6e   Transfer-encodin
36    528: 67 3a 20 63 68 75 6e 6b 65 64 0d 0a 43 6f 6e 6e   g: chunked..Conn
37    544: 65 63 74 69 6f 6e 3a 20 4b 65 65 70 2d 41 6c 69   ection: Keep-Ali
38    560: 76 65 0d 0a 0d 0a 35 34 20 20 20 20 20 0d 0a 3c   ve....54     ..<     <================= ojo
39    576: 21 2d 2d 20 6c 30 37 2e 6d 65 6d 62 65 72 2e 75   !-- l07.member.u
40    592: 6b 6c 2e 79 61 68 6f 6f 2e 63 6f 6d 20 75 6e 63   kl.yahoo.com unc
41    608: 6f 6d 70 72 65 73 73 65 64 2f 63 68 75 6e 6b 65   ompressed/chunke
42    624: 64 20 57 65 64 20 53 65 70 20 20 33 20 31 30 3a   d Wed Sep  3 10:
43    640: 31 34 3a 31 31 20 47 4d 54 20 32 30 30 38 20 2d   14:11 GMT 2008 -
44    656: 2d 3e 0a 0d 0a 30 0d 0a 0d 0a                     ->...0....
45 */
46 int http::parser::WaitChunkSize::processLine(http::Transport& transport, const DataBlock& dataBlock, const http::Token& line) const
47 noexcept(false) {
48   if(line.getSize() == 0) {
49     setState(transport, ClassType::ReadChunkSize);
50     return -1;
51   }
52
53   return ReadHeader::processLine(transport, dataBlock, line);
54 }
55