X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Fclient%2Fsock.c;h=8602532da9eea9d4575d85d52fdc82cc34976c91;hp=805dc1d1ce5350da8d1aaced43d9bce53df1d9cd;hb=5e20183e0a2264e0aed972ceff913374ab970248;hpb=d8ee362a5a46595b8214b023546dce0bfed46310 diff --git a/src/client/sock.c b/src/client/sock.c index 805dc1d..8602532 100644 --- a/src/client/sock.c +++ b/src/client/sock.c @@ -166,7 +166,7 @@ sdb_client_connect(sdb_client_t *client, const char *username) if (! username) username = ""; - status = sdb_client_send(client, CONNECTION_STARTUP, + status = sdb_client_send(client, SDB_CONNECTION_STARTUP, (uint32_t)strlen(username), username); if (status < 0) { char errbuf[1024]; @@ -179,7 +179,7 @@ sdb_client_connect(sdb_client_t *client, const char *username) buf = sdb_strbuf_create(64); rstatus = 0; status = sdb_client_recv(client, &rstatus, buf); - if ((status > 0) && (rstatus == CONNECTION_OK)) { + if ((status > 0) && (rstatus == SDB_CONNECTION_OK)) { sdb_strbuf_destroy(buf); return 0; } @@ -193,10 +193,15 @@ sdb_client_connect(sdb_client_t *client, const char *username) sdb_log(SDB_LOG_ERR, "Encountered end-of-file while waiting " "for server response"); - if (rstatus != CONNECTION_OK) { + if (rstatus == SDB_CONNECTION_ERROR) { sdb_log(SDB_LOG_ERR, "Access denied for user '%s'", username); status = -((int)rstatus); } + else if (rstatus != SDB_CONNECTION_OK) { + sdb_log(SDB_LOG_ERR, "Received unsupported authentication request " + "(status %d) during startup", (int)rstatus); + status = -((int)rstatus); + } sdb_client_close(client); sdb_strbuf_destroy(buf); @@ -211,6 +216,22 @@ sdb_client_sockfd(sdb_client_t *client) return client->fd; } /* sdb_client_sockfd */ +int +sdb_client_shutdown(sdb_client_t *client, int how) +{ + if (! client) { + errno = ENOTSOCK; + return -1; + } + + if (client->fd < 0) { + errno = EBADF; + return -1; + } + + return shutdown(client->fd, how); +} /* sdb_client_shutdown */ + void sdb_client_close(sdb_client_t *client) {