pcsc-lite
1.8.8
|
client/server communication (on the server side only) More...
#include "config.h"
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/un.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
#include "misc.h"
#include "pcscd.h"
#include "sd-daemon.h"
#include "winscard.h"
#include "debuglog.h"
#include "winscard_msg.h"
Go to the source code of this file.
Functions | |
static int | ProcessCommonChannelRequest (uint32_t *pdwClientID) |
Accepts a Client connection. More... | |
INTERNAL int32_t | InitializeSocket (void) |
Prepares the communication channel used by the server to talk to the clients. More... | |
INTERNAL int32_t | ListenExistingSocket (int fd) |
Acquires a socket passed in from systemd. More... | |
INTERNAL int32_t | ProcessEventsServer (uint32_t *pdwClientID) |
Looks for messages sent by clients. More... | |
Variables | |
static int | commonSocket = 0 |
Socket to a file, used for clients-server comminication. | |
char | AraKiri |
client/server communication (on the server side only)
A file based socket (commonSocket
) is used to send/receive only messages among clients and server.
The messages' data are passed throw a memory mapped file: sharedSegmentMsg
.
Definition in file winscard_msg_srv.c.
INTERNAL int32_t InitializeSocket | ( | void | ) |
Prepares the communication channel used by the server to talk to the clients.
This is called by the server to create a socket for local IPC with the clients. The socket is associated to the file PCSCLITE_CSOCK_NAME
. Each client will open a connection to this socket.
0 | Success |
-1 | Can not create the socket. |
-1 | Can not bind the socket to the file PCSCLITE_CSOCK_NAME . |
-1 | Can not put the socket in listen mode. |
Definition at line 99 of file winscard_msg_srv.c.
References commonSocket.
INTERNAL int32_t ListenExistingSocket | ( | int | fd | ) |
Acquires a socket passed in from systemd.
This is called by the server to start listening on an existing socket for local IPC with the clients.
fd | The file descriptor to start listening on. |
0 | Success |
-1 | Passed FD is not an UNIX socket. |
Definition at line 156 of file winscard_msg_srv.c.
References commonSocket.
|
static |
Accepts a Client connection.
Called by ProcessEventsServer()
.
[out] | pdwClientID | Connection ID used to reference the Client. |
0 | Success. |
-1 | Can not establish the connection. |
Definition at line 64 of file winscard_msg_srv.c.
References commonSocket.
Referenced by ProcessEventsServer().
INTERNAL int32_t ProcessEventsServer | ( | uint32_t * | pdwClientID | ) |
Looks for messages sent by clients.
This is called by the Server's function SVCServiceRunLoop()
.
[out] | pdwClientID | Connection ID used to reference the Client. |
0 | Success. |
-1 | Error accessing the communication channel. |
-2 | EINTR |
2 | Timeout. |
Definition at line 184 of file winscard_msg_srv.c.
References commonSocket, and ProcessCommonChannelRequest().
Referenced by SVCServiceRunLoop().