1 changed files with 19 additions and 66 deletions
-
85TODO
@ -1,77 +1,30 @@ |
|||||
VERY BIG TODO: |
|
||||
|
FOR VERSION 2.0 |
||||
|
|
||||
- right now i will use long polling ajax calls when feedback from to the client |
- right now i will use long polling ajax calls when feedback from to the client |
||||
is needed. In the long term this should be changed to websockets (ws). But |
is needed. In the long term this should be changed to websockets (ws). But |
||||
right now ws specification is not final anyway. :) |
right now ws specification is not final anyway. :) |
||||
|
|
||||
- handle errors after all system call...especially open, close, etc. |
|
||||
|
|
||||
- IPV6 support |
|
||||
|
|
||||
- There seem to be a problem in the server under heavy load. Some tests with ab show that at some point it does not accept any more connections. Nor does it seem to answer request. I guess that it might be difficult to find this.... |
|
||||
=> might be done... maybe not completely, I still loose connections under very high load. |
|
||||
|
|
||||
- using tsearch for my memory management was kind of a bad idea. tsearch uses malloc and free upon addition and remove of elements. Resulting again in uncontroolled heap usage. I guess I have to implement my own tree mechanism here, which does not involve further allocation. |
|
||||
|
|
||||
- another bug: if there is trailing garbage on the header line |
|
||||
we got a segfault... |
|
||||
|
|
||||
GET /images/waldschrat.jpg HTTP/1.1^[[D^[[D^[[D^[[D^[[D^[[D^[[D^[[D^[[D^[[D^[[D^[[D^[[D^[[D |
|
||||
^[[D = backspace... |
|
||||
|
|
||||
- the unexpected connection close seems to occur just on concurrency over |
|
||||
1000 paralell connections...maybe this gives a hint. |
|
||||
|
|
||||
- after changing to non blocking sockets the server hangs after some requests. |
|
||||
have to check when this happens.... |
|
||||
* it seems that it does not occur without keep-alive and concurrency |
|
||||
* also concurrent connection don't seem to make a problem. |
|
||||
* keep-alive alone again don't seem to be a problem... |
|
||||
!!!! if both are active something is screwed up.... !!!! |
|
||||
|
|
||||
- at least some of the problems result in something that I think |
|
||||
is a bug in the glibc implementation of tdelete. |
|
||||
|
|
||||
Under some circumstances tdelete does not search the whole tree. |
|
||||
Here comes some debug output of the code... |
|
||||
|
|
||||
This shows a code fragment that tries to remove a no longer |
|
||||
needed asset from the asset_pool. |
|
||||
|
|
||||
DEBUG: pool release asset --./assets/image/waldschrat.jpg-- |
|
||||
|
|
||||
Twalk over all elements in the tree: |
|
||||
|
|
||||
DEBUG: ./assets/image/waldschrat.jpg(1910357807899405601) => 0xe378a8 |
|
||||
DEBUG: ./assets/js/jquery.js(10519512221325982142) => 0x10d3638 |
|
||||
|
|
||||
Output of each call to tDelete comparison function: |
|
||||
(Notice that the searched asset hash was in the previous Twalk. |
|
||||
|
|
||||
DEBUG: search asset hash: 1910357807899405601 |
|
||||
DEBUG: found: 10519512221325982142, key: ./assets/js/jquery.js |
|
||||
DEBUG: !!!!! NOT FOUND !!!!!!! |
|
||||
DEBUG: find results in (nil) |
|
||||
|
- IPV6 support (optional) |
||||
|
|
||||
Repeated 2 times if non was found... |
|
||||
|
- abstract application logic from server logic. The HTTP processors should |
||||
|
only care about HTTP, no application stuff at all. The idea is to create |
||||
|
a class for application commands and one for applications answers. |
||||
|
Additionally an adapter has to be created to translate application |
||||
|
messages from and to HTTP messages. |
||||
|
The advantage is that the application logic will be totally separated from |
||||
|
the communication layer. This way other communication protocols could be |
||||
|
added when need is there. |
||||
|
|
||||
DEBUG: search asset hash: 1910357807899405601 |
|
||||
DEBUG: found: 10519512221325982142, key: ./assets/js/jquery.js |
|
||||
DEBUG: !!!!! NOT FOUND !!!!!!! |
|
||||
DEBUG: find results in (nil) |
|
||||
DEBUG: search asset hash: 1910357807899405601 |
|
||||
DEBUG: found: 10519512221325982142, key: ./assets/js/jquery.js |
|
||||
DEBUG: !!!!! NOT FOUND !!!!!!! |
|
||||
DEBUG: find results in (nil) |
|
||||
=== |
|
||||
|
- move authentication from communication layer to application layer. |
||||
|
|
||||
Again a twalk over all elements... |
|
||||
|
- add a first simple session persistence stuff. |
||||
|
This could store informations like the username and the last login |
||||
|
date and present these to the user. |
||||
|
|
||||
DEBUG: ./assets/image/waldschrat.jpg(1910357807899405601) => 0xe378a8 |
|
||||
DEBUG: ./assets/js/jquery.js(10519512221325982142) => 0x10d3638 |
|
||||
|
- Let a user being able to create tasks and get them again after login. |
||||
|
|
||||
Final statement... |
|
||||
|
- Implement roles and role based access model. |
||||
|
|
||||
DEBUG delete 0xe378a8, parent was (nil) |
|
||||
|
- Create management for roles. |
||||
|
|
||||
So, it looks like I should build my own tree implementation... |
|
||||
well in fact it seems that I have to! |
|
||||
|
- Give a user the ability to open tasks to other users / roles.... |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue