Merge branch 'master' of github.com:janvidar/uhub

This commit is contained in:
Jan Vidar Krey 2019-03-15 11:31:29 +01:00
commit 46906a9a9c
26 changed files with 69 additions and 54 deletions

2
.gitignore vendored
View File

@ -21,5 +21,3 @@ debian/uhub.postrm.debhelper
debian/uhub.prerm.debhelper debian/uhub.prerm.debhelper
debian/uhub.substvars debian/uhub.substvars
uhub-passwd uhub-passwd
src/version.h
src/system.h

2
.gitmodules vendored
View File

@ -1,3 +1,3 @@
[submodule "thirdparty/sqlite"] [submodule "thirdparty/sqlite"]
path = thirdparty/sqlite path = thirdparty/sqlite
url = git://github.com/janvidar/sqlite.git url = https://github.com/janvidar/sqlite.git

View File

@ -77,6 +77,7 @@ check_symbol_exists(memmem string.h HAVE_MEMMEM)
check_symbol_exists(strndup string.h HAVE_STRNDUP) check_symbol_exists(strndup string.h HAVE_STRNDUP)
include_directories("${PROJECT_SOURCE_DIR}") include_directories("${PROJECT_SOURCE_DIR}")
include_directories("${PROJECT_BINARY_DIR}")
include_directories(${SQLITE3_INCLUDE_DIRS}) include_directories(${SQLITE3_INCLUDE_DIRS})
link_directories(${SQLITE3_LIBRARY_DIRS}) link_directories(${SQLITE3_LIBRARY_DIRS})
@ -121,13 +122,6 @@ add_library(mod_topic MODULE ${PROJECT_SOURCE_DIR}/plugins/mod_topic.c)
add_library(mod_no_guest_downloads MODULE ${PROJECT_SOURCE_DIR}/plugins/mod_no_guest_downloads.c) add_library(mod_no_guest_downloads MODULE ${PROJECT_SOURCE_DIR}/plugins/mod_no_guest_downloads.c)
add_library(mod_auth_sqlite MODULE ${PROJECT_SOURCE_DIR}/plugins/mod_auth_sqlite.c) add_library(mod_auth_sqlite MODULE ${PROJECT_SOURCE_DIR}/plugins/mod_auth_sqlite.c)
if(WIN32)
target_link_libraries(uhub ws2_32)
target_link_libraries(autotest-bin ws2_32)
target_link_libraries(mod_logging ws2_32)
target_link_libraries(mod_welcome ws2_32)
endif()
set_target_properties( set_target_properties(
mod_example mod_example
mod_welcome mod_welcome
@ -145,19 +139,23 @@ target_link_libraries(uhub ${CMAKE_DL_LIBS} adc network utils)
target_link_libraries(uhub-passwd ${SQLITE3_LIBRARIES} utils) target_link_libraries(uhub-passwd ${SQLITE3_LIBRARIES} utils)
target_link_libraries(autotest-bin ${CMAKE_DL_LIBS} adc network utils) target_link_libraries(autotest-bin ${CMAKE_DL_LIBS} adc network utils)
target_link_libraries(mod_example utils) target_link_libraries(mod_example utils)
target_link_libraries(mod_welcome utils) target_link_libraries(mod_welcome network utils)
target_link_libraries(mod_auth_simple utils) target_link_libraries(mod_auth_simple utils)
target_link_libraries(mod_auth_sqlite ${SQLITE3_LIBRARIES} utils) target_link_libraries(mod_auth_sqlite ${SQLITE3_LIBRARIES} utils)
target_link_libraries(mod_chat_history utils) target_link_libraries(mod_chat_history utils)
target_link_libraries(mod_chat_history_sqlite ${SQLITE3_LIBRARIES} utils) target_link_libraries(mod_chat_history_sqlite ${SQLITE3_LIBRARIES} utils)
target_link_libraries(mod_no_guest_downloads utils) target_link_libraries(mod_no_guest_downloads utils)
target_link_libraries(mod_chat_only utils) target_link_libraries(mod_chat_only utils)
target_link_libraries(mod_logging utils) target_link_libraries(mod_logging network utils)
target_link_libraries(mod_topic utils) target_link_libraries(mod_topic utils)
target_link_libraries(utils network) target_link_libraries(utils network)
target_link_libraries(mod_welcome network)
target_link_libraries(mod_logging network)
if(WIN32)
target_link_libraries(uhub ws2_32)
target_link_libraries(autotest-bin ws2_32)
target_link_libraries(mod_logging ws2_32)
target_link_libraries(mod_welcome ws2_32)
endif()
if(UNIX) if(UNIX)
add_library(adcclient STATIC ${adcclient_SOURCES}) add_library(adcclient STATIC ${adcclient_SOURCES})
@ -223,8 +221,8 @@ if (SYSTEMD_SUPPORT)
add_definitions(-DSYSTEMD) add_definitions(-DSYSTEMD)
endif() endif()
configure_file ("${PROJECT_SOURCE_DIR}/version.h.in" "${PROJECT_SOURCE_DIR}/version.h") configure_file ("${PROJECT_SOURCE_DIR}/version.h.in" "${PROJECT_BINARY_DIR}/version.h")
configure_file ("${PROJECT_SOURCE_DIR}/system.h.in" "${PROJECT_SOURCE_DIR}/system.h") configure_file ("${PROJECT_SOURCE_DIR}/system.h.in" "${PROJECT_BINARY_DIR}/system.h")
# mark_as_advanced(FORCE CMAKE_BUILD_TYPE) # mark_as_advanced(FORCE CMAKE_BUILD_TYPE)
# if (RELEASE) # if (RELEASE)

View File

@ -47,8 +47,8 @@
- marked plugin callbacks that are not called yet - marked plugin callbacks that are not called yet
- add on_change_nick() to struct plugin_funcs - add on_change_nick() to struct plugin_funcs
- minimal changes - minimal changes
- Updated init script in debian package. - Updated init script in Debian package.
- Updated list of man pages in debian package. - Updated list of man pages in Debian package.
- Added man page for uhub-passwd. - Added man page for uhub-passwd.
- Merge branch 'master' of https://github.com/Tilka/uhub - Merge branch 'master' of https://github.com/Tilka/uhub
- Fix issue with QUI messages being allowed through the hub - Fix issue with QUI messages being allowed through the hub
@ -78,7 +78,7 @@
- minimal documentation fixes - minimal documentation fixes
- update client software link - update client software link
- update compile howto link - update compile howto link
- fix debian changelog - fix Debian changelog
- Fix bug #158 - Added plugin for setting topic (hub description). - Fix bug #158 - Added plugin for setting topic (hub description).
- Command arguments handling + cleanups - Command arguments handling + cleanups

19
Dockerfile Normal file
View File

@ -0,0 +1,19 @@
FROM alpine:latest as builder
RUN apk update && apk upgrade && apk add --no-cache bash util-linux cmake make gcc git sqlite-dev openssl-dev git build-base
WORKDIR /app
COPY . .
RUN cmake . && make
RUN sed -i 's/\/usr\/lib\/uhub\//\/libs\//g' ./doc/*.conf && \
sed -i 's/\/usr\/lib\/uhub\//\/libs\//g' ./doc/rules.txt && \
sed -i 's/\/etc\/uhub\//\/conf\//g' ./doc/*.conf && \
sed -i 's/\/etc\/uhub\//\/conf\//g' ./doc/rules.txt && \
echo 'Welcome to uHub' > ./doc/motd.txt
FROM alpine:latest
RUN apk update && apk upgrade && apk add --no-cache bash util-linux openssl-dev sqlite-dev
WORKDIR /app
COPY --from=builder /app/uhub .
COPY --from=builder /app/doc/plugins.conf /app/doc/uhub.conf /app/doc/users.conf /app/doc/rules.txt /app/doc/motd.txt /conf/
COPY --from=builder /app/*.so /libs/
ENTRYPOINT ["./uhub"]
CMD ["-c","/conf/uhub.conf"]

View File

@ -3,7 +3,7 @@
# #
# SQLITE3_FOUND True if sqlite3 got found # SQLITE3_FOUND True if sqlite3 got found
# SQLITE3_INCLUDEDIR Location of sqlite3 headers # SQLITE3_INCLUDEDIR Location of sqlite3 headers
# SQLITE3_LIBRARIES List of libaries to use sqlite3 # SQLITE3_LIBRARIES List of libraries to use sqlite3
# SQLITE3_DEFINITIONS Definitions to compile sqlite3 # SQLITE3_DEFINITIONS Definitions to compile sqlite3
# #
# Copyright (c) 2007 Juha Tuomala <tuju@iki.fi> # Copyright (c) 2007 Juha Tuomala <tuju@iki.fi>

View File

@ -67,7 +67,7 @@ Accepting new users
| | | | | |
| V | | V |
| --------------------- --------------------- | --------------------- ---------------------
| | Send password | ------> | Reveive and check | | | Send password | ------> | Receive and check |
| | request, if needed| | password. | | | request, if needed| | password. |
| --------------------- --------------------- | --------------------- ---------------------
| | | |

View File

@ -31,7 +31,7 @@ The hub should send a packet containing the token back:
'IECH {token} {host:port}', as well as the same message via TCP. 'IECH {token} {host:port}', as well as the same message via TCP.
If the client receives the message via UDP, it should now be able to determine the type of NAT. If the client receives the message via UDP, it should now be able to determine the type of NAT.
If the client receives the message via TCP only it knows it has a firewall blocking incomming communication. If the client receives the message via TCP only it knows it has a firewall blocking incoming communication.
If the client does not receive the message, it should assume a firewall is blocking all UDP communication, If the client does not receive the message, it should assume a firewall is blocking all UDP communication,
and resume in passive mode. and resume in passive mode.

View File

@ -49,7 +49,7 @@ Example:
If you are planning to more than 1024 users on hub, you must increase the max number of file descriptors allowed. If you are planning to more than 1024 users on hub, you must increase the max number of file descriptors allowed.
This limit needs to be higher than the configured max_users in uhub.conf. This limit needs to be higher than the configured max_users in uhub.conf.
In linux can add the following lines to /etc/security/limits.conf (allows for ~4000 users) In Linux can add the following lines to /etc/security/limits.conf (allows for ~4000 users)
* soft nofile 4096 * soft nofile 4096
* hard nofile 4096 * hard nofile 4096

View File

@ -2,7 +2,7 @@
# You should normally place this file in /etc/uhub/uhub.conf # You should normally place this file in /etc/uhub/uhub.conf
# and customize some of the settings below. # and customize some of the settings below.
# #
# This file is read only to the uhub deamon, and if you # This file is read only to the uhub daemon, and if you
# make changes to it while uhub is running you can send a # make changes to it while uhub is running you can send a
# HUP signal to it ( $ killall -HUP uhub ), to reparse configuration (only on UNIX). # HUP signal to it ( $ killall -HUP uhub ), to reparse configuration (only on UNIX).
# All configuration directives: http://www.uhub.org/config.php # All configuration directives: http://www.uhub.org/config.php

View File

@ -80,7 +80,7 @@ rm -rf $RPM_BUILD_ROOT
if [ $1 -gt 1 ] ; then if [ $1 -gt 1 ] ; then
/etc/rc.d/init.d/uhub restart >/dev/null || : /etc/rc.d/init.d/uhub restart >/dev/null || :
fi fi
# need more informations about add services and users in system # need more information about add services and users in system
/usr/sbin/adduser -M -d /tmp -G nobody -s /sbin/nologin -c 'The Uhub ADC p2p hub Daemon' uhub >/dev/null 2>&1 ||: /usr/sbin/adduser -M -d /tmp -G nobody -s /sbin/nologin -c 'The Uhub ADC p2p hub Daemon' uhub >/dev/null 2>&1 ||:
# write SSL create # write SSL create
echo "PLS see /usr/share/doc/uhub/" echo "PLS see /usr/share/doc/uhub/"

View File

@ -8,7 +8,7 @@ start on filesystem or runlevel [2345]
stop on runlevel [!2345] stop on runlevel [!2345]
# Allow the service to respawn, but if its happening too often # Allow the service to respawn, but if its happening too often
# (10 times in 5 seconds) theres a problem and we should stop trying. # (10 times in 5 seconds) there's a problem and we should stop trying.
respawn respawn
respawn limit 10 5 respawn limit 10 5

View File

@ -118,8 +118,8 @@ typedef uint32_t fourcc_t;
#define ADC_INF_FLAG_SUPPORT "SU" /* support (extensions, feature cast) */ #define ADC_INF_FLAG_SUPPORT "SU" /* support (extensions, feature cast) */
#define ADC_INF_FLAG_SHARED_SIZE "SS" /* size of total files shared in bytes */ #define ADC_INF_FLAG_SHARED_SIZE "SS" /* size of total files shared in bytes */
#define ADC_INF_FLAG_SHARED_FILES "SF" /* number of files shared */ #define ADC_INF_FLAG_SHARED_FILES "SF" /* number of files shared */
#define ADC_INF_FLAG_UPLOAD_SPEED "US" /* maximum upload speed acheived in bytes/sec */ #define ADC_INF_FLAG_UPLOAD_SPEED "US" /* maximum upload speed achieved in bytes/sec */
#define ADC_INF_FLAG_DOWNLOAD_SPEED "DS" /* maximum download speed acheived in bytes/sec */ #define ADC_INF_FLAG_DOWNLOAD_SPEED "DS" /* maximum download speed achieved in bytes/sec */
#define ADC_INF_FLAG_UPLOAD_SLOTS "SL" /* maximum upload slots (concurrent uploads) */ #define ADC_INF_FLAG_UPLOAD_SLOTS "SL" /* maximum upload slots (concurrent uploads) */
#define ADC_INF_FLAG_AUTO_SLOTS "AS" /* automatic slot if upload speed is less than this in bytes/sec */ #define ADC_INF_FLAG_AUTO_SLOTS "AS" /* automatic slot if upload speed is less than this in bytes/sec */
#define ADC_INF_FLAG_AUTO_SLOTS_MAX "AM" /* maximum number of automatic slots */ #define ADC_INF_FLAG_AUTO_SLOTS_MAX "AM" /* maximum number of automatic slots */
@ -134,7 +134,7 @@ typedef uint32_t fourcc_t;
#define ADC_MSG_FLAG_PRIVATE "PM" /* message is a private message */ #define ADC_MSG_FLAG_PRIVATE "PM" /* message is a private message */
#define ADC_SCH_FLAG_INCLUDE "AN" /* include given search term */ #define ADC_SCH_FLAG_INCLUDE "AN" /* include given search term */
#define ADC_SCH_FLAG_EXCLUDE "NO" /* exclude given serach term */ #define ADC_SCH_FLAG_EXCLUDE "NO" /* exclude given search term */
#define ADC_SCH_FLAG_FILE_EXTENSION "EX" /* search only for files with the given file extension */ #define ADC_SCH_FLAG_FILE_EXTENSION "EX" /* search only for files with the given file extension */
#define ADC_SCH_FLAG_FILE_TYPE "TY" /* search only for files with this file type (separate type) */ #define ADC_SCH_FLAG_FILE_TYPE "TY" /* search only for files with this file type (separate type) */
#define ADC_SCH_FLAG_LESS_THAN "LE" /* search for files with this size or less */ #define ADC_SCH_FLAG_LESS_THAN "LE" /* search for files with this size or less */

View File

@ -51,7 +51,7 @@ enum msg_status_level
extern struct adc_message* adc_msg_incref(struct adc_message* msg); extern struct adc_message* adc_msg_incref(struct adc_message* msg);
/** /**
* Decrease the reference counter, and free the memory when apropriate. * Decrease the reference counter, and free the memory when appropriate.
*/ */
extern void adc_msg_free(struct adc_message* msg); extern void adc_msg_free(struct adc_message* msg);
@ -159,7 +159,7 @@ extern char* adc_msg_get_argument(struct adc_message* cmd, int offset);
* *
* @arg prefix a 2 character argument prefix * @arg prefix a 2 character argument prefix
* @arg string must be escaped (see adc_msg_escape). * @arg string must be escaped (see adc_msg_escape).
* @return 0 if successful, or -1 if an error occured. * @return 0 if successful, or -1 if an error occurred.
*/ */
extern int adc_msg_replace_named_argument(struct adc_message* cmd, const char prefix[2], const char* string); extern int adc_msg_replace_named_argument(struct adc_message* cmd, const char prefix[2], const char* string);
@ -167,7 +167,7 @@ extern int adc_msg_replace_named_argument(struct adc_message* cmd, const char pr
* Append an argument * Append an argument
* *
* @arg string must be escaped (see adc_msg_escape). * @arg string must be escaped (see adc_msg_escape).
* @return 0 if successful, or -1 if an error occured (out of memory). * @return 0 if successful, or -1 if an error occurred (out of memory).
*/ */
extern int adc_msg_add_argument(struct adc_message* cmd, const char* string); extern int adc_msg_add_argument(struct adc_message* cmd, const char* string);
@ -176,7 +176,7 @@ extern int adc_msg_add_argument(struct adc_message* cmd, const char* string);
* *
* @arg prefix a 2 character argument prefix * @arg prefix a 2 character argument prefix
* @arg string must be escaped (see adc_msg_escape). * @arg string must be escaped (see adc_msg_escape).
* @return 0 if successful, or -1 if an error occured (out of memory). * @return 0 if successful, or -1 if an error occurred (out of memory).
*/ */
extern int adc_msg_add_named_argument(struct adc_message* cmd, const char prefix[2], const char* string); extern int adc_msg_add_named_argument(struct adc_message* cmd, const char prefix[2], const char* string);
@ -186,7 +186,7 @@ extern int adc_msg_add_named_argument(struct adc_message* cmd, const char prefix
* *
* @arg prefix a 2 character argument prefix * @arg prefix a 2 character argument prefix
* @arg string must NOT be escaped * @arg string must NOT be escaped
* @return 0 if successful, or -1 if an error occured (out of memory). * @return 0 if successful, or -1 if an error occurred (out of memory).
*/ */
extern int adc_msg_add_named_argument_string(struct adc_message* cmd, const char prefix[2], const char* string); extern int adc_msg_add_named_argument_string(struct adc_message* cmd, const char prefix[2], const char* string);

View File

@ -30,7 +30,7 @@ struct command_base;
* *
* @param cbase Command base pointer. * @param cbase Command base pointer.
* @param user User who invoked the command. * @param user User who invoked the command.
* @param message The message that is to be interpreted as a command (including the invokation prefix '!' or '+') * @param message The message that is to be interpreted as a command (including the invocation prefix '!' or '+')
* *
* @return a hub_command that must be freed with command_free(). @See struct hub_command. * @return a hub_command that must be freed with command_free(). @See struct hub_command.
*/ */

View File

@ -170,7 +170,7 @@
<check min="1024" max="1048576" /> <check min="1024" max="1048576" />
<short>Max read buffer before parse, per user</short> <short>Max read buffer before parse, per user</short>
<description><![CDATA[ <description><![CDATA[
Maximum receive buffer allowed before commands are procesed. If a single ADC message exceeds this limit, it will be discarded by the hub. Use with caution. Maximum receive buffer allowed before commands are processed. If a single ADC message exceeds this limit, it will be discarded by the hub. Use with caution.
]]></description> ]]></description>
<since>0.1.3</since> <since>0.1.3</since>
</option> </option>
@ -567,7 +567,7 @@
</option> </option>
<option name="msg_inf_error_nick_taken" type="message" default="Nickname is already in use"> <option name="msg_inf_error_nick_taken" type="message" default="Nickname is already in use">
<description><![CDATA[This message will be sent to clients if their provided nickname is alredy in use on the hub.]]></description> <description><![CDATA[This message will be sent to clients if their provided nickname is already in use on the hub.]]></description>
<since>0.2.0</since> <since>0.2.0</since>
</option> </option>

View File

@ -88,7 +88,7 @@ static int check_hash_tiger(const char* cid, const char* pid)
/* /*
* FIXME: Only works for tiger hash. If a client doesnt support tiger we cannot let it in! * FIXME: Only works for tiger hash. If a client doesn't support tiger we cannot let it in!
*/ */
static int check_cid(struct hub_info* hub, struct hub_user* user, struct adc_message* cmd) static int check_cid(struct hub_info* hub, struct hub_user* user, struct adc_message* cmd)
{ {

View File

@ -151,7 +151,7 @@ int main_loop()
setup_signal_handlers(hub); setup_signal_handlers(hub);
#ifdef SYSTEMD #ifdef SYSTEMD
/* Notify the service manager that this daemon has /* Notify the service manager that this daemon has
* been successfully initalized and shall enter the * been successfully initialized and shall enter the
* main loop. * main loop.
*/ */
sd_notifyf(0, "READY=1\n" sd_notifyf(0, "READY=1\n"
@ -471,7 +471,7 @@ int main(int argc, char** argv)
} }
else if (ret == 0) else if (ret == 0)
{ {
/* child process - detatch from TTY */ /* child process - detach from TTY */
fclose(stdin); fclose(stdin);
fclose(stdout); fclose(stdout);
fclose(stderr); fclose(stderr);

View File

@ -68,7 +68,7 @@ enum user_quit_reason
quit_timeout = 4, /** User timed out (no data for a while) */ quit_timeout = 4, /** User timed out (no data for a while) */
quit_send_queue = 5, /** User's send queue was overflowed */ quit_send_queue = 5, /** User's send queue was overflowed */
quit_memory_error = 6, /** Not enough memory available */ quit_memory_error = 6, /** Not enough memory available */
quit_socket_error = 7, /** A socket error occured */ quit_socket_error = 7, /** A socket error occurred */
quit_protocol_error = 8, /** Fatal protocol error */ quit_protocol_error = 8, /** Fatal protocol error */
quit_logon_error = 9, /** Unable to login (wrong password, CID/PID, etc) */ quit_logon_error = 9, /** Unable to login (wrong password, CID/PID, etc) */
quit_update_error = 10, /** Update error. INF update changed share/slot info and no longer satisfies the hub limits. */ quit_update_error = 10, /** Update error. INF update changed share/slot info and no longer satisfies the hub limits. */
@ -76,7 +76,7 @@ enum user_quit_reason
quit_ghost_timeout = 12, /** The user is a ghost, and trying to login from another connection */ quit_ghost_timeout = 12, /** The user is a ghost, and trying to login from another connection */
}; };
/** Returns an apropriate string for the given quit reason */ /** Returns an appropriate string for the given quit reason */
extern const char* user_get_quit_reason_string(enum user_quit_reason); extern const char* user_get_quit_reason_string(enum user_quit_reason);
struct hub_user_info struct hub_user_info

View File

@ -42,7 +42,7 @@ extern struct hub_user_manager* uman_init();
* Shuts down the user manager. * Shuts down the user manager.
* All users will be disconnected and deleted as part of this. * All users will be disconnected and deleted as part of this.
* *
* @return 0 on success, or -1 in an error occured (invalid pointer). * @return 0 on success, or -1 in an error occurred (invalid pointer).
*/ */
extern int uman_shutdown(struct hub_user_manager* users); extern int uman_shutdown(struct hub_user_manager* users);
@ -106,7 +106,7 @@ extern struct hub_user* uman_get_user_by_nick(struct hub_user_manager* users, co
* *
* @param[out] target the list of users matching the address * @param[out] target the list of users matching the address
* @param range the IP range of users to match * @param range the IP range of users to match
* @return The number of users matching the addressess, or -1 on error (mask is wrong). * @return The number of users matching the addresses, or -1 on error (mask is wrong).
*/ */
extern size_t uman_get_user_by_addr(struct hub_user_manager* users, struct linked_list* target, struct ip_range* range); extern size_t uman_get_user_by_addr(struct hub_user_manager* users, struct linked_list* target, struct ip_range* range);

View File

@ -88,7 +88,7 @@ extern void net_con_close(struct net_connection* con);
* *
* @return returns the number of bytes sent. * @return returns the number of bytes sent.
* 0 if no data is sent, and this function should be called again (EWOULDBLOCK/EINTR) * 0 if no data is sent, and this function should be called again (EWOULDBLOCK/EINTR)
* <0 if an error occured, the negative number contains the error code. * <0 if an error occurred, the negative number contains the error code.
*/ */
extern ssize_t net_con_send(struct net_connection* con, const void* buf, size_t len); extern ssize_t net_con_send(struct net_connection* con, const void* buf, size_t len);
@ -97,7 +97,7 @@ extern ssize_t net_con_send(struct net_connection* con, const void* buf, size_t
* *
* @return returns the number of bytes sent. * @return returns the number of bytes sent.
* 0 if no data is sent, and this function should be called again (EWOULDBLOCK/EINTR) * 0 if no data is sent, and this function should be called again (EWOULDBLOCK/EINTR)
* <0 if an error occured, the negative number contains the error code. * <0 if an error occurred, the negative number contains the error code.
*/ */
extern ssize_t net_con_recv(struct net_connection* con, void* buf, size_t len); extern ssize_t net_con_recv(struct net_connection* con, void* buf, size_t len);
@ -109,7 +109,7 @@ extern ssize_t net_con_recv(struct net_connection* con, void* buf, size_t len);
extern ssize_t net_con_peek(struct net_connection* con, void* buf, size_t len); extern ssize_t net_con_peek(struct net_connection* con, void* buf, size_t len);
/** /**
* Set timeout for connetion. * Set timeout for connection.
* *
* @param seconds the number of seconds into the future. * @param seconds the number of seconds into the future.
*/ */

View File

@ -92,7 +92,7 @@ extern int ip_is_valid_ipv6(const char* address);
* *
* @param text_addr is an ipaddress either ipv6 or ipv4. * @param text_addr is an ipaddress either ipv6 or ipv4.
* Special magic addresses called "any" and "loopback" exist, * Special magic addresses called "any" and "loopback" exist,
* and will work accross IPv6/IPv4. * and will work across IPv6/IPv4.
* @param port Fill the struct sockaddr* with the given port, can safely be ignored. * @param port Fill the struct sockaddr* with the given port, can safely be ignored.
*/ */
extern int ip_convert_address(const char* text_address, int port, struct sockaddr* addr, socklen_t* addr_len); extern int ip_convert_address(const char* text_address, int port, struct sockaddr* addr, socklen_t* addr_len);

View File

@ -53,7 +53,7 @@ extern int net_initialize();
extern int net_destroy(); extern int net_destroy();
/** /**
* @return the number of sockets currrently being monitored. * @return the number of sockets currently being monitored.
*/ */
extern int net_monitor_count(); extern int net_monitor_count();
@ -63,7 +63,7 @@ extern int net_monitor_count();
extern int net_monitor_capacity(); extern int net_monitor_capacity();
/** /**
* @return the last error code occured. * @return the last error code occurred.
* *
* NOTE: On Windows this is the last error code from the socket library, but * NOTE: On Windows this is the last error code from the socket library, but
* on UNIX this is the errno variable that can be overwritten by any * on UNIX this is the errno variable that can be overwritten by any

View File

@ -30,7 +30,7 @@ enum Warnings
struct user_info struct user_info
{ {
sid_t sid; // The SID of the user sid_t sid; // The SID of the user
int warnings; // The number of denies (used to track wether or not a warning should be sent). @see enum Warnings. int warnings; // The number of denies (used to track whether or not a warning should be sent). @see enum Warnings.
}; };
struct chat_only_data struct chat_only_data

View File

@ -86,7 +86,7 @@ void* memmem(const void *haystack, size_t haystacklen, const void *needle, size_
/** /**
* Split the string based on split, and place the different parts into list. * Split the string based on split, and place the different parts into list.
* @return the number of items in the list after split, or -1 if an error occured. * @return the number of items in the list after split, or -1 if an error occurred.
*/ */
struct linked_list; struct linked_list;
extern int split_string(const char* string, const char* split, struct linked_list* list, int allow_empty); extern int split_string(const char* string, const char* split, struct linked_list* list, int allow_empty);

View File

@ -356,7 +356,7 @@ static struct rb_node* rb_tree_traverse(struct rb_tree* tree, int dir)
if (p->link[!dir] == n) if (p->link[!dir] == n)
return rb_it_set(tree, p); return rb_it_set(tree, p);
// walk up in hte current direction // walk up in the current direction
while (p->link[dir] == n) while (p->link[dir] == n)
{ {
n = p; n = p;