Kissdx develop manual: Admin Control command

From Kissdx-wiki

Jump to: navigation, search

Home  : Home > Kissdx REFERENCE Manual >

Contents

Objective of "Admin/Control Command"

Release 0.13.10a of kissdx is an self managed daemon in charge of streaming data to KiSS player.
The objective of 'Admin' or 'Control' command is to manage a running kissdx daemon remotely: Stop, Reload config (after changing kissdx.conf), etc. ...

How does kissdx internal design enable quick response to KiSS player streaming request

Each request received from a KiSS player is categorised as "heavy" or "light". Heavy request is treated via a child fork process (KML, PCLINK). To limit consuming unecessary time in creating fork environement, the "light" request are treated directly in the daemon part of code.


Each time KiSS player and kissdx server exchange information, a connection is used in TCP (not in UDP). Various type of connections have different timelifes :

  • Request of media streaming (music,film) are long connection
  • Request of media streaming (picture) are medium connection
  • Request of library browsing are short connection


Network topology - TCP Listener

/----------\                                                                        /----------------------------------\
| kissdx   |                                                                        |     KiSS player                  |
| daemon   | <== Request  UDP:8000 <== ARE_YOU_KISS_PCLINK_SERVER?                  | Menu:Searching PCLINK host       |
|   daemon | ==> Response UDP:8000 ==== HOSTNAME ===============================>   |  (identification of mediacenter) |
|          |                                                                        |                                  |
| daemon   | <== Request  PCLINK:8000 <== GET, SIZE, LIST, ACTION1, ACTION2         | Action from remote control       |
|   (fork) | ==> Response PCLINK:8000 ==== MEDIA or BROWSING LIRARY ============>   |  (streaming video,music,picture) |
|          |                                                                        |                                  |
| daemon   | <== Request  KML:8888    <== GET index.kml                             | Action from remote control       |
|   (fork) | ==> Response KML:8888    ==== Any KML content page ================>   |    (browsing like web does)      |
|          |                                                                        |                                  |
|          |                                                                        \----------------------------------/
|          |
|          |                                                                        /--------------------------------\
| daemon   | <== Request  ADMCMD:8008 <== STOP, FORCESTOP, RELOAD_CONFIG,STATUS...  |  kissdx or any ADMCMD client   |
|   (fork) | ==> Response ADMCMD:8008 ==========================================>   |  administration information    |
|          |                                                                        |                                |
\----------/                                                                        \--------------------------------/

Target administration command line

kissdx --send COMMAND_ACTION --mediacenter MediaCenterFullHostName --port PORT_NUMBER
kissdx -v -s STOP -m MediacenterName.home.fr -p 8008

Architecture of kissdx admin command service

Administration command are sent locally or remotly to a admin port listener :(default 8008)

Tips : Maybe a identity control is needed to prevent kissdx reception of STOP from corrupted client
  • Discussion regarding : Specification for Command Protocol in SVN :[1]

Client side is a autonome instance of kissdx that execute a send command over TCP/IP from master process (no child, fork is needed) because this instance focus only on this administration action and do not provide media through streaming.

Server side is more tricky because streaming action is continiously running. Server side process is running in a master daemon and trigger a child (fork) to treat long TCP request received. Server side process (daemon) accept to execute administrative task only if it's a short time consuming.

How does communication exist between server 'Daemon' and 'Child' ?
- Daemon and child will not exchange through TCP/IP as it's too fat for so close process.
- Daemon and child exchange between "Local Named Socket" established once per daemon (like a TCP port specifique to this process)

The 'hidden' feature invoke a mecanism of changing kissdx configuration. Analysis of its internal mecanism may be a model for admin command handling

Feature HIDDEN (existing): KiSS player browses library, selects hidden file in image folder
>> KiSS (when selecting the 'hidden' image, send a TCP request to kissdx
>> Daemon.TCP.Request opens a child fork and treat PCLINK exchange, detects HIDDEN feature request 
   (no lock on Daemon)(sending an image is a long process)
>> >> Child open a Local Named Socket (Local Command) to tell back Daemon to treat this HIDDEN feature
>> >> >> Daemon.LocalCommand receives a command HIDDEN (not time consuming action) and treat it
Conclusion: a go and return between Daemon and child needed due to PCLINK transport of 'Hidden' request
Each PCLINK request is calibrated as 'long' connection and trigger the creation of a child dedicated to answer it
RELOAD_CONFIG (proposal on HIDDEN model): kissdx client send a TCP:8008 RELOAD_CONFIG request
Considering RELOAD_CONFIG as a 'long' connection, a child may be trigger to treat the request
>> Daemon.TCP.Request opens a child fork and treat ADMCMD exchange, detects RELOAD_CONFIG feature request 
   (no lock on Daemon)
>> >> Child open a Local Named Socket (Local Command) to tell Daemon to treat this RELOAD_CONFIG feature
>> >> >> Daemon.LocalCommand receives a command RELOAD_CONFIG (not time consuming action) and treat it

Question : Should we implement RELOAD_CONFIG directly in Daemon with no use of child ?
Based on the fact that a double invocation of Daemon process for short admin command execution is a waste of resource/time.

Implement in child : Avoid Daemon to treat an admin command and keep it focus on incoming streaming request
Implement in daemon: In fine, what else the mecanism, the command RELOAD_CONFIG is treated in Daemon process
The fact : Only a parsing section could be included in Daemon process 
   And depending on the categorisation of the request (long / short), a child fork may be used

Proposition to treat administration command in Daemon :

STOP (e.q. signal(SIGTERM)), FORCESTOP and RELOAD_CONFIG (e.q. parse_config()) are identified in Daemon
  and treated without a fork mecanism, because they are non resource consuming mecanism.

Consistency with rest of kissdx code :

Existing part of code already apply this philosophy of "quick action are treated in daemon":
The UDP broadcasting of KiSS player is treated in daemon via function UDP.Handle.

kissdx STOP - FORCESTOP command design

Usual status of kissdx is streaming media to KiSS players. A single daemon and multiple child to stream media. At home, the KiSS player number are reduced and child stream are limited. In an hotel type of media broadcast, the number of child may be larger.

The end user impact of a 'Stop' command invoked on kissdx, may be of two types:

  • STOP : target = the master daemon : Current streamings are continuing, but no more request are accepted
  • FORCESTOP : target = all process of kissdx : All current streaming child are stopped and no more request are accepted.

In which case, do you need the usage of kissdx STOP or FORCESTOP command ?

  • You will need the command STOP in case of a configuration change or installation of new release of kissdx ....

In this case, the multiple KiSS player connected to your server should not be disturbed. In fact, it's the child (the copy of daemon) in memory that serves actually the media to KiSS player. Thus, the current streaming child may survive as they do not depend on anything else than source media. The running code is in memory. The code of kissdx binaries on disk may change without interference with current streaming.

  • You will need the command FORCESTOP in case of emergency situation to stop instantly everything

FORCESTOP is a drastic invocation, due to the instantly stop of any streaming with end user client. KiSS players will display an error as they expect their media to be continiously streamed up to the end of these one. Emergency context may need those behavior. Deep reorganisation of file system hosting media source, or complete reorganisation may need a not any more access to media situation as a prerequisite.

kissdx STOP - FORCESTOP Implementation design

STOP command implementation

STOP action should only affect the master daemon and keep alive current streaming child.
On daemon STOP command reception, send a gracefull SIGTERM signal to kissdx (daemon pid : getpid())
kill(daemon_pid, SIGTERM);
  This way, classical already existing procedure of shutdown is reused (remove temp file, log ...)

FORCESTOP command implementation

On daemon FORCESTOP command reception, send a gracefull SIGTERM to any of kissdx process group
// if kill(pid == 0) =>  All processes in the same process group as the sender.
kill(0, SIGTERM);
This will include the master daemon and all the child already created
Lecture
GNU C kill() kill(daemon_pid,SIGTERM) / http://www.delorie.com/gnu/docs/glibc/libc_501.html

kissdx.conf - new section - Adminstration command

# Administration server settings: listen for request on tcp port 8008 by default
# Administration server is not activated by default for security reasons
#adminserver_port = 8008
#adminserver_enable = yes / no
Directive 'adminserver_port' set the listing port for administation server.
Default value is 8008
Directive 'adminserver_enable' activate the adminstration server 
Default value is no ( for security reason : the user tell explicitly what service to open)

function chaining for admin command

Client sending :

  1. terminal command line : kissdx -s STOP -m MediacenterName.home.fr
  2. kissdx.c: main().command_line_option_parsing, fork any admin command to perform
  3. kissdx.c: perform_admcmd_stop() : send tcp command stop, wait for confirmation, close socket

Server reception (in kissdx existing standard): based on pclink chaining ...

  1. kissdx.c: main() : do_daemon() : receive tcp request and trigger handle_request()
  2. connection.c: handle_request() : do_recv and parse command: LIST => handle_list(), GET => handle_get(), SIZE => handle_size()
  3. connection.c: get information and do_send()

Server reception (admin command):

  1. kissdx.c: main().do_daemon() : receive and trigger handle_admin_command_request().
  2. connection.c: parse_admcmd_request() : do_recv and parse command: STOP => handle_admincommand_stop(),
  3. ... FORCESTOP => handle_admincommand_forcestop() ... RELOADCONFIG => handle_admincommand_reloadconfig()
  4. connection.c: handle_admcmd_stop() : confirm to client (acknowledge receipt) and perform action
Current implementation (Revision 107) does not include the "acknowledge receipt" sent back to client.

Unit test post implementation

  • Check of standard kissdx feature

2007.03.15 = ok

Searching pclink server / select picture library / select a picture display/ back/retrieve in recently used / redisplay
Music listening/ retrieve and played from recently
Video viewing/ retrieve and played from recently

./kissdx -vc kissd.conf ==> running in verbose mode
./kissdx -s STOP -m 127.0.0.1            ==> kissdx stop gracefully
./kissdx -s STOP -m ubuntudev.home.fr    ==> kissdx stop gracefully
./kissdx -s STOP                         ==> kissdx stop gracefully
./kissdx -vc kissd.conf ==> running in verbose mode and a CHILD is serving a long media (music or video)
./kissdx -s STOP                         ==> kissdx stop gracefully
but terminal windows, does not give back the prompt (a CTRL C is needed to retrieve it)
???

2007.03.21 = Check clean end of child

Start + stop of kissdx

Terminal 1 = ./kissdx -vc kissdx.conf
 no client connection, no streaming serving currently
 only one process in memory (ps aux|grep kissdx)
Terminal 2 = ./kissdx -s STOP
Terminal 1 = Give back the prompt
Server :
[ 6692] 2007-03-21 21:58:21 handle_admin_command: Read 4 bytes from socket 7
[ 6692] 2007-03-21 21:58:21 Admin command received: [STOP]
[ 6688] 2007-03-21 21:58:21 Child process [ 6692] exited
[ 6688] 2007-03-21 21:58:21 shutting down kissdx...
Client :
[ 6691] 2007-03-21 21:58:21 kissdx Administration Client with command [STOP][4]
[ 6691] 2007-03-21 21:58:21 CLIENT Admin Command request     :  STOP
[ 6691] 2007-03-21 21:58:21 CLIENT Admin Mediacenter name    :  127.0.0.1
[ 6691] 2007-03-21 21:58:21 CLIENT Admin Mediacenter tcp.port:  8008
[ 6691] 2007-03-21 21:58:21 CLIENT Admin Sending command     :  STOP


Start, stream and in same time stop of kissdx

Terminal 1 = ./kissdx -vc kissdx.conf
 Streaming is served by a child
   olivier   6792  0.0  0.1   4176   932 pts/0    S+   22:02   0:00 ./kissdx -vc kissd.conf  (Daemon)
   olivier   6804  0.0  0.2   4204  1108 pts/0    S+   22:02   0:00 ./kissdx -vc kissd.conf  (Child)
Terminal 2 = ./kissdx -s STOP
Terminal 1 = Streaming continue / Child receive the Give back the prompt ??
...
[ 6846] 2007-03-21 22:04:08 kissdx requested to terminate gracefuly
[ 6846] 2007-03-21 22:04:08 DEBUG handle_admin_command: Daemon socket 7
[ 6846] 2007-03-21 22:04:08 DEBUG handle_admin_command: Daemon    pid 6792
[ 6846] 2007-03-21 22:04:08 DEBUG handle_admin_command: Child     pid 6846
[ 6846] 2007-03-21 22:04:08 handle_admin_command: Read 4 bytes from socket 7
[ 6846] 2007-03-21 22:04:08 Admin command received: [STOP]
....
[ 6804] 2007-03-21 22:06:35 <-- [GET /home/olivier/Shared_Kiss/Musique/Lisa Ekdahl/Lisa Ekdahl - All.mp3| 5963942 20813 |oqmzybpxqdu1|]
[ 6804] 2007-03-21 22:06:35 --> [20813 bytes at offset 5963942]
[ 6804] 2007-03-21 22:06:35 do_recv 169: Reading from socket 7
[ 6804] 2007-03-21 22:06:42 do_recv 169: EOF on socket 7
[ 6804] 2007-03-21 22:06:42 do_recv 170: Reading from socket 7
[ 6804] 2007-03-21 22:06:42 do_recv 170: EOF on socket 7
[ 6804] 2007-03-21 22:06:42 ++++++++++ Closing B2B file 
[ 6804] 2007-03-21 22:06:42 KiSS closed connection
.
Terminal 1 does not give back the prompt
Terminal 2 : ps aux
 olivier@ubuntudev:~/eclipse/CommandProtocol$ ps aux | grep kiss
 olivier   6997  0.0  0.1   2844   756 pts/1    R+   22:09   0:00 grep kiss

Streaming server stop properly according 'ps' command

SERVER
[ 7123] 2007-03-21 22:14:04 do_recv 14: Reading from socket 7
[ 7123] 2007-03-21 22:14:06 do_recv 14: Read 110 bytes from socket 7
[ 7123] 2007-03-21 22:14:06 <-- [GET /home/olivier/Shared_Kiss/Musique/Lisa Ekdahl/{kissdx-B2B}Lisa Ekdahl.mp3| 364125 36362 |oqmzybpxqdu1|]
[ 7123] 2007-03-21 22:14:06 --> [36362 bytes at offset 364125] from Lisa Ekdahl - All I really want is love (with Henri Salvador).mp3
[ 7123] 2007-03-21 22:14:06 do_recv 15: Reading from socket 7
[ 7127] 2007-03-21 22:14:06 kissdx admin command started connection
[ 7127] 2007-03-21 22:14:06 kissdx requested to terminate gracefuly
[ 7127] 2007-03-21 22:14:06 DEBUG handle_admin_command: Daemon socket 7
[ 7127] 2007-03-21 22:14:06 DEBUG handle_admin_command: Daemon    pid 7112
[ 7127] 2007-03-21 22:14:06 DEBUG handle_admin_command: Child     pid 7127
[ 7127] 2007-03-21 22:14:06 handle_admin_command: Read 4 bytes from socket 7
[ 7127] 2007-03-21 22:14:06 Admin command received: [STOP]
[ 7112] 2007-03-21 22:14:06 shutting down kissdx...

interpretation:
7112 master daemon started and 7123 serving music ... 
7112 master daemon receive a STOP, start a child 7127 to handle admin command (heritage of daemon pid and it's own pid)
7127 send a SIGTERM to 7112 that shutting down
? does 7127 closed himself properly ?  >>> yes a ps -efl | grep Z does not detect zombies (SIGINT or SIGTERM is same effect)
? does 7123 closed himself properly at the end of media serving ?

==> A single ENTER key in terminal 1 give back the prompt (then maybe never mind for this tips)
==> ps does not detect any strange process not stopped  !

Seems child streaming music correctly closed at the end of music or stop on remote control
[ 7123] 2007-03-21 22:23:22 KiSS closed connection


CLIENT
olivier@ubuntudev:~/eclipse/CommandProtocol$ ./kissdx -vs STOP
[ 7126] 2007-03-21 22:14:06 kissdx Administration Client with command [STOP][4]
[ 7126] 2007-03-21 22:14:06 CLIENT Admin Command request     :  STOP
[ 7126] 2007-03-21 22:14:06 CLIENT Admin Mediacenter name    :  127.0.0.1
[ 7126] 2007-03-21 22:14:06 CLIENT Admin Mediacenter tcp.port:  8008
[ 7126] 2007-03-21 22:14:06 CLIENT Admin Sending command     : STOP
... continuing to serve the media ...
olivier@ubuntudev:~/eclipse/CommandProtocol$ ps aux | grep kiss
olivier   7123  0.0  0.2   4176  1048 pts/2    S    22:13   0:00 ./kissdx -v
olivier   7198  0.0  0.1   2844   756 pts/1    R+   22:16   0:00 grep kiss


First analysis (3 march 2007) before developping - System trace : "connection and child duration"

[16601] 2007-03-05 23:04:42 Received identity request from 10.39.10.5
[16601] 2007-03-05 23:04:42 Using config file /etc/kissdx.conf
[16601] 2007-03-05 23:04:42 kissdx v0.13-10a, 2007-01-30 is now using the following configuration:
[16601] 2007-03-05 23:04:42 audiopath = /home/media/audio
[16601] 2007-03-05 23:04:42 videopath = /home/media/video
[16601] 2007-03-05 23:04:42 picturepath = /home/media/image
[16601] 2007-03-05 23:04:42 persistentstoragepath = /home/media/persitent
[16601] 2007-03-05 23:04:42 kmlurl = http://www.famille-kahn.com/kml/home/index.kml
[16601] 2007-03-05 23:04:42 pretrigger =
[16601] 2007-03-05 23:04:42 posttrigger =
[16601] 2007-03-05 23:04:42 audiofileextensions = mp3,ogg,wma,wav
[16601] 2007-03-05 23:04:42 videofileextensions = mpg,mpeg,vob,avi,wmv,ts,mp4
[16601] 2007-03-05 23:04:42 picturefileextensions = jpg,jpeg,png,bmp
[16601] 2007-03-05 23:04:42 isofileextensions = iso,img
[16601] 2007-03-05 23:04:42 max_recent_files = 30
[16601] 2007-03-05 23:04:42 server_character_set =
[16601] 2007-03-05 23:04:42 client_character_set =
[16601] 2007-03-05 23:04:42 subtitle_catchall_pattern = {name}*.*
[16601] 2007-03-05 23:04:42 picturetargetwidth = 720
[16601] 2007-03-05 23:04:42 picturetargetheight = 576
[16601] 2007-03-05 23:04:42 picturemaxzoompercent = 100
[16601] 2007-03-05 23:04:42 picturecachesize = 200
[16601] 2007-03-05 23:04:42 picturecachetrimminginterval = 5
[16601] 2007-03-05 23:04:42 networktimeoutinterval = 0
[16601] 2007-03-05 23:04:42 enablehiddenfilestext = Hidden feature
[16601] 2007-03-05 23:04:42 enablehiddenfilesminutes = 1
[16601] 2007-03-05 23:04:42 recentlyusedfoldername = [>> Récement joué <<]


[16892] 2007-03-05 23:04:57 KiSS started connection
[16892] 2007-03-05 23:04:57 do_recv 1: Reading from socket 6
[16892] 2007-03-05 23:04:57 do_recv 1: Read 17 bytes from socket 6
[16892] 2007-03-05 23:04:57 <-- [LIST VIDEO ||]
[16892] 2007-03-05 23:04:57 --> [[>> Récement joué <<]|[>> Récement joué <<]|1|
]
[16892] 2007-03-05 23:04:57 --> [dvd-iso|dvd-iso|1|
]
[16892] 2007-03-05 23:04:57 --> [ext-mount|ext-mount|1|
]
[16892] 2007-03-05 23:04:57 --> [kids_video|kids_video|1|
]
[16892] 2007-03-05 23:04:57 --> [JeuneFillePerle.avi|/home/media/video/JeuneFillePerle.avi|0|
]
[16892] 2007-03-05 23:04:57 --> [EOL
]
[16892] 2007-03-05 23:04:57 do_recv 2: Reading from socket 6
[16892] 2007-03-05 23:04:57 do_recv 2: EOF on socket 6
[16892] 2007-03-05 23:04:57 ++++++++++ Closing B2B file
[16892] 2007-03-05 23:04:57 KiSS closed connection
[16601] 2007-03-05 23:04:57 Child process [16892] exited
[16903] 2007-03-05 23:05:35 KiSS started connection
[16903] 2007-03-05 23:05:35 do_recv 1: Reading from socket 6
[16903] 2007-03-05 23:05:35 do_recv 1: Read 19 bytes from socket 6
[16903] 2007-03-05 23:05:35 <-- [LIST PICTURE ||]
[16903] 2007-03-05 23:05:35 --> [[>> Récement joué <<]|[>> Récement joué <<]|1|
]
[16903] 2007-03-05 23:05:35 --> [2006_12_25|2006_12_25|1|
]
[16903] 2007-03-05 23:05:35 --> [Filtred_Noel_2006|Filtred_Noel_2006|1|
]
[16903] 2007-03-05 23:05:35 --> [web_photo|web_photo|1|
]
[16903] 2007-03-05 23:05:35 --> [larochelle.jpg|/home/media/image/larochelle.jpg|0|
]
[16903] 2007-03-05 23:05:35 --> [noel.jpg|/home/media/image/noel.jpg|0|
]
[16903] 2007-03-05 23:05:35 --> [VoeuxGSI.2007.01.jpg|/home/media/image/VoeuxGSI.2007.01.jpg|0|
]
[16903] 2007-03-05 23:05:35 --> [VoeuxGSI.2007.02.jpg|/home/media/image/VoeuxGSI.2007.02.jpg|0|
]
[16903] 2007-03-05 23:05:35 --> [Hidden feature.jpg|/home/media/image/Hidden feature.jpg|0|
]
[16903] 2007-03-05 23:05:35 --> [EOL
]
[16903] 2007-03-05 23:05:35 do_recv 2: Reading from socket 6
[16903] 2007-03-05 23:05:35 do_recv 2: EOF on socket 6
[16903] 2007-03-05 23:05:35 ++++++++++ Closing B2B file
[16903] 2007-03-05 23:05:35 KiSS closed connection
[16601] 2007-03-05 23:05:35 Child process [16903] exited
[16904] 2007-03-05 23:05:45 KiSS started connection
[16904] 2007-03-05 23:05:45 do_recv 1: Reading from socket 6
[16904] 2007-03-05 23:05:45 do_recv 1: Read 46 bytes from socket 6
[16904] 2007-03-05 23:05:45 <-- [ACTION 2 /home/media/image/Hidden feature.jpg|]
[16904] 2007-03-05 23:05:45 --> [200]
[16904] 2007-03-05 23:05:45 do_recv 2: Reading from socket 6
[16904] 2007-03-05 23:05:45 do_recv 2: Read 47 bytes from socket 6
[16904] 2007-03-05 23:05:45 <-- [SIZE /home/media/image/Hidden feature.jpg| ]
[16904] 2007-03-05 23:05:45 --> [000000000033898]
[16904] 2007-03-05 23:05:45 do_recv 3: Reading from socket 6
[16904] 2007-03-05 23:05:45 do_recv 3: Read 67 bytes from socket 6
[16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 0 4096 |oqmzybpxqdu1|]
[16904] 2007-03-05 23:05:45 do_recv 4: Reading from socket 6
[16904] 2007-03-05 23:05:45 do_recv 4: Read 70 bytes from socket 6
[16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 4096 4096 |oqmzybpxqdu1|]
[16904] 2007-03-05 23:05:45 do_recv 5: Reading from socket 6
[16904] 2007-03-05 23:05:45 do_recv 5: Read 70 bytes from socket 6
[16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 8192 4096 |oqmzybpxqdu1|]
[16904] 2007-03-05 23:05:45 do_recv 6: Reading from socket 6
[16904] 2007-03-05 23:05:45 do_recv 6: Read 71 bytes from socket 6
[16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 12288 4096 |oqmzybpxqdu1|]
[16904] 2007-03-05 23:05:45 do_recv 7: Reading from socket 6
[16904] 2007-03-05 23:05:45 do_recv 7: Read 71 bytes from socket 6
[16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 16384 4096 |oqmzybpxqdu1|]
[16904] 2007-03-05 23:05:45 do_recv 8: Reading from socket 6
[16904] 2007-03-05 23:05:45 do_recv 8: Read 71 bytes from socket 6
[16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 20480 4096 |oqmzybpxqdu1|]
[16904] 2007-03-05 23:05:45 do_recv 9: Reading from socket 6
[16904] 2007-03-05 23:05:45 do_recv 9: Read 71 bytes from socket 6
[16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 24576 4096 |oqmzybpxqdu1|]
[16904] 2007-03-05 23:05:45 do_recv 10: Reading from socket 6
[16904] 2007-03-05 23:05:45 do_recv 10: Read 71 bytes from socket 6
[16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 28672 4096 |oqmzybpxqdu1|]
[16904] 2007-03-05 23:05:45 do_recv 11: Reading from socket 6
[16904] 2007-03-05 23:05:45 do_recv 11: Read 71 bytes from socket 6
[16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 32768 1129 |oqmzybpxqdu1|]
[16904] 2007-03-05 23:05:45 do_recv 12: Reading from socket 6
[16904] 2007-03-05 23:05:45 do_recv 12: EOF on socket 6
[16904] 2007-03-05 23:05:45 Sending local command: SET LIST_HIDDEN_ENTRIES ON
[16601] 2007-03-05 23:05:45 handle_local_command: Read 26 bytes from socket 6
[16601] 2007-03-05 23:05:45 local command received: [SET LIST_HIDDEN_ENTRIES ON]
[16601] 2007-03-05 23:05:45 Option list_hidden_entries has been turned ON
[16904] 2007-03-05 23:05:45 do_recv 13: Reading from socket 6
[16904] 2007-03-05 23:05:45 do_recv 13: EOF on socket 6
[16904] 2007-03-05 23:05:45 ++++++++++ Closing B2B file
[16904] 2007-03-05 23:05:45 KiSS closed connection
[16601] 2007-03-05 23:05:45 Child process [16904] exited


[16992] 2007-03-05 23:19:31 KiSS started connection
[16992] 2007-03-05 23:19:31 do_recv 1: Reading from socket 7
[16992] 2007-03-05 23:19:31 do_recv 1: Read 28 bytes from socket 7
[16992] 2007-03-05 23:19:31 <-- [LIST PICTURE |web_photo|]
[16992] 2007-03-05 23:19:31 --> [ArbreGenealogique|ArbreGenealogique|1|
]
[16992] 2007-03-05 23:19:31 --> [Select.2006_12_21.LaDefense.Noel|Select.2006_12_21.LaDefense.Noel|1|
]
[16992] 2007-03-05 23:19:31 --> [720-480.jpg|/home/media/image/web_photo/720-480.jpg|0|
]
[16992] 2007-03-05 23:19:31 --> [Dsc01707s.jpg|/home/media/image/web_photo/Dsc01707s.jpg|0|
]
[16992] 2007-03-05 23:19:31 --> [hamac.nacelle.jpg|/home/media/image/web_photo/hamac.nacelle.jpg|0|
]
[16992] 2007-03-05 23:19:31 --> [P4050589s.JPG|/home/media/image/web_photo/P4050589s.JPG|0|
]
[16992] 2007-03-05 23:19:31 --> [Pauline.lunette.jpg|/home/media/image/web_photo/Pauline.lunette.jpg|0|
]
[16992] 2007-03-05 23:19:31 --> [EOL
]
[16992] 2007-03-05 23:19:31 do_recv 2: Reading from socket 7
[16992] 2007-03-05 23:19:31 do_recv 2: EOF on socket 7
[16992] 2007-03-05 23:19:31 ++++++++++ Closing B2B file
[16992] 2007-03-05 23:19:31 KiSS closed connection
[16601] 2007-03-05 23:19:31 Child process [16992] exited
Personal tools
Developper