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 |
|||
is needed. In the long term this should be changed to websockets (ws). But |
|||
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