projects
/
runtime.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added SilcLocalNetSecurity flags for Local Net Stream Listener.
[runtime.git]
/
lib
/
silcutil
/
silclocalnetstream.c
diff --git
a/lib/silcutil/silclocalnetstream.c
b/lib/silcutil/silclocalnetstream.c
index d93e909f1907a38d7721e004489da666560d436d..7ad1d764e13e5fb9c81fd7b9abe8bd44f7b2df87 100644
(file)
--- a/
lib/silcutil/silclocalnetstream.c
+++ b/
lib/silcutil/silclocalnetstream.c
@@
-60,6
+60,7
@@
static void silc_local_net_accept(SilcResult result, SilcStream stream,
/* Create listener */
SilcNetListener silc_local_net_create_listener(const char *filepath,
/* Create listener */
SilcNetListener silc_local_net_create_listener(const char *filepath,
+ SilcLocalNetSecurity security,
SilcSchedule schedule,
SilcNetCallback callback,
void *context)
SilcSchedule schedule,
SilcNetCallback callback,
void *context)
@@
-68,6
+69,7
@@
SilcNetListener silc_local_net_create_listener(const char *filepath,
SilcUInt16 *local_port;
const char *addr = "127.0.0.1";
char port[8];
SilcUInt16 *local_port;
const char *addr = "127.0.0.1";
char port[8];
+ int mode = 0;
SILC_LOG_DEBUG(("Creating local network stream listener %s", filepath));
SILC_LOG_DEBUG(("Creating local network stream listener %s", filepath));
@@
-111,9
+113,17
@@
SilcNetListener silc_local_net_create_listener(const char *filepath,
return NULL;
}
return NULL;
}
+ /* Set mode */
+ if (!security)
+ mode = 0644;
+ if (security & SILC_LOCAL_NET_USER)
+ mode = 0600;
+ if (security & SILC_LOCAL_NET_GROUP)
+ mode += 040;
+
/* Create the file */
silc_snprintf(port, sizeof(port), "%d", *local_port);
/* Create the file */
silc_snprintf(port, sizeof(port), "%d", *local_port);
- if (silc_file_writefile
(filepath, port, strlen(port) + 1
)) {
+ if (silc_file_writefile
_mode(filepath, port, strlen(port) + 1, mode
)) {
silc_free(local_port);
silc_net_close_listener(listener->listener);
silc_free(listener);
silc_free(local_port);
silc_net_close_listener(listener->listener);
silc_free(listener);
@@
-138,6
+148,7
@@
void silc_local_net_close_listener(SilcNetListener local_listener)
unlink(listener->filepath);
silc_net_close_listener(listener->listener);
unlink(listener->filepath);
silc_net_close_listener(listener->listener);
+ silc_free(listener->filepath);
silc_free(listener);
}
silc_free(listener);
}