allow ommiting data in vicc_transmit/vicc_connect

allows using these operations for both ends, vicc *and* vpcd
This commit is contained in:
Frank Morgner
2015-03-14 15:03:16 +01:00
parent 1af188e2b2
commit aa90d22813
2 changed files with 11 additions and 10 deletions

View File

@@ -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)) {
if (apdu_len && apdu)
r = sendToVICC(ctx, 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);

View File

@@ -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
* *