pcsc-lite  1.8.20
Functions | Variables
winscard_msg_srv.c File Reference

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
 

Detailed Description

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.

Function Documentation

◆ InitializeSocket()

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.

Returns
Error code.
Return values
0Success
-1Can not create the socket.
-1Can not bind the socket to the file PCSCLITE_CSOCK_NAME.
-1Can not put the socket in listen mode.

Definition at line 120 of file winscard_msg_srv.c.

◆ ListenExistingSocket()

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.

Parameters
fdThe file descriptor to start listening on.
Returns
Error code.
Return values
0Success
-1Passed FD is not an UNIX socket.

Definition at line 177 of file winscard_msg_srv.c.

◆ ProcessCommonChannelRequest()

static int ProcessCommonChannelRequest ( uint32_t *  pdwClientID)
static

Accepts a Client connection.

Called by ProcessEventsServer().

Parameters
[out]pdwClientIDConnection ID used to reference the Client.
Returns
Error code.
Return values
0Success.
-1Can not establish the connection.

Definition at line 85 of file winscard_msg_srv.c.

◆ ProcessEventsServer()

INTERNAL int32_t ProcessEventsServer ( uint32_t *  pdwClientID)

Looks for messages sent by clients.

This is called by the Server's function SVCServiceRunLoop().

Parameters
[out]pdwClientIDConnection ID used to reference the Client.
Returns
Error code.
Return values
0Success.
-1Error accessing the communication channel.
-2EINTR
2Timeout.

Definition at line 205 of file winscard_msg_srv.c.