allow ommiting data in vicc_transmit/vicc_connect
allows using these operations for both ends, vicc *and* vpcd
This commit is contained in:
@@ -110,11 +110,15 @@ static int opensock(unsigned short port)
|
|||||||
server_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
|
server_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||||
|
|
||||||
if (bind(sock, (struct sockaddr *) &server_sockaddr,
|
if (bind(sock, (struct sockaddr *) &server_sockaddr,
|
||||||
sizeof server_sockaddr) != 0)
|
sizeof server_sockaddr) != 0) {
|
||||||
|
perror(NULL);
|
||||||
goto err;
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
if (listen(sock, 0) != 0)
|
if (listen(sock, 0) != 0) {
|
||||||
|
perror(NULL);
|
||||||
goto err;
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
return sock;
|
return sock;
|
||||||
|
|
||||||
@@ -327,9 +331,12 @@ ssize_t vicc_transmit(struct vicc_ctx *ctx,
|
|||||||
ssize_t r = -1;
|
ssize_t r = -1;
|
||||||
|
|
||||||
if (ctx && lock(ctx->io_lock)) {
|
if (ctx && lock(ctx->io_lock)) {
|
||||||
r = sendToVICC(ctx, apdu_len, apdu);
|
if (apdu_len && apdu)
|
||||||
|
r = sendToVICC(ctx, apdu_len, apdu);
|
||||||
|
else
|
||||||
|
r = 1;
|
||||||
|
|
||||||
if (r > 0)
|
if (r > 0 && rapdu)
|
||||||
r = recvFromVICC(ctx, rapdu);
|
r = recvFromVICC(ctx, rapdu);
|
||||||
|
|
||||||
unlock(ctx->io_lock);
|
unlock(ctx->io_lock);
|
||||||
|
|||||||
@@ -42,12 +42,6 @@ extern "C" {
|
|||||||
/** Standard port of the virtual smart card reader */
|
/** Standard port of the virtual smart card reader */
|
||||||
#define VPCDPORT 35963
|
#define VPCDPORT 35963
|
||||||
|
|
||||||
/** how long to wait for a card in seconds */
|
|
||||||
extern long vpcd_waitsecs;
|
|
||||||
|
|
||||||
/** how long to wait for a card in microseconds */
|
|
||||||
extern long vpcd_waitusecs;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Initialize the module
|
* @brief Initialize the module
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user