[Libwebsockets] POST client
Andy Green
andy at warmcat.com
Fri Mar 6 15:45:48 CET 2020
On 3/6/20 1:32 PM, Karl Vogel wrote:
> [2020/03/06 14:27:45:1392] I: Initial logging level 1151
> [2020/03/06 14:27:45:1393] I: Libwebsockets version: 4.0.0 v4.0.0
...
> [2020/03/06 14:27:45:1431] D: lws_client_socket_service:
> buflist-aware-read 0 120
> [2020/03/06 14:27:45:1431] P: WSI_TOKEN_NAME_PART 'H' 0x48
> (role=0x10000000) wsi->lextable_pos=0
> [2020/03/06 14:27:45:1431] P: WSI_TOKEN_NAME_PART 'T' 0x54
> (role=0x10000000) wsi->lextable_pos=87
> [2020/03/06 14:27:45:1431] P: WSI_TOKEN_NAME_PART 'T' 0x54
> (role=0x10000000) wsi->lextable_pos=173
> [2020/03/06 14:27:45:1431] P: WSI_TOKEN_NAME_PART 'P' 0x50
> (role=0x10000000) wsi->lextable_pos=174
> [2020/03/06 14:27:45:1431] P: WSI_TOKEN_NAME_PART '/' 0x2F
> (role=0x10000000) wsi->lextable_pos=175
> [2020/03/06 14:27:45:1432] P: WSI_TOKEN_NAME_PART '1' 0x31
> (role=0x10000000) wsi->lextable_pos=947
> [2020/03/06 14:27:45:1432] P: WSI_TOKEN_NAME_PART '.' 0x2E
> (role=0x10000000) wsi->lextable_pos=948
> [2020/03/06 14:27:45:1432] P: WSI_TOKEN_NAME_PART '1' 0x31
> (role=0x10000000) wsi->lextable_pos=949
> [2020/03/06 14:27:45:1432] P: WSI_TOKEN_NAME_PART ' ' 0x20
> (role=0x10000000) wsi->lextable_pos=-1
Hum, it came off the rails there, the input is fine and it's following
the parse path for "http/1.1 " fine until the space.
>> Make sure you're using today's current master HEAD, it's
>> 1289b0a0ef6fde60cb2d765c380a67167ca522f2 at the moment, or v4.0-stable
>> that's out today. Under some conditions http headers were broken a few
>> days ago briefly on master due to changes allowing chopping them down if
>> h2, ws, or "uncommon headers" are disabled for build in cmake, for very
>> small footprint case.
>
> Pulled in the last few commits, but same issue. The included debug log
> is versus the
> 1289b0a0ef6fde60cb2d765c380a67167ca522f2 commit.
Here I can do an h1 POST fine
$ ./bin/lws-minimal-http-client-post --h1
[2020/03/06 14:35:02:2123] U: LWS minimal http client - POST
[-d<verbosity>] [-l] [--h1]
[2020/03/06 14:35:02:2124] N: lws_create_context: using ss proxy bind
'(null)', port 0, ads '(null)'
[2020/03/06 14:35:02:2930] U: callback_http: doing POST flow
[2020/03/06 14:35:02:2931] U: LWS_CALLBACK_CLIENT_HTTP_WRITEABLE
[2020/03/06 14:35:02:2932] U: LWS_CALLBACK_CLIENT_HTTP_WRITEABLE
[2020/03/06 14:35:02:2932] U: LWS_CALLBACK_CLIENT_HTTP_WRITEABLE
[2020/03/06 14:35:02:3264] U: Connected with server response: 200
[2020/03/06 14:35:02:3264] U: RECEIVE_CLIENT_HTTP_READ: read 538
[2020/03/06 14:35:02:3265] N:
[2020/03/06 14:35:02:3265] N: 0000: 3C 21 44 4F 43 54 59 50 45 20 68 74
6D 6C 3E 3C <!DOCTYPE html><
[2020/03/06 14:35:02:3265] N: 0010: 68 74 6D 6C 20 6C 61 6E 67 3D 22 65
6E 22 3E 3C html lang="en"><
[2020/03/06 14:35:02:3265] N: 0020: 68 65 61 64 3E 3C 6D 65 74 61 20 63
68 61 72 73 head><meta chars
[2020/03/06 14:35:02:3266] N: 0030: 65 74 3D 75 74 66 2D 38 20 68 74 74
70 2D 65 71 et=utf-8 http-eq
[2020/03/06 14:35:02:3266] N: 0040: 75 69 76 3D 22 43 6F 6E 74 65 6E 74
2D 4C 61 6E uiv="Content-Lan
[2020/03/06 14:35:02:3266] N: 0050: 67 75 61 67 65 22 20 63 6F 6E 74 65
6E 74 3D 22 guage" content="
[2020/03/06 14:35:02:3266] N: 0060: 65 6E 22 2F 3E 3C 74 69 74 6C 65 3E
4C 57 53 20 en"/><title>LWS
[2020/03/06 14:35:02:3266] N: 0070: 53 65 72 76 65 72 20 53 74 61 74 75
73 3C 2F 74 Server Status</t
[2020/03/06 14:35:02:3266] N: 0080: 69 74 6C 65 3E 3C 2F 68 65 61 64 3E
3C 62 6F 64 itle></head><bod
[2020/03/06 14:35:02:3266] N: 0090: 79 3E 3C 68 31 3E 46 6F 72 6D 20 72
65 73 75 6C y><h1>Form resul
[2020/03/06 14:35:02:3267] N: 00A0: 74 73 20 28 61 66 74 65 72 20 75 72
6C 64 65 63 ts (after urldec
[2020/03/06 14:35:02:3267] N: 00B0: 6F 64 69 6E 67 29 3C 2F 68 31 3E 3C
74 61 62 6C oding)</h1><tabl
[2020/03/06 14:35:02:3267] N: 00C0: 65 3E 3C 74 72 3E 3C 74 64 3E 4E 61
6D 65 3C 2F e><tr><td>Name</
[2020/03/06 14:35:02:3267] N: 00D0: 74 64 3E 3C 74 64 3E 4C 65 6E 67 74
68 3C 2F 74 td><td>Length</t
[2020/03/06 14:35:02:3267] N: 00E0: 64 3E 3C 74 64 3E 56 61 6C 75 65 3C
2F 74 64 3E d><td>Value</td>
[2020/03/06 14:35:02:3267] N: 00F0: 3C 2F 74 72 3E 3C 74 72 3E 3C 74 64
3E 3C 62 3E </tr><tr><td><b>
[2020/03/06 14:35:02:3267] N: 0100: 74 65 78 74 3C 2F 62 3E 3C 2F 74 64
3E 3C 74 64 text</b></td><td
[2020/03/06 14:35:02:3268] N: 0110: 3E 31 35 3C 2F 74 64 3E 3C 74 64 3E
6D 79 20 74 >15</td><td>my t
[2020/03/06 14:35:02:3268] N: 0120: 65 78 74 20 66 69 65 6C 64 0D 0A 3C
2F 74 64 3E ext field..</td>
[2020/03/06 14:35:02:3268] N: 0130: 3C 2F 74 72 3E 3C 74 72 3E 3C 74 64
3E 3C 62 3E </tr><tr><td><b>
[2020/03/06 14:35:02:3268] N: 0140: 73 65 6E 64 3C 2F 62 3E 3C 2F 74 64
3E 3C 74 64 send</b></td><td
[2020/03/06 14:35:02:3268] N: 0150: 3E 30 3C 2F 74 64 3E 3C 74 64 3E 4E
55 4C 4C 3C >0</td><td>NULL<
[2020/03/06 14:35:02:3268] N: 0160: 2F 74 64 3E 3C 2F 74 72 3E 3C 74 72
3E 3C 74 64 /td></tr><tr><td
[2020/03/06 14:35:02:3269] N: 0170: 3E 3C 62 3E 66 69 6C 65 3C 2F 62 3E
3C 2F 74 64 ><b>file</b></td
[2020/03/06 14:35:02:3269] N: 0180: 3E 3C 74 64 3E 30 3C 2F 74 64 3E 3C
74 64 3E 4E ><td>0</td><td>N
[2020/03/06 14:35:02:3269] N: 0190: 55 4C 4C 3C 2F 74 64 3E 3C 2F 74 72
3E 3C 74 72 ULL</td></tr><tr
[2020/03/06 14:35:02:3269] N: 01A0: 3E 3C 74 64 3E 3C 62 3E 75 70 6C 6F
61 64 3C 2F ><td><b>upload</
[2020/03/06 14:35:02:3269] N: 01B0: 62 3E 3C 2F 74 64 3E 3C 74 64 3E 30
3C 2F 74 64 b></td><td>0</td
[2020/03/06 14:35:02:3269] N: 01C0: 3E 3C 74 64 3E 4E 55 4C 4C 3C 2F 74
64 3E 3C 2F ><td>NULL</td></
[2020/03/06 14:35:02:3269] N: 01D0: 74 72 3E 3C 2F 74 61 62 6C 65 3E 3C
62 72 3E 3C tr></table><br><
[2020/03/06 14:35:02:3270] N: 01E0: 62 3E 66 69 6C 65 6E 61 6D 65 3A 3C
2F 62 3E 20 b>filename:</b>
[2020/03/06 14:35:02:3270] N: 01F0: 6D 79 66 69 6C 65 2E 74 78 74 2C 20
3C 62 3E 6C myfile.txt, <b>l
[2020/03/06 14:35:02:3270] N: 0200: 65 6E 67 74 68 3C 2F 62 3E 20 34 36
3C 2F 62 6F ength</b> 46</bo
[2020/03/06 14:35:02:3270] N: 0210: 64 79 3E 3C 2F 68 74 6D 6C 3E
dy></html>
[2020/03/06 14:35:02:3270] N:
[2020/03/06 14:35:02:3270] U: LWS_CALLBACK_COMPLETED_CLIENT_HTTP
[2020/03/06 14:35:02:3293] U: Completed: OK
$
The related parser bit is
[2020/03/06 14:35:54:3029] P: WSI_TOKEN_NAME_PART 'H' 0x48
(role=0x10000000) wsi->lextable_pos=0
[2020/03/06 14:35:54:3029] P: WSI_TOKEN_NAME_PART 'T' 0x54
(role=0x10000000) wsi->lextable_pos=87
[2020/03/06 14:35:54:3029] P: WSI_TOKEN_NAME_PART 'T' 0x54
(role=0x10000000) wsi->lextable_pos=173
[2020/03/06 14:35:54:3029] P: WSI_TOKEN_NAME_PART 'P' 0x50
(role=0x10000000) wsi->lextable_pos=174
[2020/03/06 14:35:54:3029] P: WSI_TOKEN_NAME_PART '/' 0x2F
(role=0x10000000) wsi->lextable_pos=175
[2020/03/06 14:35:54:3029] P: WSI_TOKEN_NAME_PART '1' 0x31
(role=0x10000000) wsi->lextable_pos=992
[2020/03/06 14:35:54:3030] P: WSI_TOKEN_NAME_PART '.' 0x2E
(role=0x10000000) wsi->lextable_pos=993
[2020/03/06 14:35:54:3030] P: WSI_TOKEN_NAME_PART '1' 0x31
(role=0x10000000) wsi->lextable_pos=994
[2020/03/06 14:35:54:3030] P: WSI_TOKEN_NAME_PART ' ' 0x20
(role=0x10000000) wsi->lextable_pos=1094
[2020/03/06 14:35:54:3030] P: known hdr 14
I could reproduce your problem after -DLWS_ROLE_WS=0... you should be
able to work around it by setting -DLWS_ROLE_WS=1 at cmake while I look
further into it.
-Andy
More information about the Libwebsockets
mailing list