version 1.1.2.6, 2010/06/28 17:10:39
|
version 1.1.2.8, 2010/07/07 12:29:50
|
Line 13 rpc_srv_blobCreate(rpc_srv_t * __restrict srv, int len
|
Line 13 rpc_srv_blobCreate(rpc_srv_t * __restrict srv, int len
|
rpc_blob_t *blob = NULL; |
rpc_blob_t *blob = NULL; |
char szFName[MAXPATHLEN]; |
char szFName[MAXPATHLEN]; |
int f; |
int f; |
|
u_int rnd; |
|
|
|
srandomdev(); |
|
srandom(getpid() ^ time(NULL)); |
|
again: |
|
rnd = random() % UINT_MAX; |
|
|
memset(szFName, 0, MAXPATHLEN); |
memset(szFName, 0, MAXPATHLEN); |
snprintf(szFName, MAXPATHLEN, "%s/BLOB-XXXXXXXX", srv->srv_blob.dir); | snprintf(szFName, MAXPATHLEN, BLOB_FILE, srv->srv_blob.dir, rnd); |
f = mkstemp(szFName); | f = open(szFName, O_CREAT | O_EXCL | O_RDWR, 0600); |
if (f == -1) { |
if (f == -1) { |
|
if (errno == EEXIST) |
|
goto again; |
|
|
LOGERR; |
LOGERR; |
return NULL; |
return NULL; |
} |
} |
Line 48 rpc_srv_blobCreate(rpc_srv_t * __restrict srv, int len
|
Line 57 rpc_srv_blobCreate(rpc_srv_t * __restrict srv, int len
|
close(f); |
close(f); |
|
|
blob->blob_len = len; |
blob->blob_len = len; |
blob->blob_var = strtol(strrchr(szFName, '-') + 1, NULL, 16); | blob->blob_var = rnd; |
return blob; |
return blob; |
} |
} |
|
|
Line 72 rpc_srv_blobMap(rpc_srv_t * __restrict srv, rpc_blob_t
|
Line 81 rpc_srv_blobMap(rpc_srv_t * __restrict srv, rpc_blob_t
|
|
|
memset(szFName, 0, MAXPATHLEN); |
memset(szFName, 0, MAXPATHLEN); |
snprintf(szFName, MAXPATHLEN, BLOB_FILE, srv->srv_blob.dir, blob->blob_var); |
snprintf(szFName, MAXPATHLEN, BLOB_FILE, srv->srv_blob.dir, blob->blob_var); |
f = open(szFName, O_RDONLY); | f = open(szFName, O_RDWR); |
if (f == -1) { |
if (f == -1) { |
LOGERR; |
LOGERR; |
return -1; |
return -1; |
Line 83 rpc_srv_blobMap(rpc_srv_t * __restrict srv, rpc_blob_t
|
Line 92 rpc_srv_blobMap(rpc_srv_t * __restrict srv, rpc_blob_t
|
return -1; |
return -1; |
} |
} |
|
|
blob->blob_data = mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, f, 0); | blob->blob_data = mmap(NULL, sb.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, f, 0); |
if (blob->blob_data == MAP_FAILED) { |
if (blob->blob_data == MAP_FAILED) { |
LOGERR; |
LOGERR; |
close(f); |
close(f); |
Line 137 rpc_srv_blobFree(rpc_srv_t * __restrict srv, rpc_blob_
|
Line 146 rpc_srv_blobFree(rpc_srv_t * __restrict srv, rpc_blob_
|
|
|
memset(szFName, 0, MAXPATHLEN); |
memset(szFName, 0, MAXPATHLEN); |
snprintf(szFName, MAXPATHLEN, BLOB_FILE, srv->srv_blob.dir, blob->blob_var); |
snprintf(szFName, MAXPATHLEN, BLOB_FILE, srv->srv_blob.dir, blob->blob_var); |
|
printf("remove %s\n", szFName); |
if (remove(szFName) == -1) { |
if (remove(szFName) == -1) { |
LOGERR; |
LOGERR; |
return -1; |
return -1; |
Line 262 rpc_cli_sendBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
Line 272 rpc_cli_sendBLOB(rpc_cli_t * __restrict cli, rpc_val_t
|
if (read(cli->cli_sock, &hdr, sizeof hdr) == -1) { |
if (read(cli->cli_sock, &hdr, sizeof hdr) == -1) { |
LOGERR; |
LOGERR; |
return -1; |
return -1; |
|
} |
|
if (hdr.hdr_cmd != error) { |
|
if (hdr.hdr_len != var->val_len) { |
|
rpc_SetErr(EBADMSG, "Error:: Bad return length packet ...\n"); |
|
return -1; |
|
} |
|
|
|
var->val.blob = (void*) hdr.hdr_var; |
} |
} |
|
|
return hdr.hdr_cmd == error; |
return hdr.hdr_cmd == error; |