aboutsummaryrefslogtreecommitdiffstats
path: root/main
AgeCommit message (Collapse)AuthorFilesLines
2008-10-25Move AMI initialization to occur after loading modules. This prevents arussell1-5/+9
deadlock when someone tries to initiate a module reload from the AMI just as Asterisk is starting. (closes issue #13778) Reported by: hotsblanc Fix suggested by hotsblanc git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@151905 f38db490-d61c-443f-a65b-d21fe96a405b
2008-10-19 As per kpfleming's comments to the prior commit, I'm reverting some of the ↵bweschke1-8/+1
changes here. A comment was made in bug #13726 "3. The same mistake as in (2) is done in a few other places in the code that check for: #if defined(HAVE_ZAPTEL) || defined(HAVE_DAHDI) Harmless, but still incorrect." In the case of main/asterisk.c, this is not incorrect because without HAVE_ZAPTEL defined, we're missing the include for ioctl and the namespace that defines DAHDI_TIMERCONFIG which is still required when using Zaptel with the 1.4 branch. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@151167 f38db490-d61c-443f-a65b-d21fe96a405b
2008-10-19 Fix the 1.4 branch compile again broken with r150557 when using with Zaptel ↵bweschke1-2/+9
and not DAHDI (closes issue #13740) reported by: jmls patch by: bweschke git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@151100 f38db490-d61c-443f-a65b-d21fe96a405b
2008-10-18 Using the GetVar handler in AMI is potentially dangerous (insta-crash [tm]) ↵bweschke1-2/+9
when you use a dialplan function that requires a channel and then you don't provide one or provide an invalid one in the Channel: parameter. We'll handle this situation exactly the same way it was handled in pbx.c back on r61766. We'll create a bogus channel for the function call and destroy it when we're done. If we have trouble allocating the bogus channel then we're not going to try executing the function call at all and run the risk of crashing. (closes issue #13715) reported by: makoto patch by: bweschke git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@150816 f38db490-d61c-443f-a65b-d21fe96a405b
2008-10-17Correctly allow chan_dahdi to compile against older versions of Zaptel.qwell2-2/+2
Don't always define HAVE_ZAPTEL_CHANALARMS (since we check if it's defined..) Minor cleanup to make things clear. (closes issue #13726) Reported by: tzafrir Patches: dahdi_def.diff uploaded by tzafrir (license 46) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@150557 f38db490-d61c-443f-a65b-d21fe96a405b
2008-10-16Reverting changes from commits 150298 and 150301 sincemmichelson1-4/+1
I was mistakenly under the assumption that dialplan functions *always* required that a channel be present. I need to go home earlier, I think :) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@150304 f38db490-d61c-443f-a65b-d21fe96a405b
2008-10-16And don't forget to return on the error conditionmmichelson1-0/+1
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@150301 f38db490-d61c-443f-a65b-d21fe96a405b
2008-10-16Don't try to call a dialplan function's read callback frommmichelson1-1/+3
the manager's GetVar handler if an invalid channel has been specified. Several dialplan functions, including CHANNEL and SIP_HEADER, do not check for NULL-ness of the channel being passed in. (closes issue #13715) Reported by: makoto git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@150298 f38db490-d61c-443f-a65b-d21fe96a405b
2008-10-14Add a tolerance period for sync-triggered audiohooksmmichelson1-1/+8
so that if packetization of audio is close (but not equal) we don't end up flushing the audiohooks over small inconsistencies in synchronization. Related to issue #13005, and solves the issue for most people who were experiencing the problem. However, a small number of people are still experiencing the problem on long calls, so I am not closing the issue yet git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@149204 f38db490-d61c-443f-a65b-d21fe96a405b
2008-10-14it would be nice if this message printing code had actually been tested ↵kpfleming1-1/+2
before it was committed... git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@148611 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-30channels/chan_misdn.crmudgett1-10/+10
channels/misdn/isdn_lib.c * Miscellaneous other fixes from trunk to make merging easier later. ........ r145200 | rmudgett | 2008-09-30 16:00:54 -0500 (Tue, 30 Sep 2008) | 7 lines * Miscellaneous formatting changes to make v1.4 and trunk more merge compatible in the mISDN area. channels/chan_misdn.c * Eliminated redundant code in cb_events() EVENT_SETUP ........ r144257 | crichter | 2008-09-24 03:42:55 -0500 (Wed, 24 Sep 2008) | 9 lines improved helptext of misdn_set_opt. ........ r142181 | rmudgett | 2008-09-09 12:30:52 -0500 (Tue, 09 Sep 2008) | 1 line Cleaned up comment ........ r138738 | rmudgett | 2008-08-18 16:07:28 -0500 (Mon, 18 Aug 2008) | 30 lines channels/chan_misdn.c * Made bearer2str() use allowed_bearers_array[] * Made use the causes.h defines instead of hardcoded numbers. * Made use Asterisk presentation indicator values if either of the mISDN presentation or screen options are negative. * Updated the misdn_set_opt application option descriptions. * Renamed the awkward Caller ID presentation misdn_set_opt application option value not_screened to restricted. Deprecated the not_screened option value. channels/misdn/isdn_lib.c * Made use the causes.h defines instead of hardcoded numbers. * Fixed some spelling errors and typos. * Added all defined facility code strings to fac2str(). channels/misdn/isdn_lib.h * Added doxygen comments to struct misdn_bchannel. channels/misdn/isdn_lib_intern.h * Added doxygen comments to struct misdn_stack. channels/misdn_config.c configs/misdn.conf.sample * Updated the mISDN presentation and screen parameter descriptions. doc/misdn.txt (doc/tex/misdn.tex) * Updated the misdn_set_opt application option descriptions. * Fixed some spelling errors and typos. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@145293 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-27fix some minor issues with rev 144924kpfleming1-2/+2
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@144925 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-27improve header inclusion process in a few small ways:kpfleming5-5/+6
- it is no longer necessary to forcibly include asterisk/autoconfig.h; every module already includes asterisk.h as its first header (even before system headers), which serves the same purpose - astmm.h is now included by asterisk.h when needed, instead of being forced by the Makefile; this means external modules will build properly against installed headers with MALLOC_DEBUG enabled - simplify the usage of some of these headers in the AEL-related stuff in the utils directory git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@144924 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-26This patch was applied to 1.4 but it completelymmichelson1-2/+0
does not apply since the "found" pointer is not passed in to this function. If this is going to be backported, it needs to be done differently or a deeper backport needs to be done. Edit: This commit reverts commit number 144677. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@144758 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-26(closes issue #13563)murf1-0/+2
Reported by: mnicholson Patches: found1.diff uploaded by mnicholson (license 96) This patch was mainly meant to apply to trunk and 1.6.x, but I'm applying it to 1.4 also, which should be a perfectly harmless fix to the vast majority of users who are not using external switches, but the few who might be affected will not have to go to the pain of filing a bug report. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@144677 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-17Allow for "G.729" if offered in an SDP even thoughmmichelson1-0/+1
it is not RFC 3551 compliant. Some Cisco switches will send this in an SDP, and it doesn't hurt to be able to accept this. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@143337 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-12Don't return a free'd pointer, when a file cannot be opened.tilghman1-0/+1
(closes issue #13462) Reported by: wackysalut git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@142740 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-12Tested by: sergee, murf, chris-mac, andrew, KNKmurf1-2/+2
This is a "second attempt" to restore the previous "endbeforeh" behavior in 1.4 and up. In order to capture information concerning all the legs of transfers in all their infinite combinations, I was forced to this particular solution by a chain of logical necessities, the first being that I was not allowed to rewrite the CDR mechanism from the ground up! This change basically leaves the original machinery alone, which allows IVR and local channel type situations to generate CDR's as normal, but a channel flag can be set to suppress the normal running of the h exten. That flag would be set by the code that runs the h exten from the ast_bridge_call routine, to prevent the h exten from being run twice. Also, a flag in the ast_bridge_config struct passed into ast_bridge_call can be used to suppress the running of the h exten in that routine. This would happen, for instance, if you use the 'g' option in the Dial app. Running this routine 'early' allows not only the CDR() func to be used in the h extension for reading CDR variables, but also allows them to be modified before the CDR is posted to the backends. While I dearly hope that this patch overcomes all problems, and introduces no new problems, reality suggests that surely someone will have problems. In this case, please re-open 13251 (or 13289), and we'll see if we can't fix any remaining issues. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@142675 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-10It is a normal situation that a task gets put in the scheduler that should runrussell1-5/+3
as soon as possible. Accept "0" as an acceptable time to run, and also treat negative as "run now", and don't print a debug message about it. (inspired by a message asking about the "request to schedule in the past" debug message on the -dev list) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@142354 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-08When doing an async goto, detect if the channel is already in the middle of arussell1-9/+15
masquerade. This can happen when chan_local is trying to optimize itself out. If this happens, fail the async goto instead of bursting into flames. (closes issue #13435) Reported by: geoff2010 git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@141806 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-05A small change to prevent double-posting of CDR's; thanks to Daniel Ferrer ↵murf1-1/+1
for bringing it to our attention git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@141156 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-03Don't freak out if the poll emulation receives NULL for the pollfds arrayrussell1-5/+5
(closes issue #13307) Reported by: jcovert git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@140816 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-02I am turning the warnings generated in ast_cdr_free and post_cdr into ↵murf1-10/+10
verbose level 2 messages. Really, they matter little to end users. You either get the CDR's you wanted, or you don't, and it is a bug. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@140747 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-02After reconsidering, with respect to 13409, ast_cdr_detach should be OK, ↵murf1-1/+1
better in fact, than ast_cdr_free, which generates lots of useless warnings that will undoubtably generate complaints. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@140690 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-02(closes issue #13409)murf2-0/+7
Reported by: tomaso Patches: asterisk-1.6.0-rc2-cdrmemleak.patch uploaded by tomaso (license 564) I basically spent the day, verifying that this patch solves the problem, and doesn't hurt in non-problem cases. Why valgrind did not plainly reveal this leak absolutely mystifies and stuns me. Many, many thanks to tomaso for finding and providing the fix. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@140670 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-29After working on the ao2_containers branch, I noticedmmichelson1-1/+1
something a bit strange. In all cases where we provide a callback function to ao2_container_alloc, the callback function would only return 0 or CMP_MATCH. After inspecting the ao2_callback() code carefully, I found that if you're only looking for one specific item, then you should return CMP_MATCH | CMP_STOP. Otherwise, astobj2 will continue traversing the current bucket until the end searching for more matches. In cases like chan_iax2 where in 1.4, all the peers are shoved into a single bucket, this makes for potentially terrible performance since the entire bucket will be traversed even if the peer is one of the first ones come across in the bucket. All the changes I have made were for cases where the callback function defined was passed to ao2_container_alloc so that calls to ao2_find could find a unique instance of whatever object was being stored in the container. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@140488 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-25Fix a typo I made. Lesson learned, apply the patch if one exists.jpeeler1-1/+1
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@139927 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-25Fix the logic in config_text_file_save so that if anmmichelson1-3/+5
UpdateConfig manager action is issued and the file specified in DstFileName does not yet exist, an error is not returned. (closes issue #13341) Reported by: vadim Patches: 13341.patch uploaded by putnopvut (license 60) (with small modification from seanbright) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@139769 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-25This patch reverts the changes made via 139347, and 139635, as usersmurf1-4/+0
are seeing adverse difference. I will un-close 13251. Back to the drawing board/ concept/ beginning/ whatever! git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@139764 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-22(closes issue #13359)jpeeler1-1/+1
Reported by: Laureano Patches: originate_channel_check.patch uploaded by Laureano (license 265) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@139621 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-22Remove show_frame_stats_deprecated since it is notmmichelson1-17/+0
used anywhere and causes build errors if building under dev-mode with TRACE_FRAMES selected in menuselect. (closes issue #13362) Reported by: snuffy git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@139521 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-21(closes issue #13251)murf1-0/+4
Reported by: sergee Tested by: murf THis is a bold move for a static release fix, but I wouldn't have made it if I didn't feel confident (at least a *bit* confident) that it wouldn't mess everyone up. The reasoning goes something like this: 1. We simply cannot do anything with CDR's at the current point (in pbx.c, after the __ast_pbx_run loop). It's way too late to have any affect on the CDRs. The CDR is already posted and gone, and the remnants have been cleared. 2. I was very much afraid that moving the running of the 'h' extension down into the bridge code (where it would be now practical to do it), would result in a lot more calls to the 'h' exten, so I implemented it as another exten under another name, but found, to my pleasant surprise, that there was a 1:1 correspondence to the running of the 'h' exten in the pbx_run loop, and the new spot at the end of the bridge. So, I ifdef'd out the current 'h' loop, and moved it into the bridge code. The only difference I can see is the stuff about the AST_PBX_KEEPALIVE, and hopefully, if this is still an important decision point, I can replicate it if there are complaints. To be perfectly honest, the KEEPALIVE situation is not totally clear to me, and how it relates to a post-bridge situation is less clear. I suspect the users will point out everything in total clarity if this steps on anyone's toes! 3. I temporarily swap the bridge_cdr into the channel before running the 'h' exten, which makes it possible for users to edit the cdr before it goes out the door. And, of course, with the endbeforehexten config var set, the users can also get at the billsec/duration vals. After the h exten finishes, the cdr is swapped back and processing continues as normal. Please, all who deal with CDR's, please test this version of Asterisk, and file bug reports as appropriate! git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@139347 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-20(closes issue #13263)murf1-4/+7
Reported by: brainy Tested by: murf The specialized reset routine is tromping on the flags field of the CDR. I made a change to not reset the DISABLED bit. This should get rid of this problem. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@139074 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-15Ensure that when a hangup occurs in autoservice, that a hangup frame getsrussell1-9/+5
properly deferred to be read from the channel owner when it gets taken out of autoservice. (closes issue #12874) Reported by: dimas Patches: v1-12874.patch uploaded by dimas (license 88) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@138027 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-06Since adding the AST_CONTROL_SRCUPDATE frame type,mmichelson1-1/+3
there are places where ast_rtp_new_source may be called where the tech_pvt of a channel may not yet have an rtp structure allocated. This caused a crash in chan_skinny, which was fixed earlier, but now the same crash has been reported against chan_h323 as well. It seems that the best solution is to modify ast_rtp_new_source to not attempt to set the marker bit if the rtp structure passed in is NULL. This change to ast_rtp_new_source also allows the removal of what is now a redundant pointer check from chan_skinny. (closes issue #13247) Reported by: pj git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@136062 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-06Fix a longstanding bug in channel walking logic, and fix the explanation totilghman1-10/+13
make sense. (Closes issue #13124) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@135949 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-06Since powerof() can return an error condition, it's foolhardy not to detect andtilghman1-1/+14
deal with that condition. (Related to issue #13240) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@135915 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-06Merging the issue11259 branch.mmichelson3-9/+55
The purpose of this branch was to take into account "burps" which could cause jitterbuffers to misbehave. One such example is if the L option to Dial() were used to inject audio into a bridged conversation at regular intervals. Since the audio here was not passed through the jitterbuffer, it would cause a gap in the jitterbuffer's timestamps which would cause a frames to be dropped for a brief period. Now ast_generic_bridge will empty and reset the jitterbuffer each time it is called. This causes injected audio to be handled properly. ast_generic_bridge also will empty and reset the jitterbuffer if it receives an AST_CONTROL_SRCUPDATE frame since the change in audio source could negatively affect the jitterbuffer. All of this was made possible by adding a new public API call to the abstract_jb called ast_jb_empty_and_reset. (closes issue #11259) Reported by: plack Tested by: putnopvut git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@135841 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-05(closes issue #12982)murf2-1/+11
Reported by: bcnit Tested by: murf I discovered that also, in the previous bug fixes and changes, the cdr.conf 'unanswered' option is not being obeyed, so I fixed this. And, yes, there are two 'answer' times involved in this scenario, and I would agree with you, that the first answer time is the time that should appear in the CDR. (the second 'answer' time is the time that the bridge was begun). I made the necessary adjustments, recording the first answer time into the peer cdr, and then using that to override the bridge cdr's value. To get the 'unanswered' CDRs to appear, I purposely output them, using the dial cmd to mark them as DIALED (with a new flag), and outputting them if they bear that flag, and you are in the right mode. I also corrected one small mention of the Zap device to equally consider the dahdi device. I heavily tested 10-sec-wait macros in dial, and without the macro call; I tested hangups while the macro was running vs. letting the macro complete and the bridge form. Looks OK. Removed all the instrumentation and debug. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@135799 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-05Use PATH_MAX for filenamesseanbright1-2/+2
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@135597 f38db490-d61c-443f-a65b-d21fe96a405b
2008-07-31accomodate users who seem to lack a sense of humor :-)kpfleming1-3/+3
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@134983 f38db490-d61c-443f-a65b-d21fe96a405b
2008-07-31Specify codecs in callfiles and manager, to allow video calls to be set uptilghman1-4/+12
from callfiles and AMI. (closes issue #9531) Reported by: Geisj Patches: 20080715__bug9531__1.4.diff.txt uploaded by Corydon76 (license 14) 20080715__bug9531__1.6.0.diff.txt uploaded by Corydon76 (license 14) Tested by: Corydon76 git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@134976 f38db490-d61c-443f-a65b-d21fe96a405b
2008-07-30Oops, wrong definetilghman1-2/+2
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@134704 f38db490-d61c-443f-a65b-d21fe96a405b
2008-07-30Fix a spot where a function could return without bringingmmichelson1-1/+5
a channel out of autoservice. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@134475 f38db490-d61c-443f-a65b-d21fe96a405b
2008-07-26Add the licensing section to the docs in 1.4, as well, so that we can work onrussell1-8/+1
having an accurate list for each version of Asterisk that is supported git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@133980 f38db490-d61c-443f-a65b-d21fe96a405b
2008-07-25Fix some errant device states by making the devicestate API more strict intilghman2-28/+14
terms of the device argument (only without the unique identifier appended). (closes issue #12771) Reported by: davidw Patches: 20080717__bug12771.diff.txt uploaded by Corydon76 (license 14) Tested by: davidw, jvandal, murf git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@133649 f38db490-d61c-443f-a65b-d21fe96a405b
2008-07-23revert an optimization that broke ABI... thanks russell!kpfleming1-26/+0
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@133237 f38db490-d61c-443f-a65b-d21fe96a405b
2008-07-23make some more changes to the dahdi/zap channel name support stuff to ensure ↵kpfleming1-10/+12
allthe globals are 'const', and clean up mmichelson's changes to app_chanspy to simplify the code git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@133226 f38db490-d61c-443f-a65b-d21fe96a405b
2008-07-23As suggested by seanbright, the PSEUDO_CHAN_LEN in mmichelson1-0/+6
app_chanspy should be set at load time, not at compile time, since dahdi_chan_name is determined at load time. Also changed the next_unique_id_to_use to have the static qualifier. Also added the dahdi_chan_name_len variable so that strlen(dahdi_chan_name) isn't necessary. Thanks to seanbright for the suggestion. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@133169 f38db490-d61c-443f-a65b-d21fe96a405b
2008-07-23minor optimization for stringfields: when a field is being set to a larger ↵kpfleming1-2/+28
value than it currently contains and it happens to be the most recent field allocated from the currentl pool, it is possible to 'grow' it without having to waste the space it is currently using (or potentially even allocate a new pool) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@132872 f38db490-d61c-443f-a65b-d21fe96a405b