summaryrefslogtreecommitdiffstats
path: root/web/server/h2o/libh2o/deps/libyrmcds/close.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--web/server/h2o/libh2o/deps/libyrmcds/close.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/web/server/h2o/libh2o/deps/libyrmcds/close.c b/web/server/h2o/libh2o/deps/libyrmcds/close.c
new file mode 100644
index 00000000..d19ae765
--- /dev/null
+++ b/web/server/h2o/libh2o/deps/libyrmcds/close.c
@@ -0,0 +1,24 @@
+// (C) 2013 Cybozu.
+
+#include "yrmcds.h"
+
+#include <stdlib.h>
+#include <unistd.h>
+
+yrmcds_error yrmcds_close(yrmcds* c) {
+ if( c == NULL )
+ return YRMCDS_BAD_ARGUMENT;
+ if( c->sock == -1 )
+ return YRMCDS_OK;
+
+ close(c->sock);
+ c->sock = -1;
+#ifndef LIBYRMCDS_NO_INTERNAL_LOCK
+ pthread_mutex_destroy(&(c->lock));
+#endif
+ free(c->recvbuf);
+ c->recvbuf = NULL;
+ free(c->decompressed);
+ c->decompressed = NULL;
+ return YRMCDS_OK;
+}