- URL:
https://github.com/kamailio/kamailio/commit/9ce119126c6d618b83fe2a2ba6caeea…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: rename command "deny" to "reject"
Since the command effectively "rejects" an invitation, the word
"reject" is a better match. Keep "deny" as an alias to the command
for
backward compatibility.
- URL:
https://github.com/kamailio/kamailio/commit/196c2e360d29189e318f6a16c6d7945…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: minor language fixes
- URL:
https://github.com/kamailio/kamailio/commit/cc4778b4ec537cabdd7cceb0d2cfde0…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: rename "exit" to "leave", keep backward compatiblity
The command name "leave" better describes what the command does and is
less confusing for users (coincidentally, source code comments and
debugging messages also use leave, not exit).
The command name "exit" is kept as an alias for backward
compatibility.
- URL:
https://github.com/kamailio/kamailio/commit/3261a0aefbcd9c9d7e412b699ef3431…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: remove code duplication.
A significant portion of the functions handling invite and remove was
duplicated code. Refactor the code into a common function.
- URL:
https://github.com/kamailio/kamailio/commit/3318a7f95fb4c5b38d1da0afd60db03…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: collect chat room related strings in one place.
Rather than embedding strings directly in the functions that use them,
it is better to have them collected at one place so that they can be
easily modified. Later, we may turn the strings into module parameters
so that they can be customized at startup time, e.g., to translate them.
- URL:
https://github.com/kamailio/kamailio/commit/95335ae341085f6eeecde53362bc0db…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: use STR_FMT in formatted string arguments.
This makes the code somewhat shorter and safer.
- URL:
https://github.com/kamailio/kamailio/commit/b66870a0ff94399d9af284062a16ceb…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: use correct command prefix in the invite message.
When showing the INVITATION to the user, make sure to show the actual
command prefix that has been configured via the module parameter.
- URL:
https://github.com/kamailio/kamailio/commit/4e2a3682569ebdfb33f09a3251382b2…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: make behavior of "#join" when room does not exist configurable
Before, the command "#join" would automatically create the room and
add the user to the room if it does not exist. That behavior can be
confusing, especially on mobile where it is easy to miss-type room
name. With the default behavior, the user would be added to the wrong
room in that case.
This patch introduces module parameter "create_on_join" which makes
this behavior configurable. If set to 0, command join will not create
the room if it does not exist and would send an error back to the user
instead.
- URL:
https://github.com/kamailio/kamailio/commit/ab87f61a5889ad90229b0d3ec9dcae0…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: define message prefix with a macro
This simple change makes it much easier to consistently change the
prefix across all messages sent to the user. By default, the prefix is
"*** ".
- URL:
https://github.com/kamailio/kamailio/commit/56c012664e9aadcb5f61f1093710d73…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: make behavior of "#create" configurable when room already exists
The default behavior of the create command is to silently add the user
to a group of one already exists. This can be confusing in some
scenarios, e.g., when the user miss-types the room number. This patch
adds a module parameter called "check_on_create" which makes it
possible to customize this behavior. If set and the user attempts to
create a room that already exists, the command will report an error.
- URL:
https://github.com/kamailio/kamailio/commit/dbdf69264d65a72490bea33b68b2d04…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: pass both parsed and unparsed URIs to all command handlers
In order for the command handler to be able to send a response back
when the corresponding room does not exist, e.g., when sending an
error message, the handler must have access to the original unparsed
URI.
This change fixes one bug on the side: when sending a response, the
response will be sent to the correct part number which was part of the
original SIP URI. Previously, port numbers were ignored since the SIP
URI to send the message to was constructed just from the username and
domain parts.
- URL:
https://github.com/kamailio/kamailio/commit/b39822eff0c0857f9b5a5220504ad6d…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: consistent handling of command parameters.
Most (all) commands takes parametes in one of the following forms:
username, username@domain, sip:username@domain. The purpose of this
change is to provide consistent handling of such parameters across all
commands and their arguments.
If a command takes a user or a room as a parameter, the user can
provide just a username, username@domain, or a full URI
sip:username@domain. The imc module will automatically obtain missing
parts from other parts of the message, e.g., the Request-URI or From
headers.
In addition, all debugging and logging messages print the full URI of
users and rooms. This significantly helps with debugging and
development.
- URL:
https://github.com/kamailio/kamailio/commit/b00433b7710b7c4f879341258edad78…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: make #create command arguments optional
With no arguments, the room name is taken from To header and the room
will be made public.
With one argument, if the value is 'private', a private room with name
from To is created. If the value of the single argument is anything
else, it is taken as room name and the room will be made public.
With two argument, the first argument is room name and the second
argument must be string 'private'.
This change makes the #create command consistent with all other
commands where the room/user name is also optional.
- URL:
https://github.com/kamailio/kamailio/commit/39457968f10be50b5ccf3f81c71dd68…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: rename command #list to #members.
List was not very good name for the command, because the user would
not know whether the command lists rooms or members within a room.
The alias "list" is kept for backward compatibility.
- URL:
https://github.com/kamailio/kamailio/commit/e10974fd6d0ace3654e6b45eb6b5a9e…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: cleanup in invite related messages.
In the original version, when the user receives an invitation to join
the room, it was not obvious who is inviting.
- URL:
https://github.com/kamailio/kamailio/commit/d7e3d921a41de6ebc40ed13a788b9a0…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: consistent formatting of room/user names.
No matter in which message a room URI or user URI is printed, always
use the same function to consistent format the resulting string. In
most cases, this means printing just the username portion of the full
URI.
- URL:
https://github.com/kamailio/kamailio/commit/3de5f6da6a07c2d1afec7ddd3fdd6d1…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: improved #join command handling
This patch improves the overall handling of the #join command on the
chat server. If a user attempts to join a room they are already a
member of, notify the user, instead of sending a broadcast that the
user has joined again to the entire room.
If a user attempts to join a private room, notify them that private
rooms are by invitation only with a unicast message and send a
broadcast to the entire room about the join attempt so that
administrators can see the join attempt in order to decide whether or
not to send an invitation to the user.
- URL:
https://github.com/kamailio/kamailio/commit/afe2a81a8e9ded484b4b161e3cd629e…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: notify user #leaving a room.
When a user chooses to leave a room, send the broadcast first. That
way, the broadcast will include the leaving user and they will be able
to see that they have left the room successfully. Also, this behavior
is consistent with the behavior of #join.
- URL:
https://github.com/kamailio/kamailio/commit/7ad7bb300e4ef2feb9691d7e6e0b2be…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: make message buffer larger
Enlarge the buffer so that longer messages and user lists can be sent.
A larger buffer is fine when TCP and or TLS is used.
- URL:
https://github.com/kamailio/kamailio/commit/ce45d49d837d5ba0f02ebba48899ef5…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: a small fix in #join
When a user has left or been removed from a room and try to join
again, make sure to test the IMC_MEMBER_DELETED flag, otherwise they'd
be getting a message that they are already in the room.
- URL:
https://github.com/kamailio/kamailio/commit/d6760d680bed15d0f90c402ffca9b98…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: check arguments in #invite
The command has one required argument: the name/URI of the user to be
invited to the room.
- URL:
https://github.com/kamailio/kamailio/commit/ec243a6a205b647a83e3a3535fca362…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: implement command #add
The command can be used by room owners and administrators to
explicitly add other users as members to the room. It works a bit like
the command #invite, except that the added user will have no chance to
accept or reject the request.
- URL:
https://github.com/kamailio/kamailio/commit/e742fe4dc56e8ba37b4058996e037c8…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: implement command #rooms
The command can be used to list all the rooms available on the chat
server.
- URL:
https://github.com/kamailio/kamailio/commit/1073c6d0a133df342983829e430415a…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: add In-Reply-To header to MESSAGEs generated in response
When generating a MESSAGE in response to a command, add a In-Reply-To
header field to the second message with the Call-ID of the (original)
message that carried the command. A chat client could then use the
In-Reply-To header field to correlate requests and responses carried
in-band in chat messages.
- URL:
https://github.com/kamailio/kamailio/commit/42a66e4f075c244e41e8b828f394e94…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: add Supported header to all chat room MESSAGEs.
The header contains value "kamailio/imc" which indicates that the
end-point is a chat room that supports the in-band signaling protocol
implemented by Kamailio's imc module.
- URL:
https://github.com/kamailio/kamailio/commit/ba4de81405c7e1801ea7cafb5bbf5c8…
Author: Jan Janak <janakj(a)cs.columbia.edu>
Date: 2019-02-26T17:24:33+01:00
imc: report error if room owner sends #leave
Previously, if the room owner send the #leave command, the room would
have been automatically destroyed. That is somewhat dangerous and
error prone, e.g., if the user sends the #leave command to the wrong
room. With this patch, #leave reports an error if used by a room
owner and the user is encouraged to use #destroy instead.